diff --git a/.env b/.env index c525021..ac0ae32 100644 --- a/.env +++ b/.env @@ -36,8 +36,8 @@ DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db? # ----------------------------------------------------------------------------- # 前端配置 # ----------------------------------------------------------------------------- -# 后端 API 地址(本地开发使用 8003 端口,避免与 vLLM 冲突) -API_URL=http://localhost:8003/chat +# 后端 API 地址(本地开发使用 8083 端口,避免与 llama.cpp 冲突) +API_URL=http://localhost:8083/chat # ----------------------------------------------------------------------------- # 应用行为配置 diff --git a/.env.docker b/.env.docker index cd5e5b7..170084a 100644 --- a/.env.docker +++ b/.env.docker @@ -1,15 +1,33 @@ # ============================================================================= # Docker Compose 服务器部署配置 -# 用法: cp .env.docker .env 然后修改 API Key +# 用法: cp .env.docker .env 然后填入 API Key # ============================================================================= -# ----------------------------------------------------------------------------- -# AI 模型 API 密钥(必需 - 请填入真实值) -# ----------------------------------------------------------------------------- -ZHIPUAI_API_KEY=your_api_key_here +# ⭐ 敏感密钥配置(必须在此配置) +# ============================================================================= +# AI 模型 API 密钥 +ZHIPUAI_API_KEY=your_zhipuai_api_key_here DEEPSEEK_API_KEY=your_deepseek_api_key_here + +# llama.cpp 服务认证 Token(与容器启动参数一致) LLAMACPP_API_KEY=token-abc123 +# ⭐ 日志调试配置(部署时可灵活调整) +# ============================================================================= +# 日志级别:DEBUG, INFO, WARNING, ERROR, CRITICAL +# 生产环境推荐 WARNING,排查问题时改为 DEBUG +LOG_LEVEL=WARNING + +# 是否启用 DEBUG 模式 +# true: 输出详细调试信息,包含完整的工具调用、数据库查询等 +# false: 仅输出关键信息,适合生产环境 +DEBUG=false + +# 是否启用 Graph 流转追踪 +# true: 输出每个节点的输入输出状态,便于调试工作流 +# false: 关闭追踪,减少日志量 +ENABLE_GRAPH_TRACE=false + # ----------------------------------------------------------------------------- # llama.cpp 服务配置 # ----------------------------------------------------------------------------- @@ -22,7 +40,6 @@ VLLM_EMBEDDING_URL=http://localhost:8082/v1 # ----------------------------------------------------------------------------- # Mem0 记忆层配置 # ----------------------------------------------------------------------------- -# ⭐ 注意:Mem0 现在直接复用主 LLM 实例,无需单独配置 # Qdrant 向量数据库(远程服务器上的独立容器) QDRANT_URL=http://115.190.121.151:6333 QDRANT_COLLECTION_NAME=mem0_user_memories @@ -37,16 +54,9 @@ DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db? # 前端配置 # ----------------------------------------------------------------------------- # Docker Compose 内部网络,使用服务名 'backend' -API_URL=http://backend:8001/chat +API_URL=http://backend:8083/chat # ----------------------------------------------------------------------------- # 应用行为配置 # ----------------------------------------------------------------------------- MEMORY_SUMMARIZE_INTERVAL=10 -ENABLE_GRAPH_TRACE=false - -# ----------------------------------------------------------------------------- -# 日志配置 -# ----------------------------------------------------------------------------- -LOG_LEVEL=WARNING -DEBUG=false \ No newline at end of file diff --git a/.env.example b/.env.example index 8c9b53e..8084cb6 100644 --- a/.env.example +++ b/.env.example @@ -1,69 +1,41 @@ # ============================================================================= # Agent1 环境配置模板 -# 用法: cp .env.example .env 然后修改配置值 +# 用法: cp .env.example .env 然后根据实际需求修改 # ============================================================================= -# ----------------------------------------------------------------------------- -# AI 模型 API 密钥(必需 - 请填入真实值) -# ----------------------------------------------------------------------------- -ZHIPUAI_API_KEY=your_api_key_here +# ⭐ 敏感密钥配置 +# ============================================================================= +# AI 模型 API 密钥 +ZHIPUAI_API_KEY=your_zhipuai_api_key_here DEEPSEEK_API_KEY=your_deepseek_api_key_here + +# llama.cpp 服务认证 Token(与容器启动参数一致) LLAMACPP_API_KEY=token-abc123 -# ----------------------------------------------------------------------------- -# llama.cpp 服务配置 -# ----------------------------------------------------------------------------- -# 主 LLM 服务 (Gemma-4-E2B GGUF) -# 本地开发: http://localhost:8081/v1 -# Docker 部署: 根据实际部署调整 -VLLM_BASE_URL=http://localhost:8081/v1 +# ⭐ 日志调试配置(本地开发可灵活调整) +# ============================================================================= +# 日志级别:DEBUG, INFO, WARNING, ERROR, CRITICAL +# 本地开发推荐 DEBUG,生产环境使用 WARNING +LOG_LEVEL=DEBUG -# Embedding 服务 (embeddinggemma-300M GGUF) -# 本地开发: http://localhost:8082/v1 -VLLM_EMBEDDING_URL=http://localhost:8082/v1 +# 是否启用 DEBUG 模式 +DEBUG=true -# ----------------------------------------------------------------------------- -# Mem0 记忆层配置 -# ----------------------------------------------------------------------------- -# ⭐ 注意:Mem0 现在直接复用主 LLM 实例,无需单独配置 -# Qdrant 向量数据库地址 -# 本地开发: http://localhost:6333 -# 远程服务器: http://115.190.121.151:6333 -# Docker Compose: http://qdrant:6333 -QDRANT_URL=http://115.190.121.151:6333 -QDRANT_COLLECTION_NAME=mem0_user_memories - -# ----------------------------------------------------------------------------- -# 数据库配置 -# ----------------------------------------------------------------------------- -# PostgreSQL 连接字符串 -# 本地开发: postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable -# 远程服务器: postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable -# Docker Compose: postgresql://postgres:mysecretpassword@postgres:5432/langgraph_db?sslmode=disable -DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable - -# ----------------------------------------------------------------------------- -# 前端配置 -# ----------------------------------------------------------------------------- -# 后端 API 地址 -# 本地开发: http://localhost:8001/chat -# Docker Compose: http://backend:8001/chat -API_URL=http://localhost:8001/chat - -# ----------------------------------------------------------------------------- -# 应用行为配置 -# ----------------------------------------------------------------------------- -# 记忆提取间隔:每 N 轮对话执行一次记忆提取(默认 10) -MEMORY_SUMMARIZE_INTERVAL=10 - -# 是否启用 Graph 执行追踪(调试用,默认 true) +# 是否启用 Graph 流转追踪 ENABLE_GRAPH_TRACE=true -# ----------------------------------------------------------------------------- -# 日志配置 -# ----------------------------------------------------------------------------- -# 日志级别: DEBUG, INFO, WARNING, ERROR, CRITICAL -LOG_LEVEL=INFO +# ⭐ 可选配置(如需覆盖 Dockerfile/docker-compose.yml 中的默认值) +# ============================================================================= +# 数据库连接(如需使用本地数据库而非远程服务器) +# DB_URI=postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable -# 是否启用调试模式(默认 false) -DEBUG=false +# Qdrant 地址(如需使用本地 Qdrant 而非远程服务器) +# QDRANT_URL=http://localhost:6333 +QDRANT_COLLECTION_NAME=mem0_user_memories + +# llama.cpp 服务地址(如端口有变化) +# VLLM_BASE_URL=http://localhost:8081/v1 +# VLLM_EMBEDDING_URL=http://localhost:8082/v1 + +# 前端 API 地址(本地开发时需显式配置) +API_URL=http://localhost:8083/chat \ No newline at end of file diff --git a/QUICKSTART.md b/QUICKSTART.md index f378ac8..aac929a 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -104,7 +104,7 @@ DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db? QDRANT_URL=http://115.190.121.151:6333 # 本地开发时,后端也在 localhost -API_URL=http://localhost:8003/chat +API_URL=http://localhost:8083/chat ``` #### 3. 启动服务 diff --git a/README.md b/README.md index c987327..f433e06 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ model_configs = { | `VLLM_EMBEDDING_URL` | Embedding 服务地址 | `http://localhost:8082/v1` | `http://localhost:8082/v1` | | `QDRANT_URL` | Qdrant 地址 | `http://115.190.121.151:6333` | `http://115.190.121.151:6333` | | `DB_URI` | PostgreSQL 连接字符串 | `postgresql://...@115.190.121.151:5432/...` | `postgresql://...@115.190.121.151:5432/...` | -| `API_URL` | 后端 API 地址 | `http://localhost:8003/chat` | (由 docker-compose.yml 注入) | +| `API_URL` | 后端 API 地址 | `http://localhost:8083/chat` | (由 docker-compose.yml 注入) | ### 配置示例 @@ -282,7 +282,7 @@ VLLM_BASE_URL=http://localhost:8081/v1 VLLM_EMBEDDING_URL=http://localhost:8082/v1 QDRANT_URL=http://115.190.121.151:6333 DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable -API_URL=http://localhost:8003/chat +API_URL=http://localhost:8083/chat ``` #### Docker 部署 (.env.docker) @@ -294,7 +294,7 @@ VLLM_BASE_URL=http://localhost:8081/v1 VLLM_EMBEDDING_URL=http://localhost:8082/v1 QDRANT_URL=http://115.190.121.151:6333 DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable -# API_URL 在 docker-compose.yml 中配置为 http://backend:8003/chat +# API_URL 在 docker-compose.yml 中配置为 http://backend:8083/chat ``` ### 注意事项 diff --git a/app/backend.py b/app/backend.py index fa7fdd5..1af9564 100644 --- a/app/backend.py +++ b/app/backend.py @@ -150,6 +150,6 @@ async def websocket_endpoint( if __name__ == "__main__": import uvicorn - # 使用环境变量或默认端口 8003(避免与 vLLM 的 8001 端口冲突) - port = int(os.getenv("BACKEND_PORT", "8003")) + # 使用环境变量或默认端口 8083(避免与 llama.cpp 的 8081 端口冲突) + port = int(os.getenv("BACKEND_PORT", "8083")) uvicorn.run(app, host="0.0.0.0", port=port) diff --git a/docker/Dockerfile.backend b/docker/Dockerfile.backend index 5d2c187..38cdda6 100644 --- a/docker/Dockerfile.backend +++ b/docker/Dockerfile.backend @@ -2,21 +2,46 @@ FROM python:3.11-slim WORKDIR /app -# 复制依赖文件并安装(利用 Docker 层缓存) +# ============================================================================= +# 非敏感环境变量(固化在镜像中,无需通过 .env 配置) +# ============================================================================= +ENV PYTHONPATH=/app + +# llama.cpp 服务配置(本地部署标准端口) +ENV VLLM_BASE_URL=http://localhost:8081/v1 +ENV VLLM_EMBEDDING_URL=http://localhost:8082/v1 + +# Mem0 记忆层配置 +ENV QDRANT_COLLECTION_NAME=mem0_user_memories + +# 应用行为配置(可通过 .env 覆盖) +ENV MEMORY_SUMMARIZE_INTERVAL=10 +ENV ENABLE_GRAPH_TRACE=false + +# 日志配置 +ENV LOG_LEVEL=WARNING +ENV DEBUG=false + +# ============================================================================= +# 安装依赖 +# ============================================================================= COPY requirement.txt . RUN pip install --no-cache-dir -r requirement.txt +# ============================================================================= # 复制项目代码 +# ============================================================================= COPY app/ ./app/ COPY frontend/ ./frontend/ COPY data/ ./data/ COPY scripts/ ./scripts/ -# 设置 PYTHONPATH 确保模块能被找到 -ENV PYTHONPATH=/app - -# 暴露端口(文档用途) -EXPOSE 8001 +# ============================================================================= +# 暴露端口 +# ============================================================================= +EXPOSE 8083 +# ============================================================================= # 启动命令 -CMD ["python", "app/backend.py"] +# ============================================================================= +CMD ["python", "app/backend.py"] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 9e0fb44..3b8ab32 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,14 +8,25 @@ services: dockerfile: docker/Dockerfile.backend container_name: ai-backend environment: + # ⭐ 敏感密钥:通过 .env 注入 - ZHIPUAI_API_KEY=${ZHIPUAI_API_KEY} - - VLLM_LOCAL_KEY=${VLLM_LOCAL_KEY} - # ⭐ 使用远程服务器地址 + - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} + - LLAMACPP_API_KEY=${LLAMACPP_API_KEY} + + # ⭐ 日志调试配置:通过 .env 注入(支持灵活调整) + - LOG_LEVEL=${LOG_LEVEL:-WARNING} + - DEBUG=${DEBUG:-false} + - ENABLE_GRAPH_TRACE=${ENABLE_GRAPH_TRACE:-false} + + # ⭐ 基础设施配置:固化在 compose 文件中 + # PostgreSQL 连接(远程服务器) - DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable + + # Qdrant 向量数据库(远程服务器) - QDRANT_URL=http://115.190.121.151:6333 - - QDRANT_COLLECTION_NAME=user_memories - - EMBEDDING_MODEL=text-embedding-3-small - - MEMORY_SUMMARIZE_INTERVAL=${MEMORY_SUMMARIZE_INTERVAL:-10} + + # 前端通信地址(Docker 内部网络) + - API_URL=http://backend:8083/chat volumes: - ../data/user_docs:/app/data/user_docs # 挂载文档目录 - ../logs:/app/logs @@ -24,7 +35,7 @@ services: # ⭐ 移除对 postgres 和 qdrant 的依赖 restart: unless-stopped ports: - - "8001:8001" + - "8083:8083" frontend: build: @@ -33,7 +44,7 @@ services: container_name: ai-frontend environment: # Docker 内部网络使用服务名 'backend' 解析后端服务 - - API_URL=http://backend:8001/chat + - API_URL=http://backend:8083/chat ports: - "8501:8501" networks: diff --git a/scripts/start.sh b/scripts/start.sh index c826917..d3387d2 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -133,7 +133,7 @@ check_config() { echo "" echo "🔌 检查端口占用..." - for port in 8001 8501; do + for port in 8081 8082 8083 8501; do if lsof -i :$port &> /dev/null; then check_warn "端口 $port 已被占用" else @@ -280,7 +280,7 @@ start_embedding() { # 启动 Python 服务 # ============================================================================= start_backend() { - echo -e "\n${BLUE}🚀 启动后端服务 (端口 8003)...${NC}" + echo -e "\n${BLUE}🚀 启动后端服务 (端口 8083)...${NC}" cd "$PROJECT_DIR" # 加载 .env 文件中的环境变量 @@ -289,7 +289,7 @@ start_backend() { set +a export PYTHONPATH="$PROJECT_DIR" - export BACKEND_PORT=8003 + export BACKEND_PORT=8083 python app/backend.py & BACKEND_PID=$! echo -e "${GREEN}✓ 后端服务已启动 (PID: $BACKEND_PID)${NC}"