推理后端与 API 兼容说明

Secbot 当前的 LLM 调用层只有两条真实执行路径:

  • ollama:调用 Ollama /api/chat
  • 其它 provider:走 OpenAI-compatible /v1/chat/completions

server/src/modules/system/llm-provider-registry.ts 维护 provider 清单、环境变量名、默认 Base URL 和配置状态。TUI 的 /model 对话框和 /api/system/config/* 接口都使用这套注册表。

仓库当前没有移动端或桌面端工程,模型配置只面向后端 API 与 terminal-ui

配置优先级

运行时解析顺序大致为:

  1. TUI/API 保存的持久化配置。
  2. 显式调用参数。
  3. 通用环境变量,如 LLM_PROVIDERLLM_MODELLLM_API_KEYLLM_BASE_URL
  4. provider 专用环境变量,如 DEEPSEEK_API_KEYOLLAMA_MODEL
  5. 代码默认值。

注意:SystemModule 会把部分配置写入 SQLite / config.yaml。如果你在 TUI 里保存过 provider 或 API Key,后续可能优先使用持久化值,而不是 .env

切换方式

  • TUI:输入 /model
  • API:调用 /api/system/config/provider/api/system/config/api-key/api/system/config/provider-settings
  • 环境变量:设置 LLM_PROVIDER 与对应 provider 的变量。
  • npm CLI:运行 secbot 后在 TUI 中配置。

常用配置

Ollama

LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2

DeepSeek

LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-your-api-key
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_BASE_URL=https://api.deepseek.com

OpenAI

LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-api-key
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com

自定义 OpenAI 兼容中转

LLM_PROVIDER=custom
CUSTOM_API_KEY=sk-your-api-key
CUSTOM_MODEL=your-model
CUSTOM_BASE_URL=https://your-gateway.example.com

OpenAICompatProvider 会自动请求:

<BASE_URL>/v1/chat/completions

因此 Base URL 通常填写网关根地址,不要重复写到 /v1/chat/completions

Provider 清单

ID名称API Key 环境变量Base URL 环境变量默认 Base URL
ollamaOllamaOLLAMA_BASE_URL
groqGroqGROQ_API_KEYGROQ_BASE_URLhttps://api.groq.com/openai
openrouterOpenRouterOPENROUTER_API_KEYOPENROUTER_BASE_URLhttps://openrouter.ai/api
deepseekDeepSeekDEEPSEEK_API_KEYDEEPSEEK_BASE_URLhttps://api.deepseek.com
openaiOpenAIOPENAI_API_KEYOPENAI_BASE_URLhttps://api.openai.com
anthropicAnthropic (Claude)ANTHROPIC_API_KEYANTHROPIC_BASE_URL
googleGoogle (Gemini)GOOGLE_API_KEYGOOGLE_BASE_URL
zhipu智谱 (GLM)ZHIPU_API_KEYZHIPU_BASE_URL
qwen通义千问 (Qwen)DASHSCOPE_API_KEYDASHSCOPE_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode
moonshot月之暗面 (Kimi)MOONSHOT_API_KEYMOONSHOT_BASE_URLhttps://api.moonshot.cn
baichuan百川BAICHUAN_API_KEYBAICHUAN_BASE_URL
yi零一万物 (Yi)YI_API_KEYYI_BASE_URL
scnet中国超算互联网 (SCNET)SCNET_API_KEYSCNET_BASE_URL
hunyuan腾讯混元HUNYUAN_API_KEYHUNYUAN_BASE_URL
doubao字节豆包 (火山方舟)DOUBAO_API_KEYDOUBAO_BASE_URL
spark讯飞星火SPARK_API_KEYSPARK_BASE_URL
wenxin百度文心 (千帆)WENXIN_API_KEYWENXIN_BASE_URL
stepfun阶跃星辰 (StepFun)STEPFUN_API_KEYSTEPFUN_BASE_URL
minimaxMiniMaxMINIMAX_API_KEYMINIMAX_BASE_URL
langboat澜舟 (孟子)LANGBOAT_API_KEYLANGBOAT_BASE_URL
mianbi面壁智能MIANBI_API_KEYMIANBI_BASE_URL
togetherTogether AITOGETHER_API_KEYTOGETHER_BASE_URLhttps://api.together.xyz
fireworksFireworks AIFIREWORKS_API_KEYFIREWORKS_BASE_URLhttps://api.fireworks.ai/inference
mistralMistral AIMISTRAL_API_KEYMISTRAL_BASE_URLhttps://api.mistral.ai
cohereCohereCOHERE_API_KEYCOHERE_BASE_URL
xaixAI (Grok)XAI_API_KEYXAI_BASE_URL
azure_openaiAzure OpenAIAZURE_OPENAI_API_KEYAZURE_OPENAI_BASE_URL
customOpenAI 兼容中转CUSTOM_API_KEYCUSTOM_BASE_URL

对于默认 Base URL 为“无”的 provider,当前代码仍会使用 OpenAI-compatible 调用方式。你需要提供一个兼容 /v1/chat/completions 的网关地址,否则很可能无法直接调用该厂商原生 API。

API 配置接口

  • GET /api/system/config
  • GET /api/system/config/providers
  • GET /api/system/config/provider/:providerId
  • POST /api/system/config/provider
  • POST /api/system/config/provider-settings
  • POST /api/system/config/api-key
  • GET /api/system/ollama-models

/api/system/ollama-models 当前是兼容占位实现:它不会实际访问 Ollama,也不会后台拉取模型。请用 ollama list 验证本地模型列表,用实际聊天验证模型可用性。

注意事项

  • apiKeybaseUrl 是后端 DTO 使用的 camelCase 字段名。
  • provider-settings 使用 base_url 字段名。
  • Azure OpenAI、Anthropic、Google 等如果使用原生 API 地址,当前 OpenAICompatProvider 不一定兼容;建议接入 OpenAI 兼容网关。
  • 厂商清单以 server/src/modules/system/llm-provider-registry.ts 为准。