7.4 KiB
7.4 KiB
LangChain Learning
基于 LangChain 0.3.27 的学习项目,集成 SiliconFlow & Ollama API
功能特性
- 多 LLM 集成:支持 OpenAI API、SiliconFlow、Ollama 及 LangChain 抽象层
- MCP 协议支持:通过 MultiServerMCPClient 连接多个 MCP 服务器
- Agent 智能体:基于 LangGraph 的 ReAct Agent 实现自主推理与工具调用
- RAG 检索增强生成:基于向量库(FAISS)的文档检索与问答
- 流式响应:实时流式输出,带来更好的使用体验
- Prompt 工程:多种 Prompt 模板构建方式
- 输出解析:支持 JSON 等格式解析
- 工具调用 (Tool Calling):支持 @tool 装饰器和 StructuredTool 定义工具
- Token 用量追踪:轻松监控 API 调用消耗
- 内存管理:实现对话历史持久化(ConversationBufferMemory, SummaryMemory)
- Rich 终端界面:支持 Markdown 渲染、多行输入等高级交互
- 模型测速工具:测试模型的首字延迟 (TTFT) 和每秒生成速度 (TPS)
快速开始
1. 安装依赖
uv sync
2. 配置环境变量
在项目根目录创建 .env 文件:
# SiliconFlow
SILICONFLOW_API_KEY=your_api_key_here
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
# Ollama / 本地模型
OLLAMA_BASE_URL=http://localhost:11434/v1
OLLAMA_API_KEY=ollama
3. 运行示例
Hello World 示例
| 示例 | 命令 | 说明 |
|---|---|---|
| 直接调用 API | python helloworld/helloworld.py |
使用 requests 直接调用 SiliconFlow API |
| LangChain + ChatOpenAI | python helloworld/helloworld_langchain_openai.py |
通过 OpenAI 接口调用 LLM |
| LangChain + ChatSiliconFlow | python helloworld/helloworld_siliconflow.py |
使用 LangChain SiliconFlow 集成 |
| OpenAI 客户端 + SiliconFlow | python helloworld/openai_siliconflow.py |
OpenAI 客户端兼容 SiliconFlow |
Prompt 示例
| 示例 | 命令 | 说明 |
|---|---|---|
| PromptTemplate | python prompt/prompt_demo.py |
演示 PromptTemplate 模板构建 |
| Few-shot Learning | python prompt/fewshot_demo.py |
带示例的少样本提示学习 |
| 从文件加载 Prompt | python prompt/promt_from_file.py |
从 YAML 文件加载提示词模板 |
输出解析示例
| 示例 | 命令 | 说明 |
|---|---|---|
| JSON 解析器 | python parser/json_parser_demo.py |
使用 JsonOutputParser 解析 LLM 输出 |
RAG 示例
| 示例 | 命令 | 说明 |
|---|---|---|
| 基础 RAG | python rag/rag_demo.py |
基于 FAISS 向量库的检索问答系统 |
工具调用示例
| 示例 | 命令 | 说明 |
|---|---|---|
| 工具定义 | python tools/tool_definition.py |
演示 @tool 装饰器和 StructuredTool 定义方式 |
| 工具调用 | python tools/tool_demo.py |
演示模型如何调用工具并获取结果 |
MCP 示例
| 示例 | 命令 | 说明 |
|---|---|---|
| MCP 客户端 | python mcp/mcp_client.py |
连接 MCP 服务器并获取工具列表 |
| Agent + MCP | python mcp/mcp_client_with_agent.py |
使用 ReAct Agent 调用 MCP 工具 |
| Agent + MCP (简易版) | python mcp/mcp_client_with_agent_simple.py |
简化版的 Agent MCP 调用 |
MCP 服务端示例
| 示例 | 命令 | 说明 |
|---|---|---|
| 天气服务 | python mcp/get_weather_server.py |
提供天气查询的 MCP 服务端 |
| 数学服务 | python mcp/math_server.py |
提供数学计算的 MCP 服务端 |
Token 用量示例
| 示例 | 命令 | 说明 |
|---|---|---|
| Token 追踪 | python token/token_demo.py |
使用 get_openai_callback 追踪 token 消耗 |
内存管理示例
| 示例 | 命令 | 说明 |
|---|---|---|
| 基础记忆 | python memory/memory_desc.py |
演示不同类型的 Memory 对象 |
| 带内存聊天 | python memory/memory_demo.py |
使用 ConversationBufferMemory 进行多轮对话 |
| 无内存聊天 | python memory/without_memory_demo.py |
基础 LLM 聊天,无历史上下文 |
| Rich 界面聊天 | python memory/without_memory_demo_rich.py |
使用 Rich 美化的无内存聊天界面 |
Ollama 示例
| 示例 | 命令 | 说明 |
|---|---|---|
| Rich 流式聊天 | python ollama/ollama_rich_chat.py |
支持 Markdown 渲染、多行输入的流式聊天 |
| 模型测速工具 | python ollama/tps_monitor.py |
测量模型的 TTFT 和 TPS 性能 |
项目结构
langchain-learning/
├── helloworld/
│ ├── helloworld.py # 直接调用 SiliconFlow API
│ ├── helloworld_langchain_openai.py # LangChain + ChatOpenAI
│ ├── helloworld_siliconflow.py # LangChain + ChatSiliconFlow
│ └── openai_siliconflow.py # OpenAI 客户端 + SiliconFlow
├── prompt/
│ ├── prompt_demo.py # PromptTemplate 模板示例
│ ├── fewshot_demo.py # Few-shot Learning 示例
│ ├── promt_from_file.py # 从文件加载 Prompt
│ ├── prompt_from_file.yaml # Prompt YAML 模板文件
│ └── prompt_from_file.json # Prompt JSON 模板文件
├── parser/
│ └── json_parser_demo.py # JSON 输出解析示例
├── rag/
│ └── rag_demo.py # RAG 检索增强生成示例
├── tools/
│ ├── tool_definition.py # 工具定义方式演示
│ └── tool_demo.py # 工具调用完整流程演示
├── mcp/
│ ├── mcp_client.py # MCP 客户端基础用法
│ ├── mcp_client_with_agent.py # Agent + MCP 工具调用
│ ├── mcp_client_with_agent_simple.py # Agent + MCP 简易版
│ ├── get_weather_server.py # 天气查询 MCP 服务端
│ └── math_server.py # 数学计算 MCP 服务端
├── token/
│ └── token_demo.py # Token 用量追踪示例
├── memory/
│ ├── memory_desc.py # 演示 Memory 对象类型
│ ├── memory_demo.py # 带内存的对话链示例
│ ├── with_memory_demo.py # 手动管理内存的聊天示例
│ ├── without_memory_demo.py # 无内存的基础聊天
│ └── without_memory_demo_rich.py # Rich 界面的无内存聊天
├── ollama/
│ ├── ollama_rich_chat.py # Ollama 流式聊天(Rich 界面)
│ └── tps_monitor.py # 模型性能测速工具
├── main.py # 入口文件
├── pyproject.toml # 项目配置
└── README.md
可用模型
SiliconFlow
deepseek-ai/DeepSeek-R1-0528-Qwen3-8BQwen/Qwen3.5-4BQwen/Qwen3-8B
Ollama (本地)
gemma4:26bgemma4:e2bdeepseek-v3.1:671b-cloud
技术栈
| 类别 | 技术 |
|---|---|
| 框架 | LangChain 0.3.27 |
| Agent | LangGraph |
| LLM 提供商 | SiliconFlow, Ollama |
| MCP | langchain-mcp-adapters |
| 向量库 | FAISS |
| 终端美化 | Rich |
| 数据验证 | Pydantic |
| 语言 | Python 3.11+ |
许可证
MIT License