LangChain Agent 是一个通过动态决策调用工具链(Tools)完成复杂任务的智能体框架。其核心价值在于:
灵活路由:根据输入自动选择执行路径(如调用API、执行代码)
工具集成:无缝接入300+预置工具(搜索引擎、计算器、数据库等)
记忆管理:维护对话历史与长期知识存储
类比解释:
Agent如同一个经验丰富的项目经理:
输入需求 → 分解任务(Planner)
选择工具 → 分配资源(Router)
执行操作 → 协调团队(Executor)
总结输出 → 交付成果(Output)
输入 → Agent(决策逻辑) → Tools(工具集) → Executor(执行引擎) → 输出
模块交互流程:
Agent 解析用户输入,生成决策路径
Tools 提供具体能力(如搜索、计算)
Executor 管理工具调用顺序与异常处理
代码示例:创建Conversational Agent
from langchain.agents import AgentType, initialize_agent from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory(memory_key="chat_history") agent = initialize_agent( tools, llm, agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION, memory=memory, verbose=True ) agent.run("昨天的会议纪要中提到的项目预算是多少?")
常用预制工具集:
csv_agent:处理CSV数据分析
python_repl:执行Python代码
requests:调用HTTP API
代码示例:调用维基百科工具
from langchain.agents import load_tools tools = load_tools(["wikipedia"]) agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION ) print(agent.run("爱因斯坦获得诺贝尔奖的年份是?")) # 输出: 爱因斯坦于1921年获得诺贝尔物理学奖
from langchain.tools import tool @tool def text_summarizer(text: str) -> str: """文本摘要工具,保留核心信息""" from transformers import pipeline summarizer = pipeline("summarization", model="facebook/bart-large-cnn") return summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text'] # 集成到Agent tools.append(text_summarizer)
标准模板要素:
工具描述 → 任务指令 → 格式约束 → 示例演示
代码示例:自定义Prompt模板
from langchain.agents import PromptTemplate CUSTOM_PROMPT = PromptTemplate( template=""" 你是一个资深{role},请用{style}风格完成以下任务: 任务:{input} 可用工具: {tools} 请按以下步骤执行: 1. 分析任务需求 2. 选择最合适的工具 3. 输出结果时使用{format}格式 示例: 用户:生成一篇量子计算综述 助手:我将使用Wikipedia工具搜索最新进展 → 找到3篇论文 → 总结核心观点 """, input_variables=["role", "style", "input", "tools", "format"] ) agent = initialize_agent( tools, llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, prompt=CUSTOM_PROMPT )
from langchain.agents import AgentExecutor executor = AgentExecutor( agent=agent, tools=tools, max_iterations=5, # 防止无限循环 early_stopping_method="generate", # 达到条件提前终止 handle_parsing_errors=True # 自动处理解析错误 ) result = executor.invoke( {"input": "计算圆的面积,半径为5cm"}, config={"callbacks": [ConsoleCallbackHandler()]} )
缓存机制:对相同输入复用结果
from langchain.cache import SQLiteCache import langchain langchain.llm_cache = SQLiteCache(database_path=".langchain.db")
并行执行:对独立工具调用启用多线程
executor = AgentExecutor( agent=agent, tools=tools, parallelize=True, num_workers=4 )
verbose=True
查看详细步骤)注:本文代码基于LangChain 0.0.340版本,运行前需安装:
pip install langchain openai wikipedia transformers
更多AI大模型应用开发学习内容,尽在聚客AI学院。