AI Agent 完全指南:从 LangChain 到自主 Agent 的实现路径

小飞兽 AI应用开发 8 次阅读 2026-07-29

AI Agent(人工智能智能体)是能够感知环境、制定计划、调用工具、执行动作并自我反思的 AI 系统。LangChain 提供了工具调用、记忆管理、Agent 循环控制等基础设施。

一、Agent 核心范式

# pip install langchain langchain-openai langchain-community

import os
os.environ['OPENAI_API_KEY'] = 'sk-...'

from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
from langchain import hub

@tool
def calculator(expression: str) -> str:
"计算数学表达式的值。"
try:
result = eval(expression, {'__builtins__': {}}, {})
return f'{expression} = {result}'
except Exception as e:
return f'计算错误: {e}'

@tool
def get_weather(city: str) -> str:
"获取指定城市的天气信息。"
weather_db = {'北京': '晴,25C', '上海': '多云,28C', '广州': '雷阵雨,31C', '深圳': '晴,32C'}
return weather_db.get(city, f'未知城市 {city}')

@tool
def search_web(query: str) -> str:
"搜索互联网获取最新信息。"
return f'搜索结果:{query} 的相关信息'

tools = [calculator, get_weather, search_web]

llm = ChatOpenAI(model='gpt-4o-mini', temperature=0)
prompt = hub.pull('hwchase17/react')
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, max_iterations=10)

result = agent_executor.invoke({'input': '计算 (15 + 27) * 3 的平方根,再查询北京现在的天气'})
print(result['output'])

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True)
agent_with_memory = create_react_agent(llm, tools, prompt)
agent_executor_with_memory = AgentExecutor(agent=agent_with_memory, tools=tools, memory=memory, verbose=True)

agent_executor_with_memory.invoke({'input': '我叫张三,请记住这个名字'})
result = agent_executor_with_memory.invoke({'input': '我叫什么名字?'})
print(result['output'])

from datetime import datetime

@tool
def get_current_time(format: str = '%Y-%m-%d %H:%M:%S') -> str:
"返回当前日期和时间。"
return datetime.now().strftime(format)

all_tools = tools + [get_current_time]
agent_v2 = create_react_agent(llm, all_tools, prompt)
agent_executor_v2 = AgentExecutor(agent=agent_v2, tools=all_tools, verbose=True)
result = agent_executor_v2.invoke({'input': '现在是什么时间?'})
print(result['output'])

二、常见 Agent 架构

# ReAct Agent    :交替推理 + 行动,适合工具调用类任务

Plan-and-Execute:先规划所有步骤,再逐个执行


Baby AGI :目标分解 + 优先级排序 + 记忆 + 执行循环


AutoGPT :自主目标分解 + 递归子任务执行


Multi-Agent :多个专业 Agent 协作</code></pre><h2>三、常见问题</h2><p><strong>Q1:Agent 进入无限循环怎么办?</strong><br/>设置 <code>max_iterations</code> 限制最大步数(通常 5~15 步)。</p><p><strong>Q2:如何让 Agent 使用指定的工具而非猜测?</strong><br/>工具描述要精确、具体,说明输入格式和适用范围。在 Prompt 中强调约束。</p><p><strong>Q3:多 Agent 协作如何设计?</strong><br/>定义清晰的 Agent 角色和职责。用共享消息队列或 <code>langgraph</code> 的 StateGraph 管理。</p><h2>四、延伸阅读</h2><ul><li>LangChain Agents 文档:<a href="https://python.langchain.com/docs/concepts/agents/">https://python.langchain.com/docs/concepts/agents/</a></li><li>LangGraph:<a href="https://langchain-ai.github.io/langgraph/">https://langchain-ai.github.io/langgraph/</a></li><li>AutoGPT:<a href="https://github.com/Significant-Gravitas/AutoGPT">https://github.com/Significant-Gravitas/AutoGPT</a></li></ul>