diff --git a/.env b/.env index 33b2068..7617490 100644 --- a/.env +++ b/.env @@ -1,4 +1,13 @@ # Qwen/Qwen3.5-4B # deepseek-ai/DeepSeek-R1-0528-Qwen3-8B SILICONFLOW_API_KEY = "sk-sylilrjrtxlvecwhfusjkutclmppzuzhncfcfxtekxrzyjee" -SILICONFLOW_BASE_URL = "https://api.siliconflow.cn/v1" \ No newline at end of file +SILICONFLOW_BASE_URL = "https://api.siliconflow.cn/v1" + +OLLAMA_API_KEY = "ollama" +OLLAMA_BASE_URL = "http://localhost:11434/v1" + +MINIMAX_API_KEY = "sk-cp-wWkzvRP-BiQia-6izxvqgehEsHSz8v4_PtDJAuT3OI0s8QFcEOsxIHcQoZC2cVQTK3L09EUuu5HDArYMvKXFnf91jk8LuZ0tteS7-Wd4Lk2zDm8RqrKkrd4" +MINIMAX_BASE_URL = "https://api.minimaxi.com/v1" + +BAILIAN_API_KEY = "sk-8c8bec7a613249dbbed08bc3affeef72" +BAILIAN_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" \ No newline at end of file diff --git a/README.md b/README.md index c446613..00fb49a 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,21 @@ # LangChain Learning -[](https://github.com/your-repo/langchain-learning) +[](https://github.com/your-repo/langchain-learning) [](https://www.python.org/) [](https://www.langchain.com/) -> LangChain 框架学习项目,集成 SiliconFlow API +> LangChain 框架学习项目,集成 SiliconFlow & Ollama API ## 功能特性 -- **多 LLM 集成**:支持 OpenAI API、Silicon Flow 及 LangChain 抽象层 +- **多 LLM 集成**:支持 OpenAI API、SiliconFlow、Ollama 及 LangChain 抽象层 - **流式响应**:实时流式输出,带来更好的使用体验 - **Prompt 工程**:多种 Prompt 模板构建方式 - **输出解析**:支持 JSON 等格式解析 - **Token 用量追踪**:轻松监控 API 调用消耗 - **内存管理**:实现对话历史持久化(ConversationBufferMemory, SummaryMemory) +- **Rich 终端界面**:支持 Markdown 渲染、多行输入等高级交互 +- **模型测速工具**:测试模型的首字延迟 (TTFT) 和每秒生成速度 (TPS) - **实战示例**:从基础到进阶的使用模式 ## 快速开始 @@ -21,18 +23,21 @@ ### 1. 安装依赖 ```bash -pip install langchain>=1.2.15 langchain-community>=0.4.1 langchain-siliconflow>=1.0.0 requests>=2.33.1 +pip install langchain>=1.2.15 langchain-community>=0.4.1 langchain-siliconflow>=1.0.0 requests>=2.33.1 rich openai ``` -***注意:*** *如果需要完整的记忆功能和更高级的模型,你可能需要安装额外的库。* - ### 2. 配置环境变量 在项目根目录创建 `.env` 文件: ```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. 运行示例 @@ -70,8 +75,17 @@ SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1 | 示例 | 命令 | 说明 | |------|------|------| -| 基础记忆 | `python memory/memory_desc.py` | 演示不同类型的 Memory 对象。| -| 带内存聊天 | `python memory/with_memory_demo.py` | 在对话链中管理和利用聊天历史记录。 | +| 基础记忆 | `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 性能 | ## 项目结构 @@ -86,14 +100,21 @@ langchain-learning/ │ ├── prompt_demo.py # PromptTemplate 模板示例 │ ├── fewshot_demo.py # Few-shot Learning 示例 │ ├── promt_from_file.py # 从文件加载 Prompt -│ └── prompt_from_file.yaml # Prompt 模板文件 +│ ├── prompt_from_file.yaml # Prompt YAML 模板文件 +│ └── prompt_from_file.json # Prompt JSON 模板文件 ├── parser/ │ └── json_parser_demo.py # JSON 输出解析示例 ├── token/ │ └── token_demo.py # Token 用量追踪示例 -├── memory/ # 记忆管理模块 +├── memory/ │ ├── memory_desc.py # 演示 Memory 对象类型 -│ └── with_memory_do.py # 演示使用带内存的聊天循环 +│ ├── 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 @@ -101,17 +122,24 @@ langchain-learning/ ## 可用模型 +**SiliconFlow** - `deepseek-ai/DeepSeek-R1-0528-Qwen3-8B` - `Qwen/Qwen3.5-4B` +- `Qwen/Qwen3-8B` + +**Ollama (本地)** +- `gemma4:26b` +- `deepseek-v3.1:671b-cloud` ## 技术栈 | 类别 | 技术 | |------|------| | 框架 | LangChain | -| LLM 提供商 | SiliconFlow | +| LLM 提供商 | SiliconFlow, Ollama | +| 终端美化 | Rich | | 语言 | Python 3.11+ | ## 许可证 -MIT License +MIT License \ No newline at end of file diff --git a/ollama/llm_benchmark_dashboard_v2.html b/ollama/llm_benchmark_dashboard_v2.html new file mode 100644 index 0000000..5d37737 --- /dev/null +++ b/ollama/llm_benchmark_dashboard_v2.html @@ -0,0 +1,178 @@ + + + +
+ +多維度對比:本地部署 vs 雲端 API | 數據驅動決策
+ 更新日期: 2026-04-14 +| 模型名稱 | +首字延遲 (TTFT) ↓ | +生成速度 (TPS) | +總耗時 | +總字數 | +速度視覺化 | +
|---|---|---|---|---|---|
| local-gemma4:26b (128K) Local |
+ 87.99s | +10.79 | +131.7s | +717 | +|
| local-gemma4:26b (32K) Local |
+ 78.67s | +10.16 | +127.7s | +722 | +|
| local-gemma4:e4b Local |
+ 39.93s | +12.34 | +110.4s | +1338 | +|
| ollama-deepseek-v3.1:671b-cloud Cloud (Ollama) |
+ 1.04s | +51.74 | +7.3s | +479 | +|
| ollama-gemma4:31b-cloud Cloud |
+ 0.85s | +31.79 | +14.2s | +613 | +|
| ollama-glm-5:cloud Cloud (Ollama) |
+ 13.58s | +102.25 | +19.5s | +779 | +|
| ollama-kimi-k2.5:cloud Cloud (Ollama) |
+ 15.91s | +29.67 | +23.3s | +505 | +|
| ollama-minimax-m2.7:cloud Cloud (Ollama) |
+ 40.40s | +3.75 | +40.9s | +508 | +|
| 百煉-qwen3-max Cloud |
+ 0.86s | +6.18 | +14.1s | +595 | +|
| 百煉-qwen3.5-35b-a3b Cloud |
+ 37.64s | +69.15 | +39.2s | +543 | +|
| 百煉-qwen3.6-plus Cloud |
+ 77.35s | +15.25 | +83.3s | +507 | +|
| 百煉-qwen3.6-plus-v2 Cloud |
+ 47.14s | +15.58 | +53.1s | +503 | +|
| 直連-MiniMax-M2.7 Cloud (Direct) |
+ 1.19s | +1.97 | +13.9s | +842 | +|
| 硅基流動-DeepSeek-R1-Qwen-8B Cloud |
+ 10.15s | +75.57 | +13.4s | +398 | +