快速入门

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 中创建智能体的推荐方法是?
A. initialize_agent
B. create_agent
C. AgentExecutor
D. LLMSingleActionAgent
选择题 2. 以下哪个包是 LangChain 1.0 的核心入口包?
A. langchain-core
B. langchain
C. langchain-community
D. langchain-classic
代码填空 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)