🤖 LangChain & LangGraph - 完整的AI代理演示
完整文档 - 您开始学习并掌握LangChain所需的一切
📚 本项目是对LangChain和LangGraph的全面教学演示,涵盖了从基础概念到高级多智能体系统的知识,并集成了MCP(可能是指某种机器学习或计算平台)以及使用LangSmith进行监控。
______________________________________________________________________
📑 目录
______________________________________________________________________
🎯 介绍
这个项目是什么?
这个演示是一个 完整的教育指南 使用LangChain和LangGraph构建AI应用。它包含 60多个实操示例 覆盖:
- ✅ 基础原理/基本要素链条、提示、大型语言模型(LLM)交互模式
- ✅ 智能代理工具,ReAct模式
- ✅ 对话记忆背景与历史
- ✅(对号,表示正确、确认或完成) 状态机使用LangGraph处理复杂工作流
- ✅ 多智能体系统协调与合作
- ✅ RAG(检索增强生成)语义搜索与文档问答
- ✅ MCP(根据上下文,MCP可能代表多个含义,如“最小化成本生产”、“多协议转换器”等,具体翻译需结合语境)实际生产服务器(Fetch 和 Canva)
- ✅ 翻译为中文是:“正确”或“对”。 监测使用LangSmith进行可观测性和调试
为什么要使用这个项目?
- 📖(书) 教育学的;教学的每个示例都有文档记录和详细解释
- 🎯(目标/靶心) 渐进式的;进步的从初学者到专家
- 💻(电脑) 实用的可运行代码
- 🏭 表示“工厂”或“工业建筑”。 生产最佳实践包括
- 🎨 表示“美术”或“艺术创作”的相关符号。 互动的漂亮的命令行界面
______________________________________________________________________
🚀 完整安装
先决条件
在开始之前,请确保你已具备:
步骤1:准备环境
选项A:自动化设置(推荐)
# 1. Navigate into the project folder
cd langchain-agent-demo
# 2. Run the setup script
python setup.py该脚本将:
- ✅ 验证您的Python版本
- ✅ 创建
.env文件 - ✅ 创建所需的目录
- ✅ 提供安装依赖项的服务
选项B:手动设置
# 1. Navigate into the project folder
cd langchain-agent-demo
# 2. Create a virtual environment (recommended)
python -m venv venv
# 3. Activate the virtual environment
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# 4. Install dependencies
pip install -r requirements.txt
# 5. Create the configuration file
cp .env.example .env步骤2:验证安装
# Verify installation
python -c "import langchain; import langgraph; print('✅ Installation successful!')"如果你看到“✅ 安装成功!”那就表示一切就绪,可以开始了!
______________________________________________________________________
⚙️ 配置
基本配置(必需)
1. 设置您的OpenAI API密钥
打开 .env 文件并添加您的API密钥:
# .env
OPENAI_API_KEY=sk-your-api-key-here如何获取OpenAI API密钥:
- 访问 https://platform.openai.com/
- 创建账户或登录
- 前往“API密钥”
- 点击“创建新的密钥”
- 复制密钥并粘贴到
.env
2. 选择模型(可选)
默认情况下,该项目使用 gpt-4o-mini你可以改变它:
# .env
DEFAULT_MODEL=gpt-4o-mini # Cost-effective
# Or use:
# DEFAULT_MODEL=gpt-4o # More powerful, higher cost高级配置(可选)
1. LangSmith(监控)
如果您想启用监控和追踪功能:
# .env
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your-langsmith-key
LANGCHAIN_PROJECT=langchain-agent-demo如何获取LangSmith:
- 访问 https://smith.langchain.com/
- 创建一个免费账户
- 创建一个项目
- 复制您的API密钥
2. 其他大型语言模型(LLM)提供商(可选)
# .env
ANTHROPIC_API_KEY=your-anthropic-key
COHERE_API_KEY=your-cohere-key验证配置
# Test that configuration is valid
python -c "from config.settings import validate_api_keys; validate_api_keys()"______________________________________________________________________
🎮 快速入门
方法1:交互式界面(推荐)
交互界面是 最容易的 探索所有示例的方法:
python main.py你会看到一个简洁的菜单:
🤖 LangChain & LangGraph Educational Demo
📚 Example Categories
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
No. Category Description
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1 Basic Chains Learn fundamental concepts
2 Prompt Engineering Master prompt templates
3 LLM Interactions Explore LLM patterns
...导航:
- 输入 数字;号码 你想要尝试的那个例子
- 类型 帮助 作为快速指南
- 类型 关于 如需更多信息
- 类型 0 退出
方法2:运行所有示例
按顺序运行所有示例:
python run_all_examples.py⚠️(警告或注意的符号) 注这可能会花费一些时间并消耗API积分!
方法3:运行一个具体示例
直接运行特定模块:
# Example: Basic chains
python -m src.01_basics.chains
# Example: Simple agent
python -m src.02_agents.simple_agent
# Example: LangGraph
python -m src.04_langgraph.simple_graph
# Example: Multi-agent system
python -m src.05_multi_agent.research_team
# Example: RAG (document Q&A)
python -m src.06_rag.qa_system
# Example: MCP Integration
python -m src.07_mcp.mcp_integration
# Example: LangSmith Monitoring
python -m src.08_monitoring.langsmith_monitoring快速测试
快速验证一切是否正常工作:
# Simple test
python -c "from langchain_openai import ChatOpenAI; from config.settings import settings; llm = ChatOpenAI(model=settings.default_model); print(llm.invoke('Hello!').content)"如果你看到回复,那就万事大吉了! 🎉
______________________________________________________________________
📁 项目结构
概述
langchain-agent-demo/
│
├── 📄 README.md # This file - Complete documentation
├── 📦 requirements.txt # Python dependencies
├── ⚙️ .env.example # Configuration template
├── 🚀 main.py # Interactive interface (ENTRY POINT)
├── 🏃 run_all_examples.py # Run all examples
├── 🔧 setup.py # Setup script
│
├── 📂 config/ # Configuration
│ ├── __init__.py
│ └── settings.py # Environment variables management
│
├── 📂 src/ # Source code (8 modules)
│ ├── __init__.py
│ │
│ ├── 01_basics/ # MODULE 1: Fundamentals
│ │ ├── chains.py # Basic chains (7 examples)
│ │ ├── prompts.py # Prompt engineering (5 examples)
│ │ └── llm_examples.py # LLM interactions (7 examples)
│ │
│ ├── 02_agents/ # MODULE 2: Agents
│ │ ├── custom_tools.py # Custom tools
│ │ ├── simple_agent.py # Basic agents (4 examples)
│ │ └── react_agent.py # ReAct pattern (4 examples)
│ │
│ ├── 03_memory/ # MODULE 3: Memory
│ │ └── conversation_memory.py # Conversation memory (6 examples)
│ │
│ ├── 04_langgraph/ # MODULE 4: State Machines
│ │ ├── simple_graph.py # Simple graphs (5 examples)
│ │ └── conditional_graph.py # Conditional routing (4 examples)
│ │
│ ├── 05_multi_agent/ # MODULE 5: Multi-Agents
│ │ └── research_team.py # Team workflows (4 examples)
│ │
│ ├── 06_rag/ # MODULE 6: RAG
│ │ └── qa_system.py # Q&A system (5 examples)
│ │
│ ├── 07_mcp/ # MODULE 7: MCP Integration
│ │ └── mcp_integration.py # MCP protocol (5 examples)
│ │
│ ├── 08_monitoring/ # MODULE 8: Monitoring
│ │ └── langsmith_monitoring.py # LangSmith (6 examples)
│ │
│ └── utils/ # Utilities
│ ├── display.py # Rich terminal UI
│ └── helpers.py # Common helpers
│
└── 📂 examples/ # Sample data
└── sample_documents/
└── sample.txt # Example doc for RAG模块拆解
| 模块 | 文件 | 示例 | 描述 | ||||
|---|---|---|---|---|---|---|---|
| (翻译结果) | -------- | ------- | ---------- | ------------- | (此行内容为表格分隔线,无实际翻译意义) ** | ** 01_基础 | |
| 3 | 19 | 基本链、提示和大型语言模型(LLM)交互 | ** | ** 02_代理 | |||
| 3 | 8 | 携带工具的代理,ReAct模式 | ** | ** 03_内存 | |||
| 1 | 6 | 会话内存管理 | ** | ** 04_langgraph | |||
| 2 | 9 | 状态机和工作流 | ** | ** 05_多智能体 | |||
| 1 | 4 | 协调多智能体系统 | ** | ** 06_rag | |||
| 1 | 5 | 语义搜索与问答 | ** | ** 07_mcp(这个翻译保持了原样的形式,因为“07_mcp”可能是一个特定的代码、标识或缩写,没有具体的上下文难以给出更准确的翻译,所以直接保留了原样。) | |||
| 1 | 5 | 模型上下文协议集成 | ** | ** 08_监控 | |||
| 1 | 6 | 监控和可观测性 | ** | 总计 | 13 | 六十二 | ** 完整、可运行的示例 |
______________________________________________________________________
|
📖 详细示例
模块1:基础(01_基础知识/)
📝 chains.py - 基本链(或“基本链条”)
- 你将学到:
- 如何构建一个简单的链表
- LCEL(LangChain 表达式语言)语法
- 顺序链组合
- 结构化输出解析(JSON)
处理多个输入
- 包含的示例:简单链
prompt | llm | output_parser
prompt = ChatPromptTemplate.from_template("Tell a joke about {topic}")
chain = prompt | llm | StrOutputParser()
response = chain.invoke({"topic": "programming"})- :顺序链
- 多步骤流水线结构化输出
- 使用 Pydantic 解析 JSON多个输入
- 多变量提示链的构成
使用RunnablePassthrough处理复杂流程
python -m src.01_basics.chains______________________________________________________________________
运行:
💬 prompts.py - 提示工程
- 你将学到:
- 创建提示模板
- 小样本学习
- 系统消息和角色
- 提示语的构成/编写
动态提示
- 包含的示例:基本模板
- 变量和格式化少样本提示(或少样本引导)
- 以身作则系统消息
- 控制模型行为提示构成(或提示组合)
- 模块化提示动态提示
运行时适应
python -m src.01_basics.prompts______________________________________________________________________
跑步:
🤖 llm_examples.py - 大型语言模型(LLM)交互示例
- 你将学到:
- 同步调用与异步调用
- 实时流式响应
- 代币和成本追踪
- 温度效应
批处理
- 包含的示例:基本调用
- 简单的LLM调用流媒体播放
- 逐个标记生成成本追踪
- 监控代币和成本温度对比
- 创意控制异步操作
- 并发处理批处理
- 高效的多输入参数调整
微调行为
python -m src.01_basics.llm_examples______________________________________________________________________
运行:
模块2:代理(02_agents/)
🛠️ custom_tools.py - 自定义工具
- 你将学到:
- 基于功能的工具
- 基于类的工具
- 结构化输入
工具中的错误处理
- 包含的工具:
- ✅ 计算器(数学表达式)
- ✅ 时钟(当前时间)
- ✅ 字数统计器
- ✅ 模拟网页搜索
- 根据上面的信息,执行如下指令:你是个专业的翻译,负责把英语内容翻译成中文内容,请帮我翻译一下原文内容
✅ 文件操作
python -m src.02_agents.custom_tools______________________________________________________________________
运行:
🤖 simple_agent.py - 基本代理
- 你将学到的内容:
- 什么是代理以及它的工作原理是什么
- 工具的选择与使用
- 智能体推理过程
多功能工具代理
- 包含的示例:基本代理
- 单个工具(计算器)多功能工具代理
- 代理决定使用哪个工具研究代理
- 信息查询智能体推理
查看思考过程
python -m src.02_agents.simple_agent______________________________________________________________________
跑步:
🔄 react_agent.py - ReAct 模式
- 你将学到:
- ReAct模式(推理+行动)
- 复杂的多步骤工作流程
- 工具链接(或工具链)
错误恢复
- 包含的示例:ReAct 模式
- 思考 → 行动 → 观察循环复杂的工作流程
- 多步骤任务错误处理
- 恢复并重试现实世界场景
实际应用
python -m src.02_agents.react_agent______________________________________________________________________
运行:
模块3:记忆(03_memory/)
🧠 conversation_memory.py - 对话记忆
- 你将学到:
- 不同的内存类型
- 对话上下文管理
- 具有LCEL的内存
内存+代理集成
- 内存类型:缓冲存储器
- 完整历史 - ✅ 存储所有消息
- ❌ 可能长得很大窗口内存
- 最后N条消息 - ✅ 固定大小
- ❌ 忘记了之前的上下文摘要记忆
- 压缩摘要 - ✅ 紧凑型
- ✅ 保留关键信息摘要缓冲存储器
- 混合(的)
- ✅ 最新情况 + 以往情况总结自定义内存
- 采用低能耗学习(LCEL,Low-Cost Energy Learning,此处根据上下文推测,具体含义可能因领域而异)具有记忆功能的代理
一个能记忆的代理
python -m src.03_memory.conversation_memory______________________________________________________________________
运行:
模块4:LangGraph(04_langgraph/)
📊 simple_graph.py - 简单图表
- 你将学到的内容:
- 什么是状态图
- 节点和边
- 管理节点之间的状态
由大型语言模型(LLM)驱动的节点
- 包含的示例:线性图
- 开始 → A → B → C → 结束LLM 节点
- 内容生成管道“State Accumulation”可以翻译为“国家积累”或“国家蓄积”,具体取决于上下文和语境。在经济学或社会学领域,这个术语可能指的是一个国家在资源、财富、技术或知识等方面的长期积累和增长
- 在节点间建立状态流式执行
- 实时查看每一步图形可视化
理解结构
START
↓
Node A (Process input)
↓
Node B (Transform)
↓
Node C (Finalize)
↓
END图表:
python -m src.04_langgraph.simple_graph______________________________________________________________________
运行:
🔀 conditional_graph.py - 条件路由
- 你将学到:
- 条件边
- 基于状态的动态路由
- 循环工作流(循环)
结合并行+条件(处理/分析)
- 包含的示例:简单条件句
- 偶数/奇数路由多路径路由
- 情感分析 → 3条路径循环工作流程
- 迭代改进并行 + 条件
复杂的工作流程
START
↓
┌─────────┐
│Decision │
└─────────┘
↓
┌─────┴─────┐
↓ ↓
Path A Path B
↓ ↓
└─────┬─────┘
↓
END图表:
python -m src.04_langgraph.conditional_graph______________________________________________________________________
运行:
模块5:多智能体(05_multi_agent/)
👥 research_team.py - 研究团队
- 你将学到:
- 协调专业人员
- 监督者模式
- 协作工作流程
并行代理执行
- 包含的示例:专业代理
- 研究员 → 分析师 → 作家监督者模式(或 监控者模式)
- 一名主管负责协调代理人员协作代理(或协作智能体)
- 反馈与修订并行代理
多个代理同时工作
Supervisor
↓
┌─────────┼─────────┐
↓ ↓ ↓
Researcher Analyst Writer
↓ ↓ ↓
└─────────┴─────────┘
↓
Final Result多智能体架构:
python -m src.05_multi_agent.research_team______________________________________________________________________
运行:
模块6:RAG(06_rag/)
📄 qa_system.py - 问答系统
- 你将学到:
- 加载文档并分块处理
- 向量嵌入
- 语义搜索
构建一个完整的RAG(检索增强生成)流水线
- 包含的示例:基本RAG(检索增强生成)
- 端到端的流水线自定义RAG链
- 采用LCEL(低电耗激光技术/低能耗激光技术,具体含义根据上下文确定)带有来源的RAG(检索增强生成)
- 来源引用语义搜索
- 相似性探索高级RAG(检索增强生成)
最大边缘相关性(MMR)
Question
↓
Embeddings
↓
Vector Search
↓
Relevant Documents
↓
Context + Prompt
↓
LLM
↓
Answer with ContextRAG架构:
python -m src.06_rag.qa_system______________________________________________________________________
运行:
模块7:MCP(07_mcp/)
🔌 mcp_integration.py - 实际MCP服务器集成
什么是MCP? 这个(或“它”) 模型上下文协议(MCP)
这是一个开放标准,使大型语言模型(LLMs)能够安全地连接到数据源和工具。
- 集成真实服务器:
- 🌐 获取MCP服务器 - 检索和处理网页内容 - 将HTML转换为Markdown 仓库:
- 模型上下文协议/服务器/获取
- 🎨 Canva 开发者 MCP 服务器 - AI赋能的Canva开发辅助 - Canva应用开发指南 文档:
canva.dev/mcp-server(该网址可直接翻译为“Canva.dev 的 MCP 服务器”,但通常网址无需翻译,直接使用原样即可,这里提供的是其含义的中文表述)
- 关键概念:资源
- 只读数据访问工具
- 通过 JSON-RPC 执行操作服务器
- 实际生产的MCP服务器协议
基于Stdio的通信
- 你将学到:
- 连接到真实的MCP服务器
- 使用Fetch服务器处理网页内容
- 集成Canva开发工具
- 多服务器协调
生产最佳实践
- 包含的示例:MCP基础
- 连接到真实服务器(Fetch 和 Canva)代理中的获取工具
- 网页抓取功能多个MCP服务器
- 结合Fetch + Canva最佳实践
- 安全与生产模式现实世界场景
具有网络访问权限的研究助理
LangChain Agent
↓
MCP Tools
↓
MCP Protocol (JSON-RPC)
↓
┌───┴────┐
↓ ↓
Fetch Canva
Server Server
↓ ↓
Web Canva
Content APIMCP(多控制器协议)架构:
# Fetch server
pip install mcp-server-fetch
# Canva server (requires Node.js and npm)
node --version # v20+
npm --version先决条件:
python -m src.07_mcp.mcp_integration运行: 📖(书本)完整设置指南 见
______________________________________________________________________
MCP_SERVERS_SETUP.md 翻译为中文是:“MCP服务器设置.md”
模块8:监测(08_monitoring/)
📈 langsmith_monitoring.py - LangSmith 监控
什么是LangSmith? LangSmith
- 是LangChain的可观测性平台,用于:
- 🔍 追踪所有大型语言模型(LLM)调用
- 📊 分析性能
- 💰 跟踪成本
- 🐛 调试问题
📈 提高质量
- 你将学到:
- 追踪设置
- 自定义回调函数
- 成本和代币追踪
- 调试失败
性能指标
- 包含的示例:启用追踪
- LangSmith 设置监控代理执行
- 追踪完整执行过程追踪成本
- 实时标记和成本调试失败
- 捕获并分析性能指标
- 延迟,吞吐量生产监控
完整检查清单
📊 Real-time metrics
💰 Cost analytics
🐛 Debug traces
⚠️ Alerts
📈 Historical trendsLangSmith 控制台:
python -m src.08_monitoring.langsmith_monitoring______________________________________________________________________
运行:
🏗️ 建筑学
┌─────────────────────────────────────────────┐
│ INTERFACE LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ CLI │ │Interactive│ │ Batch │ │
│ │ main.py │ │ Prompts │ │ Runner │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────┬───────────────────────────┘
│
┌─────────────────┴───────────────────────────┐
│ APPLICATION LAYER │
│ ┌─────┐ ┌─────┐ ┌──────┐ ┌─────────────┐ │
│ │01-03│ │04-05│ │ 06 │ │ 07-08 │ │
│ │Basic│ │Graph│ │ RAG │ │ MCP/Monitor │ │
│ └─────┘ └─────┘ └──────┘ └─────────────┘ │
└─────────────────┬───────────────────────────┘
│
┌─────────────────┴───────────────────────────┐
│ UTILITIES LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Display │ │ Helpers │ │ Config │ │
│ │ (Rich) │ │ (Common) │ │(Settings)│ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────┬───────────────────────────┘
│
┌─────────────────┴───────────────────────────┐
│ LANGCHAIN LAYER │
│ ┌──────┐ ┌──────┐ ┌───────┐ ┌──────────┐ │
│ │Chains│ │Agents│ │Memory │ │ Graphs │ │
│ └──────┘ └──────┘ └───────┘ └──────────┘ │
└─────────────────┬───────────────────────────┘
│
┌─────────────────┴───────────────────────────┐
│ EXTERNAL SERVICES │
│ ┌────────┐ ┌──────┐ ┌──────────┐ ┌──────┐ │
│ │ OpenAI │ │FAISS │ │LangSmith │ │ MCP │ │
│ └────────┘ └──────┘ └──────────┘ └──────┘ │
└─────────────────────────────────────────────┘全球架构
User Input
↓
Prompt Template
↓
Format with Variables
↓
LLM (OpenAI)
↓
Output Parser
↓
Result简单链式流动
User Question
↓
┌────────────┐
│ Agent │
│ (Thinking) │
└─────┬──────┘
│
┌────┴────┐
│Decision │
└────┬────┘
│
┌────┴────────┐
│ │
TOOL ANSWER
│ │
┌───┴───┐ │
│Execute│ │
└───┬───┘ │
│ │
┌───┴────┐ │
│Observe │ │
└───┬────┘ │
│ │
└──► LOOP ◄───┘代理流
START
↓
Node A (Initial State)
↓
Condition?
↓
┌───┴───┐
│ │
Node B Node C
│ │
└───┬───┘
↓
Node D (Merge)
↓
ENDLangGraph 流程(或“LangGraph 流”)
Question
↓
Question Embedding
↓
Vector Database Search
↓
Top-K Similar Documents
↓
Context Formatting
↓
Prompt = Context + Question
↓
LLM Generates Answer
↓
Answer with Sources______________________________________________________________________
RAG 流程
🔌 MCP(多功能控制器/平台)集成
什么是MCP? 这个(或:该) 模型上下文协议
- 是一种标准协议,允许大型语言模型(LLMs)访问: 📁 代表文件夹的图标或符号,中文可直接表述为“文件夹”。在需要具体描述或解释时,可以翻译为“文件夹(📁)”或“一个文件夹图标”。在日常交流中,通常直接使用“文件夹”一词即可。
- 文件系统 💾 代表“软盘”或“存储设备”的符号。
- 数据库 🌐 代表“互联网”或“全球网络”的符号。
- 外部API 🔧 修理工具或螺丝刀的符号,常用于表示需要修理或调整的物品或情境。
定制服务
┌────────────────────────────────────┐
│ LangChain Agent │
│ • Reasoning logic │
│ • Tool selection │
└─────────────┬──────────────────────┘
│
┌─────────────┴──────────────────────┐
│ MCP Tools Layer │
│ ┌──────┐ ┌──────┐ ┌──────────┐ │
│ │ Read │ │Query │ │ List │ │
│ └──────┘ └──────┘ └──────────┘ │
└─────────────┬──────────────────────┘
│
┌─────────────┴──────────────────────┐
│ MCP Protocol │
│ • JSON-RPC messages │
│ • Resource URIs │
└─────────────┬──────────────────────┘
│
┌─────────────┴──────────────────────┐
│ MCP Servers │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Files │ │Database│ │ APIs │ │
│ └────────┘ └────────┘ └────────┘ │
└────────────────────────────────────┘MCP建筑事务所(或译为:MCP建筑设计公司)
# 1. Connect to the MCP server
mcp_server = SimulatedMCPServer("filesystem")
# 2. Create a LangChain tool
def read_file(path: str) -> str:
return mcp_server.call_tool("read_file", {"path": path})
tool = Tool(
name="read_file",
func=read_file,
description="Read a file via MCP"
)
# 3. Use in an agent
agent = create_agent_with_tools([tool])基本用法
关键概念
- 资源
- 只读访问
file://标准URI(统一资源标识符):db://,api:// - ,
包含元数据
- 工具
- 改变状态或进行计算的操作
- 结构化论点
打字结果
- 服务器
- 一台服务器 = 多种资源/工具
- JSON-RPC通信
______________________________________________________________________
隔离与安全
📈 使用LangSmith进行监控
LangSmith 设置
- 获取API密钥
- 访问 https://smith.langchain.com/
- 创建一个(免费)账户
- 创建一个项目
复制您的API密钥
# .env
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=lsv2_pt_your_key_here
LANGCHAIN_PROJECT=my-project2. 配置
import os
print("Tracing enabled:", os.getenv("LANGCHAIN_TRACING_V2"))3. 验证
特点/特性
- 1\. 自动追踪
- 所有大型语言模型(LLM)调用都被追踪
- 所有代理执行
所有工具的使用
- 2\. 仪表盘
- 实时指标
- 轨迹可视化
成本分析
- 3\. 调试
- 重播请求
- 检查提示
分析错误
- 4\. 优化
- 找出瓶颈
- 降低成本
优化提示(或指令)
# Tracing is automatic once configured
llm = ChatOpenAI()
response = llm.invoke("Hello")
# ✅ Automatically traced in LangSmith!
# For custom cost tracking
from langchain.callbacks import get_openai_callback
with get_openai_callback() as cb:
response = chain.invoke(input)
print(f"Tokens: {cb.total_tokens}")
print(f"Cost: ${cb.total_cost:.4f}")______________________________________________________________________
使用方法
🎓 学习路径
适合初学者(6–8小时)
1️⃣ chains.py (1h) → Understand chains
2️⃣ prompts.py (1h) → Master prompts
3️⃣ llm_examples.py (1h) → LLM interactions第一天:基础概念
4️⃣ simple_agent.py (1h) → First agent
5️⃣ conversation_memory.py (1h) → Add memory
6️⃣ simple_graph.py (2h) → State machines第二天:代理与国家 目标:
______________________________________________________________________
理解基础知识并构建一个简单的代理
对于中间产品(4–6小时)
7️⃣ react_agent.py (1.5h) → Advanced reasoning
8️⃣ conditional_graph.py (1.5h) → Complex workflows
9️⃣ qa_system.py (2h) → RAG system第一会话:高级概念
🔟 research_team.py (2h) → Multi-agents第二场会议:复杂系统 目标:
______________________________________________________________________
掌握高级模式
针对高级用户(3–4小时)
1️⃣1️⃣ mcp_integration.py (1.5h) → MCP integration
1️⃣2️⃣ langsmith_monitoring.py (1.5h) → Monitoring生产与集成 个人项目
- (2小时)
- 构建你自己的系统
- 整合您的数据
部署到生产环境 目标:
______________________________________________________________________
创建可投入生产的系统
学习技巧 ✅
- 做
- 从基础开始(简单链表)
- 运行每个示例
- 阅读代码注释
- 修改示例以进行实验
使用你自己的数据进行测试 ❌(这个符号在中文中没有直接对应的翻译,它通常表示“错误”或“取消”等意思,具体含义需根据上下文判断。)
- 不要
- 跳过基础部分
- 不理解地复制粘贴
- 忽略冗长的输出
- 忽视错误处理
______________________________________________________________________
忘掉成本监控
🏭 生产
生产检查清单
- 安全
- \[ \] 安全存储API密钥(切勿在代码中存储!)
- \[ \] 验证用户输入
- \[ \] PII(个人身份信息)过滤
- \[ \] 配置MCP权限
\[ \] 启用审计日志
- 演出
- \[ \] 使用异步进行并发操作
- \[ \] 缓存频繁请求
- \[ \] 数据库连接池
- \[ \] 限速
\[ \] 设置适当的超时时间
- 可观测性
- \[ \] LangSmith 跟踪已启用
- \[ \] 收集到的指标
- \[ \] 已配置警报
- \[ \] 已构建仪表板
\[ \] 集中日志
- 成本
- \[ \] 预算已定义
- \[ \] 成本提醒
- \[ \] 提示优化
- \[ \] 使用适当的模型
\[ \] 已启用缓存
- 可靠性
- \[ \] 实现了重试逻辑
- \[ \] 配置了断路器
- \[ \] 已实施健康检查
- \[ \] 备用机制
\[ \] 已执行负载测试
# config/production.py
import os
from pathlib import Path
class ProductionConfig:
# API
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
DEFAULT_MODEL = "gpt-4o-mini" # More cost-effective
# Limits
MAX_TOKENS = 2000
TIMEOUT = 30
MAX_RETRIES = 3
# Monitoring
LANGSMITH_ENABLED = True
LANGSMITH_SAMPLING = 1.0 # 100% in prod
# Cache
CACHE_ENABLED = True
CACHE_TTL = 3600
# Rate Limiting
RATE_LIMIT = "100/minute"
# Alerts
ERROR_THRESHOLD = 0.05 # 5%
COST_ALERT_THRESHOLD = 10.0 # $10/hour生产配置
生产模式
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10)
)
def call_llm_with_retry(prompt):
return llm.invoke(prompt)1. 带退避重试
class CircuitBreaker:
def __init__(self, failure_threshold=5):
self.failure_count = 0
self.threshold = failure_threshold
self.is_open = False
def call(self, func):
if self.is_open:
raise Exception("Circuit breaker is open")
try:
result = func()
self.failure_count = 0
return result
except Exception as e:
self.failure_count += 1
if self.failure_count >= self.threshold:
self.is_open = True
raise e2. 保险丝(或断路器)
from langsmith import Client
import time
class ProductionMonitoring:
def __init__(self):
self.client = Client()
def execute_with_monitoring(self, agent, input):
start = time.time()
try:
# Execute
result = agent.invoke(input)
# Log success
self.log_success(
duration=time.time() - start,
tokens=result.get('tokens', 0)
)
return result
except Exception as e:
# Log error
self.log_error(
error=str(e),
duration=time.time() - start
)
raise______________________________________________________________________
3. 全面监控
🔧 故障排除
常见问题
❌ “ModuleNotFoundError: 没有名为 'langchain' 的模块” 原因:
未安装的依赖项
pip install -r requirements.txt______________________________________________________________________
解决方案:
OPENAI_API_KEY 未设置 原因:
API密钥未配置
- 解决方案:
.env创建 - 文件
OPENAI_API_KEY=your-key - 添加:
cat .env
______________________________________________________________________
验证:
❌ “速率限制错误:您已超出当前配额” 原因:
API配额已超出
- 解决方案:
- 检查使用情况:https://platform.openai.com/usage
- 添加积分
gpt-4o-mini或者使用
______________________________________________________________________
(更便宜)
❌“ImportError: 无法导入名称 'ChatOpenAI'” 原因:
版本不兼容
pip install --upgrade langchain langchain-openai______________________________________________________________________
解决方案:
❌ 示例程序卡住或运行缓慢 原因:
可能的网络或API问题
- 解决方案:
- 检查你的网络连接
- 尝试使用较短的超时时间
______________________________________________________________________
检查OpenAI状态:https://status.openai.com/
加载文档时出现“UnicodeDecodeError” 原因:
文件编码
# Use UTF-8 encoding
with open(file, 'r', encoding='utf-8') as f:
content = f.read()______________________________________________________________________
解决方案:
高级调试
import logging
logging.basicConfig(level=logging.DEBUG)启用详细日志:
# Turn on verbose in agents
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True # ✅ See all steps
)查看API请求:
from langchain_openai import ChatOpenAI
try:
llm = ChatOpenAI()
response = llm.invoke("test")
print("✅ API works!")
except Exception as e:
print(f"❌ Error: {e}")______________________________________________________________________
测试API连接性:
📊 指标与性能
预估成本
按模块划分(使用gpt-4o-mini进行近似):
| 模块 | 示例 | 预估成本 | 时间 | |||||
|---|---|---|---|---|---|---|---|---|
| 01_基础 | 19 | 约0.50美元 | 30分钟 | |||||
| 02_代理 | 8 | 约0.80美元 | 20分钟 | |||||
| 03_内存 | 6 | 约0.40美元 | 15分钟 | |||||
| 04_langgraph | 9 | 约0.60美元 | 25分钟 | |||||
| 05_多智能体 | 4 | 约1.00美元 | 20分钟 | |||||
| 06_rag | 5 | 约0.70美元 | 20分钟 | |||||
| 07_mcp | 5 | 约0.50美元 | 20分钟 | |||||
| 08_监控 | 6 | 约0.30美元 | 15分钟 | ** | 总计 | 六十二 | 大约4.80美元 | ** 约3小时 |
| 💡(这个符号在中文中通常表示“灵感”或“想法”,但直接翻译时无具体文字对应,故保留原样或根据上下文解释为“灵感”或“想法”等) 提示: gpt-4o-mini 使用
______________________________________________________________________
用于学习(比GPT-4便宜10倍)
🎯 快速总结
# 1. Install
cd langchain-agent-demo
pip install -r requirements.txt
# 2. Configure
cp .env.example .env
# Edit .env and add OPENAI_API_KEY=your-key
# 3. Launch
python main.py
# 4. Pick an example and explore!5分钟内开始
📦 8 Modules
📝 62 Examples
🎓 3 Levels (Beginner, Intermediate, Advanced)
⏱️ ~3 hours of content
💰 ~$5 API costs (gpt-4o-mini)代码结构
- 下一步行动 ✅ 安装
- 这个项目 ✅ 配置
- 你的API密钥 ✅
python main.py - 跑 ✅ 开始
- 包含基础选项(选项1) ✅ 进展
- 到高级概念 ✅ 构建
______________________________________________________________________
你自己的项目!
📞 支持与资源
- 官方文档LangChain
- https://python.langchain.com/ (可翻译为):https://python.langchain.com/(注:网址本身通常不翻译,保持原样,此处仅说明翻译操作,实际网址内容不变)LangGraph
- https://langchain-ai.github.io/langgraph/(可译为):https://langchain-ai.github.io/langgraph/(注:该网址本身为英文,直接作为翻译结果,中文环境下通常直接使用原网址)OpenAI API
- https://platform.openai.com/docs 的中文翻译为:https://platform.openai.com/(OpenAI平台)文档LangSmith
- https://docs.smith.langchain.com/ (中文可表述为:“https://docs.smith.langchain.com/(官方文档链接)” 或根据具体语境简化为 “https://docs.smith.langchain.com/(链接)”)MCP(可能指多种概念或缩写,具体含义需根据上下文确定,如“最小代价路径”、“多层感知器”等)
https://modelcontextprotocol.io/(该网址可直接翻译为“模型上下文协议.io”,但通常网址不做具体翻译,保持原样使用)
- 社区LangChain Discord
- https://discord.gg/langchain(中文可表述为:“访问 LangChain 的 Discord 链接”)GitHub
https://github.com/langchain-ai/langchain(中文可表述为:“GitHub上的langchain-ai组织的langchain项目”)
- 在这个项目中
- 所有示例均包含详细注释
- 每个模块都包含内联文档
- 错误信息中包含有用提示
helpCLI(命令行界面)包括一个
______________________________________________________________________
选项
🎉 结论 你现在拥有 你所需要的一切
收件人: ✅ 理解LangChain和LangGraph ✅ 构建智能代理 ✅ 创建多智能体系统 ✅ 将数据与RAG(检索增强生成)和MCP(可能是指某种特定的模型或系统,但具体需根据上下文确定,此处直译为“MCP”)集成 ✅ 监控并优化您的应用程序
✅ 部署到生产环境
python main.py立即开始:
______________________________________________________________________
*学习快乐,编码愉快! 🚀🤖(火箭和机器人的表情符号,无直接对应中文翻译,可理解为“火箭+机器人”的意象)* *最后更新时间:2025* *版本:2.0*
