1.Tool(工具)
定义与功能
单一功能模块: Tool是完成待定任务的独立工具,每个工具专注于一项具体操作(如搜索,计算,api调用等)。
无决策能力:工具本身不决定何时被调用,仅在被触发时执行预设操作。
输入输出明确:每个工具需要定义输入参数和输出格式,例如:
搜索工具:输入是查询字符串,输出是搜索结果。
计算工具:输入是数学表达式,输出是计算结果。
2.Agent(智能体)
定义与功能
任务的协调者:Agent是自主决策的智能体,负责解析用户意图,规划任务步骤,调用工具并整合结果。
决策逻辑:基于LLM的推理能力(如ReAct框架),动态决定使用哪些工具及执行顺序。
上下文管理:维护任务状态,处理工具返回的中间结果,最终生成用户友好的响应。
工作流程
1.理解意图:解析用户输入的深层需求(如“比较python和java的优缺点” 需多步调研)。
2.规划步骤:决定调用工具的顺序(如先搜索python特性,再搜索java特性)
3.执行工具:调用Tool获取数据,处理可能的错误或重试。
4.综合响应:将多个工具的结果整合为自然语言回答。
Tool 和Agent
通过这种分工,LangChain实现了模块化与智能体的结合: Tool提供基础能力,Agent赋予系统自主决策的灵活性,两者协同完成从简单查询到复杂的问题求解的多样化任务。
import os from langchain.agents import create_react_agent from langchain.agents.chat.prompt import HUMAN_MESSAGE from langchain_openai import ChatOpenAI from openai import max_retries from tavily import TavilyClient llm = ChatOpenAI( model= 'deepseek-chat', temperature=0, api_key='sk-xxx', base_url='https://api.deepseek.com' ) # Tavily 工具 os.environ["TAVILY_API_KEY"] = "TVLY-XXXX" search_tool = TavilySearchResults(max_retries=3) # res = search_tool.invoke("2025年5月2日,北京市的天气预报怎么样?") # # print(res) # 创建一个agent,整合工具 tools = [search_tool] agent = create_react_agent(llm,tools) resp = agent.invoke({'message':[HUMAN_MESSAGE(content='湖南的省会是哪个城市?')]}) print(resp)