过去一周,我们构建了预定义每一步骤的AI程序。但如果事先不知道所有步骤,AI需要根据用户问题自主决定是搜索Google、查询数据库还是使用计算器呢?这就是AI从“链(Chains)”迈向“代理(Agents)”的关键。如果说链是一条固定的铁路轨道,那么代理就是一辆自动驾驶汽车,它有目的地(你的目标)和一套工具,并能自主决定最佳路线。
什么是AI Agent?
AI Agent是一个使用“推理循环(Reasoning Loop)”来完成任务的大型语言模型(LLM)。在官方文档中,这通常被称为“ReAct模式”(Reason + Act)。Agent不再仅仅提供答案,而是遵循以下循环:
- 思考(Thought):“用户想知道比特币的当前价格。我不知道,所以应该使用搜索工具。”
- 行动(Action):调用搜索工具。
- 观察(Observation):读取搜索结果。
- 最终响应(Final Response):将观察结果组合成一个有用的答案。
工具的力量
工具是AI的“双手”。一个工具本质上是一个LLM知道如何调用的Python函数。LangChain内置了数十种工具,你也可以创建自己的工具!
常见工具包括:
- Tavily/Google Search:用于获取实时信息。
- Wikipedia:用于获取一般知识。
- Python REPL:用于执行复杂的数学或数据分析。
- 自定义API:连接到你公司自己的数据。
构建你的第一个Agent(现代方式)
在现代LangChain中,我们使用一个专门的“Agent Executor”来管理循环。以下是设置的简要示例:
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain.agents import create_react_agent, AgentExecutor
from langchain import hub
# 1. 定义工具
tools = [TavilySearchResults(max_results=1)]
# 2. 从LangChain Hub获取“Prompt Template”
# 这个提示模板告诉AI如何使用工具
prompt = hub.pull("hwchase17/react")
# 3. 初始化大脑(LLM)
llm = ChatOpenAI(model="gpt-4o")
# 4. 构建Agent
agent = create_react_agent(llm, tools, prompt)
# 5. 创建执行器(运行循环的引擎)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 6. 运行它!
agent_executor.invoke({"input": "What is the current stock price of NVIDIA?"})
总结
本文介绍了:
- Agent:能够推理并自主决定路径的AI。
- 工具(Tools):如何让LLM访问外部世界。
- ReAct循环:AI在行动前如何思考。
- Agent Executor:管理整个过程的运行时。