diff --git a/.env.example b/.env.example index 84e8ed7..5fa95f1 100644 --- a/.env.example +++ b/.env.example @@ -2,12 +2,17 @@ LLM_BACKEND=cloud # 云端提供商:openai 或 anthropic -LLM_PROVIDER=openai +LLM_PROVIDER=anthropic -# 云端配置(OpenAI 兼容) +# Anthropic 兼容 API(MiniMax 等,优先使用) +ANTHROPIC_API_KEY=sk-xxxx +ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic + +# OpenAI 兼容 API(fallback,当 ANTHROPIC_* 未设置时使用) OPENAI_API_KEY=sk-xxxx OPENAI_BASE_URL=https://api.openai.com/v1 -LLM_MODEL=gpt-4o + +LLM_MODEL=MiniMax-M2.7 # 本地大语言模型(Ollama) LOCAL_LLM_MODEL=qwen2.5-coder:7b diff --git a/CLAUDE.md b/CLAUDE.md index 39a4868..bc6c48c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -223,6 +223,7 @@ validation_service/ (FastAPI, 端口 8001) — 不变 ## 已知注意点 +- **环境变量优先级**: `backend/llm.py` 使用 `load_dotenv(override=True)` 确保 `.env` 值**始终覆盖**系统环境变量。曾因系统级 `ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic` 覆盖 `.env` 中的 MiniMax URL,导致 401 认证失败。新增 LLM 相关环境变量时,必须在 `.env` 中显式设置 `ANTHROPIC_*` 变量(而非仅设 `OPENAI_*` fallback),否则残留的系统环境变量会污染请求目标。 - **Anthropic SDK**: 使用原始 `anthropic` 包(非 `langchain-anthropic`),因为需要直连 MiniMax 兼容端点。API Key 优先读 `ANTHROPIC_API_KEY`,fallback `OPENAI_API_KEY`。Anthropic SDK 会自动将 key 放入 `x-api-key` header。 - **MiniMax 模型名称**: `MiniMax-M2.7`(不是 `minimax-2.7`),大小写敏感。 - **Streamlit headless**: Windows 下必须设 `STREAMLIT_SERVER_HEADLESS=true` 跳过邮箱采集提示。 diff --git a/backend/llm.py b/backend/llm.py index fc4e960..de171fa 100644 --- a/backend/llm.py +++ b/backend/llm.py @@ -8,7 +8,7 @@ from dotenv import load_dotenv from backend.logger import get_logger -load_dotenv() +load_dotenv(override=True) _llm_log = get_logger("llm")