使用 LangChain 构建你的第一个 AI Agent
·
使用 LangChain 构建你的第一个 AI Agent
什么是 LangChain?
LangChain 是目前最流行的 AI Agent 开发框架之一。它提供了一套完整的工具链,帮助开发者快速构建基于大语言模型的应用程序。
LangChain 的核心理念:将 LLM 与外部工具、数据源、记忆系统连接起来,构建真正有用的 AI 应用。
环境准备
# 安装 LangChain
pip install langchain
pip install langchain-openai
# 设置 API 密钥
export OPENAI_API_KEY="your-api-key"
构建第一个 Agent
步骤 1:定义工具
from langchain.tools import BaseTool
from langchain.agents import Tool
# 自定义搜索工具
class SearchTool(BaseTool):
name = "search"
description = "用于搜索网络信息,输入应该是搜索关键词"
def _run(self, query: str):
# 这里接入你的搜索 API
return f"搜索结果:{query} 的相关信息..."
async def _arun(self, query: str):
raise NotImplementedError("不支持异步")
# 数学计算工具
from langchain import LLMMathChain
math_chain = LLMMathChain(llm=llm)
tools = [
Tool(
name="Search",
func=SearchTool().run,
description="搜索网络信息"
),
Tool(
name="Calculator",
func=math_chain.run,
description="进行数学计算"
)
]
步骤 2:初始化 Agent
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(temperature=0)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 运行 Agent
result = agent.run("2024年最新的Python版本是多少?它的平方根是多少?")
print(result)
步骤 3:查看执行过程
> Entering new AgentExecutor chain...
Thought: 我需要查询2024年最新的Python版本
Action: Search
Action Input: 2024年最新Python版本
Observation: Python 3.12 是2024年最新的稳定版本
Thought: 现在我需要计算3.12的平方根
Action: Calculator
Action Input: sqrt(3.12)
Observation: 1.766352...
Final Answer: 2024年最新Python版本是3.12,其平方根约为1.766
> Finished chain.
Agent 类型详解
| Agent 类型 | 适用场景 | 特点 |
|---|---|---|
| ZERO_SHOT_REACT | 通用场景 | 无需示例,直接推理 |
| CHAT_ZERO_SHOT_REACT | 对话场景 | 适合聊天模型 |
| STRUCTURED_CHAT | 复杂参数 | 支持多参数工具 |
| OPENAI_FUNCTIONS | OpenAI 模型 | 使用 Function Calling |
添加记忆功能
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
agent = initialize_agent(
tools,
llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True
)
# 现在 Agent 可以记住对话历史
agent.run("你好,我叫小明")
agent.run("我的名字是什么?") # 能正确回答"小明"
自定义工具的最佳实践
- 描述要清晰:让 LLM 知道什么时候使用该工具
- 输入要简单:避免复杂的参数结构
- 错误处理:返回友好的错误信息
- 超时控制:防止工具长时间无响应
# 好的工具描述示例
good_tool = Tool(
name="weather",
func=get_weather,
description="""
获取指定城市的天气信息。
输入格式:城市名称,如"北京"、"上海"。
返回:温度、天气状况、湿度等信息。
"""
)
总结
通过 LangChain,你可以在 30 分钟内构建一个功能完整的 AI Agent。关键是要:
- 选择合适的 Agent 类型
- 设计好用的工具
- 管理好对话记忆
下一步:学习 ReAct 模式,让 Agent 更智能地推理。
更多推荐
所有评论(0)