使用 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("我的名字是什么?")  # 能正确回答"小明"

自定义工具的最佳实践

  1. 描述要清晰:让 LLM 知道什么时候使用该工具
  2. 输入要简单:避免复杂的参数结构
  3. 错误处理:返回友好的错误信息
  4. 超时控制:防止工具长时间无响应
# 好的工具描述示例
good_tool = Tool(
    name="weather",
    func=get_weather,
    description="""
    获取指定城市的天气信息。
    输入格式:城市名称,如"北京"、"上海"。
    返回:温度、天气状况、湿度等信息。
    """
)

总结

通过 LangChain,你可以在 30 分钟内构建一个功能完整的 AI Agent。关键是要:

  • 选择合适的 Agent 类型
  • 设计好用的工具
  • 管理好对话记忆

下一步:学习 ReAct 模式,让 Agent 更智能地推理。

更多推荐