LangChain入门(六)Agent
尽管大语言模型非常强大,但也有一定的局限性,比如不能回答实时信息。LangChain中的代理(Agent)的作用就是根据用户需求,访问对应的第三方工具(如使用搜索引擎或数据库)来达成用户的目标任务。
关键组件
Agent(代理)
代理负责应用程序的逻辑和执行,接受用户输入,并返回AgentAction或AgentFinish。
Tools(工具)
工具是代理调用的函数,可以执行特定的功能,如天气查询、百度搜索、高德地图等。
Toolkits(工具包)
代理可以访问工具集合,是实现特定目标所需的一组工具。例如:代码与SQL数据库交互时,可能需要一个工具来执行查询,另一个工具检索表结构。通常一个工具包中有3~5个工具。
AgentExecutor(代理执行器)
负责迭代运行代理,直到满足停止条件。
执行流程
案例
支持实时天气查询
下面是一个Agent的案例,主要通过工具来查询实时天气。
需要安装langgraph
pip install langgraph
案例中用Tavily,Tavily是一个为大型语言模型(LLMs)和检索增强生成(RAG)优化的搜索引擎,旨在提供高效、快速且持久的搜索结果需要到Tavily官网,注册账号,登录后复制key,tavily提供一些免费的接口调用次数。
from langchain.chat_models import init_chat_model
from langchain_community.tools.tavily_search import TavilySearchResults
from langgraph.prebuilt import chat_agent_executor
from langchain_core.messages import SystemMessage, HumanMessage
import os# 这里只是示意,工程中建议使用getpass.getpass()来获取API密钥
api_key = os.environ.get("DEEPSEEK_API_KEY");
os.environ["TAVILY_API_KEY"]="XXXXXXXXXXXXXXXXxxxxxx"api_base = "https://api.deepseek.com/"#1.定义模型
model = init_chat_model(model="deepseek-chat",api_key=api_key,api_base=api_base,temperature=0.8,max_tokens=1024,model_provider="deepseek",)#1.定义工具
search = TavilySearchResults(max_results=2) #max results 返回两个结果agent_executor=chat_agent_executor.create_tool_calling_executor(model=model,tools=[search]);resp2=agent_executor.invoke({'messages':[HumanMessage(content='北京今天的天气怎么样?')]
});print(resp2['messages'][2].content);