Files
ailine/docker/docker-compose.yml

111 lines
5.0 KiB
YAML
Raw Normal View History

services:
backend:
build:
2026-04-14 01:10:02 +08:00
context: .. # 构建上下文为项目根目录
2026-04-21 10:26:37 +08:00
dockerfile: docker/backend/Dockerfile
container_name: ai-backend
environment:
2026-04-21 22:07:20 +08:00
# =========================================================================
2026-04-21 22:32:42 +08:00
# ⭐ 敏感密钥配置 - 必须配置(本地:.env 文件 | CI/CDSecrets
2026-04-21 22:07:20 +08:00
# =========================================================================
- ZHIPUAI_API_KEY=${ZHIPUAI_API_KEY:?请配置 ZHIPUAI_API_KEY本地.env 文件 | CI/CDSecrets} # ⭐ 敏感密钥配置
- DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:?请配置 DEEPSEEK_API_KEY本地.env 文件 | CI/CDSecrets} # ⭐ 敏感密钥配置
- LLAMACPP_API_KEY=${LLAMACPP_API_KEY:?请配置 LLAMACPP_API_KEY本地.env 文件 | CI/CDSecrets} # ⭐ 敏感密钥配置
- SILICONFLOW_API_KEY=${SILICONFLOW_API_KEY:-} # 硅基流动API密钥可选本地服务故障时降级使用
2026-04-17 01:26:05 +08:00
2026-04-21 22:07:20 +08:00
# =========================================================================
# PostgreSQL 数据库配置
# =========================================================================
- DB_HOST=115.190.121.151
- DB_PORT=5432
- DB_USER=postgres
- DB_PASSWORD=${DB_PASSWORD:?请配置 DB_PASSWORD本地.env 文件 | CI/CDSecrets} # ⭐ 敏感密钥配置
- DB_NAME=langgraph_db
2026-04-21 22:07:20 +08:00
# =========================================================================
# Qdrant 向量数据库配置URL + API密钥 配对)
# =========================================================================
- QDRANT_URL=http://115.190.121.151:6333
2026-04-21 22:32:42 +08:00
- QDRANT_API_KEY=${QDRANT_API_KEY:?请配置 QDRANT_API_KEY本地.env 文件 | CI/CDSecrets} # ⭐ 敏感密钥配置
2026-04-21 18:41:14 +08:00
- QDRANT_COLLECTION_NAME=mem0_user_memories
2026-04-17 01:26:05 +08:00
2026-04-21 22:07:20 +08:00
# =========================================================================
# llama.cpp 服务配置URL + API密钥 配对)
# =========================================================================
# 主 LLM 服务 (Gemma-4-E2B GGUF) - Docker host 端口 18000
- VLLM_BASE_URL=http://host.docker.internal:18000/v1
# Embedding 服务 (Qwen3-Embedding-0.6B GGUF) - Docker host 端口 18001
- LLAMACPP_EMBEDDING_URL=http://host.docker.internal:18001/v1
# Reranker 服务 (bge-reranker-v2-m3) - Docker host 端口 18002
- LLAMACPP_RERANKER_URL=http://host.docker.internal:18002/v1
# =========================================================================
# RAG 索引构建配置(非敏感)
# =========================================================================
- 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
- RAG_STRATEGY=parent-child
- RAG_STORAGE_TYPE=postgres
# =========================================================================
# 日志调试配置(可通过 .env 覆盖)
# =========================================================================
- LOG_LEVEL=${LOG_LEVEL:-DEBUG}
- DEBUG=${DEBUG:-true}
- ENABLE_GRAPH_TRACE=${ENABLE_GRAPH_TRACE:-true}
2026-04-21 22:07:20 +08:00
# =========================================================================
# 应用行为配置
# =========================================================================
- BACKEND_PORT=8079
2026-04-21 22:07:20 +08:00
- MEMORY_SUMMARIZE_INTERVAL=${MEMORY_SUMMARIZE_INTERVAL:-10}
- FASTEMBED_CACHE_PATH=${FASTEMBED_CACHE_PATH:-/app/fastembed_cache}
2026-04-21 22:07:20 +08:00
# =========================================================================
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
# Tavily 搜索配置(可选,有 API Key 时优先使用)
# =========================================================================
- TAVILY_API_KEY=${TAVILY_API_KEY:-}
- TAVILY_MAX_RESULTS=${TAVILY_MAX_RESULTS:-5}
# =========================================================================
2026-04-16 00:31:33 +08:00
# 前端通信地址Docker 内部网络)
2026-04-21 22:07:20 +08:00
# =========================================================================
2026-04-21 10:26:37 +08:00
- API_URL=http://backend:8079/chat
2026-04-21 22:07:20 +08:00
volumes:
2026-04-14 01:10:02 +08:00
- ../data/user_docs:/app/data/user_docs # 挂载文档目录
- ../logs:/app/logs
networks:
- ai-network
2026-04-21 22:07:20 +08:00
# ⭐ 移除对 postgres 和 qdrant 的依赖(使用远程服务)
restart: unless-stopped
ports:
2026-04-21 10:26:37 +08:00
- "8079:8079"
frontend:
build:
context: ..
2026-04-21 10:26:37 +08:00
dockerfile: docker/frontend/Dockerfile
container_name: ai-frontend
environment:
2026-04-14 17:34:12 +08:00
# Docker 内部网络使用服务名 'backend' 解析后端服务
2026-04-21 10:26:37 +08:00
- API_URL=http://backend:8079/chat
2026-04-29 10:52:01 +08:00
# volumes:
# - ../frontend/src:/app/src # 挂载源代码目录,修改立即生效
ports:
2026-04-14 02:48:27 +08:00
- "8501:8501"
networks:
- ai-network
depends_on:
- backend
restart: unless-stopped
networks:
ai-network:
driver: bridge