本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习内容,尽在聚客AI学院。
一. 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学院。