Files
ailine/.env.docker
root b5c15ef445
All checks were successful
构建并部署 AI Agent 服务 / deploy (push) Successful in 12m9s
refactor: 单图方案重构 + 动态模型选择 + chat_services优化
## 核心改动

### 1. 单图方案重构
- 删除了多图(self.graphs),改为单图(self.graph)
- 新增 MainGraphState.current_model 字段用于运行时注入模型
- llm_call 节点改为动态选择模型(create_dynamic_llm_call_node)

### 2. chat_services 优化
- 添加 _cached_services 缓存,避免重复初始化
- 新增 get_cached_chat_services() 函数,用于单图注入
- 新增 _check_http_service_available() 统一HTTP探测逻辑
- 减少重复代码,LocalVLLMChatProvider和LocalSmallModelProvider共用探测方法

### 3. AIAgentService 重构
- initialize() 只构建一次图,传入 chat_services 字典
- 新增 _resolve_model() 模型回退逻辑
- 新增 _build_invocation() 统一构建调用参数
- process_message() 和 process_message_stream() 改为注入 current_model
- 流式处理代码拆分,增加可读性

### 4. 新增和删除文件
- 新增:backend/app/main_graph/main_graph_builder.py(图构建)
- 新增:backend/app/main_graph/subgraph_wrapper.py(子图封装)
- 新增:tools/test/test_tavily_search.py(测试)
- 删除:backend/app/main_graph/graph.py(旧图)
- 删除:backend/app/main_graph/utils/main_graph_builder.py(旧构建器)
- 删除:backend/app/main_graph/utils/__init__.py

### 5. 其他更新
- README.md:新增模型服务使用情况详解章节
- backend/app/model_services/__init__.py:新增 get_cached_chat_services 导出

## 方案优势

- 内存优化:N张图 → 1张图
- 灵活性:运行时动态选择模型,支持同会话不同模型
- 性能:模型服务缓存,初始化仅一次
- 可维护性:减少重复代码,统一HTTP探测逻辑
2026-05-05 17:30:55 +08:00

107 lines
4.3 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# =============================================================================
# Docker 部署环境配置文件
# 用法: cp .env.docker .env 然后修改配置值用于Docker部署
# =============================================================================
# -----------------------------------------------------------------------------
# AI 模型 API 密钥(必需 - 请填入真实值)
# -----------------------------------------------------------------------------
ZHIPUAI_API_KEY=你的智谱API密钥
DEEPSEEK_API_KEY=你的深度求索API密钥
LLAMACPP_API_KEY=huang1998
SILICONFLOW_API_KEY=你的硅基流动API密钥可选本地服务故障时降级使用
# -----------------------------------------------------------------------------
# llama.cpp 服务配置Docker环境下使用host.docker.internal访问宿主服务
# -----------------------------------------------------------------------------
# 主 LLM 服务 (Gemma-4-E2B GGUF) - 宿主端口 18000
VLLM_BASE_URL=http://host.docker.internal:18000/v1
# Embedding 服务 (Qwen3-Embedding-0.6B GGUF) - 宿主端口 18001
LLAMACPP_EMBEDDING_URL=http://host.docker.internal:18001/v1
# Reranker 服务 (bge-reranker-v2-m3) - 宿主端口 18002
LLAMACPP_RERANKER_URL=http://host.docker.internal:18002/v1
# -----------------------------------------------------------------------------
# Qdrant 向量数据库配置(使用远程服务)
# -----------------------------------------------------------------------------
QDRANT_URL=http://115.190.121.151:6333
QDRANT_API_KEY=你的QdrantAPI密钥
QDRANT_COLLECTION_NAME=mem0_user_memories
# -----------------------------------------------------------------------------
# PostgreSQL 数据库配置(使用远程服务)
# -----------------------------------------------------------------------------
DB_HOST=115.190.121.151
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=你的PostgreSQL密码
DB_NAME=langgraph_db
# 完整连接字符串(可选,优先使用分离配置)
DB_URI=postgresql://postgres:你的PostgreSQL密码@115.190.121.151:5432/langgraph_db?sslmode=disable
# -----------------------------------------------------------------------------
# 后端服务配置
# -----------------------------------------------------------------------------
BACKEND_PORT=8079
# -----------------------------------------------------------------------------
# 前端配置Docker内部通信
# -----------------------------------------------------------------------------
API_URL=http://backend:8079/chat
# -----------------------------------------------------------------------------
# 应用行为配置
# -----------------------------------------------------------------------------
# 记忆提取间隔:每 N 轮对话执行一次记忆提取
MEMORY_SUMMARIZE_INTERVAL=10
# 是否启用 Graph 执行追踪(调试用)
ENABLE_GRAPH_TRACE=true
# -----------------------------------------------------------------------------
# Tavily 搜索配置
# 免费额度1000次/天官网https://app.tavily.com
# -----------------------------------------------------------------------------
TAVILY_API_KEY=你的Tavily_API密钥
TAVILY_MAX_RESULTS=5
# -----------------------------------------------------------------------------
# 稀疏模型配置
# -----------------------------------------------------------------------------
FASTEMBED_CACHE_PATH=/app/fastembed_cache
# -----------------------------------------------------------------------------
# RAG 索引构建配置
# -----------------------------------------------------------------------------
# Qdrant 集合名称
RAG_COLLECTION_NAME=rag_documents
# 基础切分参数
RAG_CHUNK_SIZE=500
RAG_CHUNK_OVERLAP=50
# 父子块切分参数
RAG_PARENT_CHUNK_SIZE=1000
RAG_CHILD_CHUNK_SIZE=200
RAG_PARENT_CHUNK_OVERLAP=100
RAG_CHILD_CHUNK_OVERLAP=20
# 切分策略basic基础、semantic语义、parent-child父子块
RAG_STRATEGY=parent-child
# 存储类型postgresPostgreSQL、local本地文件
RAG_STORAGE_TYPE=postgres
# 文档加载器配置(可选)
# OCR 语言列表(逗号分隔)
RAG_OCR_LANGUAGES=chi_sim,eng
# 文档主语言列表(逗号分隔)
RAG_DOC_LANGUAGES=zh
# -----------------------------------------------------------------------------
# 日志配置
# -----------------------------------------------------------------------------
LOG_LEVEL=DEBUG
DEBUG=true