AI Beginner Python

LangChain 快速入门

LLM 应用开发框架 LangChain 快速入门,从安装到构建你的第一个 AI Agent

llmai-agentsragopenaianthropicpython

什么是 LangChain?

LangChain 是一个开源的 Python 框架,用于构建基于 LLM 的应用。它提供:

  • 多提供商抽象 — 统一接口连接 OpenAI、Anthropic、Google 等,无需绑定单一供应商
  • 可组合链(Chains) — 使用管道操作符(|)将提示词、模型、解析器组合成流水线
  • Agent 架构 — 预置的 Agent 系统,支持工具调用,代码少于 10 行
  • 基于 LangGraph 构建 — 持久化执行、人机交互支持
  • 开发者生态 — LangSmith 提供追踪、调试和可观测性

安装

# 基础安装
pip install langchain

# 支持 OpenAI
pip install langchain langchain-openai

# 支持 Anthropic Claude
pip install langchain langchain-anthropic

要求:Python 3.10+,来自 LLM 提供商的 API Key。

将 API Key 设置为环境变量:

# OpenAI
export OPENAI_API_KEY="sk-..."

# 或 Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."

你的第一个 Chain

最简单的 LangChain 模式——将提示词模板通过管道连接到模型:

from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate

# 创建组件
model = ChatAnthropic(model="claude-sonnet-4-20250514")

prompt = ChatPromptTemplate.from_template(
    "Translate this text to {language}: {text}"
)

# 使用管道操作符组合成 chain
chain = prompt | model

# 运行 chain
result = chain.invoke({
    "language": "Spanish",
    "text": "Hello, how are you?"
})

print(result.content)
# → "Hola, ¿cómo estás?"

关键点| 操作符是 LangChain 组合组件的核心模式。

构建简单聊天机器人

from langchain_anthropic import ChatAnthropic
from langchain_core.messages import HumanMessage, SystemMessage

model = ChatAnthropic(model="claude-sonnet-4-20250514")

messages = [
    SystemMessage(content="You are a helpful coding assistant."),
    HumanMessage(content="How do I read a JSON file in Python?")
]

response = model.invoke(messages)
print(response.content)

要保持对话历史,只需将消息追加到列表:

from langchain_core.messages import AIMessage

# 追加 AI 响应
messages.append(AIMessage(content=response.content))

# 添加后续问题
messages.append(HumanMessage(content="Can you show me error handling?"))

# 模型现在有完整对话上下文
response = model.invoke(messages)

创建带工具的 Agent

Agent 可以调用函数(工具)与外部系统交互:

from langchain import create_agent
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool

@tool
def get_weather(location: str) -> str:
    """Get the current weather for a location."""
    # 生产环境调用真实天气 API
    return f"The weather in {location} is 22°C and sunny."

@tool
def calculate(expression: str) -> str:
    """Evaluate a math expression."""
    return str(eval(expression))

model = ChatAnthropic(model="claude-sonnet-4-20250514")

agent = create_agent(
    tools=[get_weather, calculate],
    model=model,
    system_prompt="You are a helpful assistant with access to weather data and a calculator."
)

response = agent.invoke({
    "input": "What's the weather in Tokyo? Also what's 42 * 17?"
})

print(response["output"])

关键点@tool 装饰器将任意函数转换为 Agent 可调用的工具。写清晰的文档字符串——Agent 用它们来决定何时调用每个工具。

常见模式

流式响应

for chunk in chain.stream({"language": "French", "text": "Good morning"}):
    print(chunk.content, end="", flush=True)

批量处理

inputs = [
    {"language": "Spanish", "text": "Hello"},
    {"language": "French", "text": "Hello"},
    {"language": "Japanese", "text": "Hello"},
]

results = chain.batch(inputs)

输出解析

from langchain_core.output_parsers import JsonOutputParser

chain = prompt | model | JsonOutputParser()
result = chain.invoke(inputs)  # 返回解析后的字典

最佳实践

  1. 从简单开始 — 先用提示词 + 模型链,只有在需要动态工具选择时才添加 Agent
  2. API Key 存在环境变量 — 永远不要硬编码到源代码中
  3. 使用清晰的系统提示词 — 具体的指令产生更一致的结果
  4. 保持工具专注 — 每个工具做一件事,文档清晰
  5. 用便宜模型测试 — 开发时用 Haiku/GPT-4o-mini,上线后再切换到生产模型
  6. 启用 LangSmith — 早点连接以便追踪和调试
  7. 监控 token 使用量 — 跟踪成本,尤其是长对话场景

常见问题

Chains 和 Agents 的区别——何时用哪个?

Chains 适用于固定的、可预测的工作流(翻译、摘要、格式化)。Agents 当模型需要动态决定下一步做什么时使用。

如何处理长对话?

实现对话摘要,或使用滚动窗口(只保留最近 N 条消息)。LangGraph Memory Store 提供内置持久化。

LangChain vs LangGraph vs Deep Agents?

  • LangChain — 快速入门、预置模式(从这里开始)
  • LangGraph — 细粒度控制、确定性工作流
  • Deep Agents — 复杂多步骤任务,带规划和子 Agent

我的 Agent 很慢,怎么办?

减少工具数量,简化工具描述,用 invoke() 代替 stream() 提速,考虑使用更快的模型。

下一步