快速入门
10 分钟上手 LangChain 1.0
什么是 LangChain?
LangChain 是一个开源框架,用于快速构建由大语言模型(LLM)驱动的应用程序。它提供:
- 预构建架构:智能体和应用的标准组件
- 模型集成:统一接口连接 OpenAI、Anthropic、Google 等模型
- 工具生态:丰富的外部服务集成
- 生产就绪:被 Uber、LinkedIn、Klarna 等大公司验证
安装配置
基础安装
bash
# 核心包
pip install langchain
# OpenAI 集成
pip install langchain-openai
# Anthropic 集成
pip install langchain-anthropic
# Google 集成
pip install langchain-google
LangChain 1.0 重新设计了包架构。核心功能在
langchain 包中,核心接口在 langchain-core 中。旧代码被移至 langchain-classic。
LangChain 1.0 包架构
graph TD
A[langchain] --> B[主入口包]
A --> C[智能体实现]
A --> D[预构建组件]
E[langchain-core] --> F[核心接口]
E --> G[Runnable抽象]
E --> H[跨包基础类型]
I[langchain-classic] --> J[遗留代码]
I --> K[向后兼容]
L[langchain-openai] --> M[OpenAI集成]
N[langchain-anthropic] --> O[Anthropic集成]
P[langchain-google] --> Q[Google集成]
| 包名 | 用途 | 必需 |
|---|---|---|
langchain |
主入口,包含所有 LLM 应用实现 | ✓ 必需 |
langchain-core |
核心接口和抽象 | ✓ 必需(自动安装) |
langchain-openai |
OpenAI 模型集成 | 可选 |
langchain-anthropic |
Anthropic 模型集成 | 可选 |
langchain-classic |
遗留的 0.1.x 版本代码 | 可选(迁移时使用) |
第一个智能体
LangChain 1.0 引入新的 create_agent 方法,简化智能体创建:
python
import os
from langchain import ChatOpenAI
from langchain.agents import create_tool_calling_agent, Tool
from langchain_core.tools import tool
# 1. 设置 API Key
os.environ["OPENAI_API_KEY"] = "your-api-key"
# 2. 定义工具
@tool
def get_weather(location: str) -> str:
"""获取指定位置的天气信息"""
return f"{location}今天天气晴朗,温度 25°C"
@tool
def calculate(expression: str) -> str:
"""计算数学表达式"""
try:
result = eval(expression)
return f"结果: {result}"
except:
return "计算错误"
# 3. 创建模型
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 4. 创建智能体
tools = [get_weather, calculate]
agent = create_tool_calling_agent(
llm,
tools,
system_prompt="你是一个有帮助的助手,可以使用工具回答问题。"
)
# 5. 运行智能体
response = agent.invoke({
"messages": [
{"role": "user", "content": "北京今天的天气怎么样?"}
]
})
print(response["messages"][-1].content)
create_tool_calling_agent 是 LangChain 1.0 推荐的创建智能体的标准方式,它会自动为模型启用工具调用功能。
智能体执行流程
sequenceDiagram
participant U as 用户
participant A as Agent
participant LLM as LLM
participant T as 工具
U->>A: 发送消息
A->>LLM: 调用模型(带工具定义)
LLM->>A: 返回工具调用请求
A->>T: 执行工具
T->>A: 返回工具结果
A->>LLM: 将结果传回模型
LLM->>A: 生成最终回复
A->>U: 返回响应
v1.0 主要变化
| 方面 | v0.1.x | v1.0 |
|---|---|---|
| 智能体创建 | initialize_agent |
create_agent / create_tool_calling_agent |
| 链定义 | LLMChain |
| 语法 (LCEL) |
| 模型导入 | langchain.llms |
langchain_openai 等 |
| 工具定义 | Tool.from_function |
@tool 装饰器 |
| 遗留代码 | 混在主包中 | 移至 langchain-classic |
基础概念速览
🤖
Models
LLM 和 ChatModel 统一接口
💬
Prompts
提示模板和输出解析
⛓️
Chains
用 LCEL 编排工作流
🎯
Agents
自主决策的智能体
🔧
Tools
外部功能集成
🧠
Memory
对话状态管理
下一步
✏️ 练习题
选择题
1. LangChain 1.0 中创建智能体的推荐方法是?
选择题
2. 以下哪个包是 LangChain 1.0 的核心入口包?
代码填空
3. 补全以下代码,创建一个 OpenAI 模型实例
python
from langchain________ ChatOpenAI
llm = ChatOpenAI________="gpt-4o"
查看答案
from langchain import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
编程题
4. 创建一个简单的智能体,包含两个工具:获取当前时间和计算两个数的和
查看参考答案
python
from langchain import ChatOpenAI
from langchain.agents import create_tool_calling_agent
from langchain_core.tools import tool
from datetime import datetime
@tool
def get_current_time() -> str:
"""获取当前时间"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
@tool
def add_numbers(a: int, b: int) -> int:
"""计算两个数的和"""
return a + b
llm = ChatOpenAI(model="gpt-4o")
tools = [get_current_time, add_numbers]
agent = create_tool_calling_agent(
llm,
tools,
system_prompt="你是一个有帮助的助手。"
)
# 测试
response = agent.invoke({
"messages": [
{"role": "user", "content": "现在几点了?"}
]
})
print(response["messages"][-1].content)