chore: initial commit of ai site platform

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
whm
2026-07-31 10:31:17 +08:00
commit 4ca82fb58a
203 changed files with 45745 additions and 0 deletions

45
ai-service/etc/README.md Normal file
View File

@@ -0,0 +1,45 @@
# AI / LLM 配置说明
供应商、模型列表、默认通道写在 **`ai-service/etc/llm.yaml`****不要写在 Python 代码里**。
密钥仍放项目根 **`.env`**`DEEPSEEK_API_KEY` 等),配置文件只引用环境变量名(`api_key_env`)。
## 文件
| 路径 | 作用 |
|------|------|
| `ai-service/etc/llm.yaml` | 供应商、模型、视觉默认、别名 |
| 项目根 `.env` | API Key、可选 `LLM_PROVIDER` / `VISION_*` 覆盖 |
| `AI_CONFIG_PATH` / `LLM_CONFIG_PATH` | 自定义配置文件绝对路径 |
Docker`docker-compose.yml``llm.yaml` 挂载到 `/app/etc/llm.yaml`
## 改配置后
```bash
./reload-config.sh ai
# 或
docker compose up -d --force-recreate ai
```
进程内配置有缓存;重启 `ai` 容器后生效。
## 增删供应商
`providers:` 下增加一段即可,例如:
```yaml
providers:
openai:
label: OpenAI
base_url: https://api.openai.com/v1
api_key_env: OPENAI_API_KEY
default_model: gpt-4o-mini
models:
- id: gpt-4o-mini
label: gpt-4o-mini
supports_vision: true
json_mode: true
```
并在 `.env` 增加 `OPENAI_API_KEY=...`,控制台「模型」列表会从 `/ai/api/v1/llm/providers` 自动带出。

88
ai-service/etc/llm.yaml Normal file
View File

@@ -0,0 +1,88 @@
# AI / LLM 供应商配置(独立文件,勿把密钥写进本文件)
# 密钥放项目根 .envDEEPSEEK_API_KEY / MINIMAX_API_KEY / DASHSCOPE_API_KEY
# 覆盖路径:环境变量 AI_CONFIG_PATH 或 LLM_CONFIG_PATH
# 改本文件后:./reload-config.sh ai
default_provider: deepseek
# 视觉通道(截图理解 / 还原度打分);未配密钥时自动跳过看图
vision:
provider: dashscope
model: qwen3.6-plus
# 别名 → 正式 provider id
aliases:
qwen: dashscope
aliyun: dashscope
tongyi: dashscope
# 文本模型别名(请求里写 qwen 时落到 dashscope
aliases:
qwen: dashscope
aliyun: dashscope
tongyi: dashscope
# 视觉模型名启发式(用于判断传入的 model 是否像视觉模型)
vision_model_hints:
- vl
- vision
- qwen3
- qwen-vl
- qwen-plus
- gpt-4o
- gemini
providers:
heuristic:
label: 本地启发式(不调大模型)
base_url: ""
api_key_env: ""
default_model: ""
models: []
supports_vision: false
json_mode: false
deepseek:
label: DeepSeek
base_url: https://api.deepseek.com/v1
api_key_env: DEEPSEEK_API_KEY
default_model: deepseek-chat
models:
- id: deepseek-chat
label: deepseek-chat
- id: deepseek-reasoner
label: deepseek-reasoner
supports_vision: false
json_mode: true
minimax:
label: MiniMax
base_url: https://api.minimaxi.com/v1
api_key_env: MINIMAX_API_KEY
default_model: MiniMax-Text-01
models:
- id: MiniMax-Text-01
label: MiniMax-Text-01
- id: MiniMax-M2.5
label: MiniMax-M2.5
- id: abab6.5s-chat
label: abab6.5s-chat
supports_vision: false
json_mode: false
dashscope:
label: 通义千问 (DashScope)
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
# 可用环境变量 DASHSCOPE_BASE_URL 覆盖 base_url
api_key_env: DASHSCOPE_API_KEY
default_model: qwen3.6-plus
models:
- id: qwen3.6-plus
label: qwen3.6-plus视觉
- id: qwen-vl-plus
label: qwen-vl-plus
- id: qwen-vl-max
label: qwen-vl-max
- id: qwen-plus
label: qwen-plus
supports_vision: true
json_mode: false