1. LangChain 概述
LangChain 是一个开源 Agent 框架,可以让开发者快速把大模型、工具调用和工作流组织在一起。它支持 Python 和 TypeScript,两种语言都能构建 Agent 应用。
- 官方文档:https://docs.langchain.com/
- 适合场景:工具调用、RAG、工作流编排、聊天应用、多 Agent 系统
- 这套课程使用 Python 版本进行演示
2. 环境准备
推荐使用 `uv` 管理虚拟环境和依赖。
```sh
uv venv source .venv/bin/activate
安装 LangChain
uv add langchain langchain-openai langchain-anthropic
如果你习惯 pip,也可以这样安装
pip install -U langchain langchain-openai langchain-anthropic ```
本课程示例使用智谱 API。你可以前往 https://bigmodel.cn/ 控制台获取 API Key,然后设置环境变量:
```sh export ZHIPU_API_KEY="你的智谱API密钥" ```
3. 创建最小 Agent
先创建一个最简单的 LLM 与工具集合。
```python import os from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langchain.agents import create_agent
llm = ChatOpenAI( temperature=0.6, model="glm-4.7", openai_api_key=os.getenv("ZHIPU_API_KEY"), openai_api_base="https://open.bigmodel.cn/api/paas/v4/", )
@tool def add(a: int, b: int) -> int: """计算两个数字的和""" return a + b
@tool def multiply(a: int, b: int) -> int: """计算两个数字的乘积""" return a * b
tools = [add, multiply] agent = create_agent(llm, tools) ```
这里最关键的点有两个:
- `@tool` 把普通 Python 函数变成 Agent 可调用的工具。
- docstring 会直接影响模型对工具用途的理解,不能省略。
4. 运行 Agent
```python if name == "main": print("=" * 50) print("LangChain Agent Demo - 使用智谱 GLM-4") print("=" * 50)
question = "用 add 工具计算 3+5,再用 multiply 工具把结果乘以 2"
result = agent.invoke({"messages": [{"role": "user", "content": question}]})
print("\n消息历史:")
for i, msg in enumerate(result["messages"], 1):
msg_type = type(msg).__name__
print(f"\n[{i}] {msg_type}:")
if msg_type == "HumanMessage":
print(f" 用户: {msg.content}")
elif msg_type == "AIMessage":
if msg.tool_calls:
print(" AI 决定调用工具:")
for tc in msg.tool_calls:
print(f" -> {tc['name']}({tc['args']})")
if msg.content:
print(f" AI: {msg.content}")
elif msg_type == "ToolMessage":
print(f" 工具 [{msg.name}] 返回: {msg.content}")
print("\n最终答案:", result["messages"][-1].content)
```
5. 这一课要理解什么
Agent 会自动完成这条链路:
- 理解用户要求先加法、再乘法
- 调用 `add(3, 5)`
- 调用 `multiply(8, 2)`
- 汇总结果,返回最终答案
到这里,你已经有了一个最小可运行的 LangChain Agent。