一. LangChain Agent概述
1.1 什么是LangChain Agent?
LangChain Agent 是一个通过动态决策调用工具链(Tools)完成复杂任务的智能体框架。其核心价值在于:
- 灵活路由:根据输入自动选择执行路径(如调用API、执行代码)工具集成:无缝接入300+预置工具(搜索引擎、计算器、数据库等)记忆管理:维护对话历史与长期知识存储
类比解释:
Agent如同一个经验丰富的项目经理:
- 输入需求 → 分解任务(Planner)选择工具 → 分配资源(Router)执行操作 → 协调团队(Executor)总结输出 → 交付成果(Output)
二. LangChain Agent核心组件
2.1 Agent核心架构图
输入 → Agent(决策逻辑) → Tools(工具集) → Executor(执行引擎) → 输出模块交互流程:
Agent 解析用户输入,生成决策路径
Tools 提供具体能力(如搜索、计算)
Executor 管理工具调用顺序与异常处理
三. Agent组件详解
3.1 Agent类型与选择策略
代码示例:创建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("昨天的会议纪要中提到的项目预算是多少?")四. Tools开发与集成
4.1 预制工具(Toolkits)使用
常用预制工具集:
- 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年获得诺贝尔物理学奖4.2 自定义工具开发
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 Templates设计
5.1 模板结构解析
标准模板要素:
工具描述 → 任务指令 → 格式约束 → 示例演示代码示例:自定义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 )六. Agent Executor优化
6.1 执行流程控制
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()]} )6.2 性能优化技巧
- 缓存机制:对相同输入复用结果
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 )七. 总结
7.1 核心优势总结
灵活扩展:通过工具链突破模型能力边界
可解释性:决策过程可追溯(verbose=True查看详细步骤)
生产就绪:支持异常处理、性能监控等工业级特性
注:本文代码基于LangChain 0.0.340版本,运行前需安装:
pip install langchain openai wikipedia transformers更多AI大模型应用开发学习内容,尽在聚客AI学院。
