1、代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# 加载所需的库
import os
# from langchain import hub
from langsmith import Client
from langchain_tavily import TavilySearch
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_openai import ChatOpenAI
from langchain_text_splitters import RecursiveCharacterTextSplitter
from dotenv import load_dotenv
# from langchain.tools.retriever import create_retriever_tool
from langchain_core.tools.retriever import create_retriever_tool
load_dotenv()
# 查询 Tavily 搜索 API 并返回 json 的工具
search = TavilySearch(tavily_api_key=os.getenv("TAVILY_API_KEY"))
# # # 执行查询
# res = search.invoke("目前市场上苹果手机16的售价是多少?")
# print(res)
# 创建索引器根据上述查询的结果
# 加载HTML内容为一个文档对象
loader = WebBaseLoader("https://news.qq.com/rain/a/20240920A07Y5Y00")
# # 读取文档
docs = loader.load()
# print(docs)
# 分割文档
documents = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200).split_documents(docs)
# 向量化
vector = FAISS.from_documents(documents, DashScopeEmbeddings(dashscope_api_key=os.getenv('DASHSCOPE_API_KEY')))
# 创建检索器
retriever = vector.as_retriever()
# print(retriever.invoke("目前市场上苹果手机16的售价是多少?"))
# 创建检索工具
retriever_tool = create_retriever_tool(
retriever,
"iPhone_price_search",
"当前工具用于查询苹果16手机的售价, 其他任何版本都不能使用此工具, 苹果17不能使用此工具",
)
tools = [search, retriever_tool]
# 初始化大模型
# 模型版本
#
llm = ChatOpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
model='qwen-max', temperature=0)
hub = Client()
prompt = hub.pull_prompt("hwchase17/openai-functions-agent")
# 打印Prompt
# print(prompt)
# from langchain.agents import create_openai_functions_agent
from langchain_classic.agents import create_openai_functions_agent
agent = create_openai_functions_agent(llm, tools, prompt)
from langchain_classic.agents import AgentExecutor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# print(agent_executor.invoke({'input':"目前市场上苹果手机16的售价是多少?"}))
print(agent_executor.invoke({'input':"目前市场上苹果17的售价是多少?"}))
# print(agent_executor.invoke({'input': "2024年美国总统谁选上了"}))
2、运行报错了,报错结果如下:
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Scripts\python.exe C:\Users\lenovo\PycharmProjects\PythonProject\rag\day05\03-langchain0.3版本agent构建方式.py
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_core\utils\pydantic.py:41: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
from pydantic.v1 import BaseModel as BaseModelV1
C:\Users\lenovo\PycharmProjects\PythonProject\rag\day05\03-langchain0.3版本agent构建方式.py:12: DeprecationWarning: `langchain-community` is being sunset and is no longer actively maintained. See https://github.com/langchain-ai/langchain-community/issues/674 for details and migration guidance toward standalone integration packages.
from langchain_community.document_loaders import WebBaseLoader
USER_AGENT environment variable not set, consider setting it to identify your requests.
Traceback (most recent call last):
File "C:\Users\lenovo\PycharmProjects\PythonProject\rag\day05\03-langchain0.3版本agent构建方式.py", line 66, in <module>
prompt = hub.pull_prompt("hwchase17/openai-functions-agent")
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langsmith\client.py", line 9445, in pull_prompt
prompt_object = self.pull_prompt_commit(
prompt_identifier,
...<2 lines>...
dangerously_pull_public_prompt=dangerously_pull_public_prompt,
)
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langsmith\client.py", line 9293, in pull_prompt_commit
_validate_public_prompt_pull(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
prompt_identifier,
^^^^^^^^^^^^^^^^^^
dangerously_pull_public_prompt=dangerously_pull_public_prompt,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langsmith\client.py", line 370, in _validate_public_prompt_pull
raise ValueError(
...<4 lines>...
)
ValueError: Pulling a public prompt by owner/name is disabled by default because prompts may contain untrusted serialized LangChain objects. If you trust this prompt, set `dangerously_pull_public_prompt=True` to acknowledge the risk.
Process finished with exit code 1
2227



被折叠的 条评论
为什么被折叠?



