Skip to content

设置 API

基础路径:/api/v1/settings

简介

设置 API 用于管理应用配置:LLM 提供商选择、模型参数、各提供商(OpenAI、Anthropic、阿里云、火山引擎、Ollama)的 API 密钥、嵌入/重排序模型及其他系统设置。配置值由环境变量与数据库覆盖合并而成;API 密钥在响应中会被脱敏显示。

端点概览

方法路径说明
GET/settings获取全部设置
PUT/settings更新设置(部分更新)
GET/settings/models按提供商列出可用模型
POST/settings/test-connection测试 LLM 提供商连接
GET/settings/health健康检查

GET /api/v1/settings

说明: 返回合并后的设置(数据库覆盖 .env)。API 密钥会被脱敏(如 sk-12***abcd)。

响应: ApiResponse[SettingsSchema]

SettingsSchema 字段

字段类型说明
llm_providerstring默认 LLM 提供商(openaianthropicaliyunvolcengineollamamock
llm_modelstring默认模型(覆盖提供商默认值)
llm_temperaturefloat温度(0.0–2.0)
llm_max_tokensint最大 token 数
openai_api_keystringOpenAI API 密钥(脱敏)
openai_modelstringOpenAI 模型
anthropic_api_keystringAnthropic API 密钥(脱敏)
anthropic_modelstringAnthropic 模型
aliyun_api_keystring阿里云 API 密钥(脱敏)
aliyun_base_urlstring阿里云 base URL
aliyun_modelstring阿里云模型
volcengine_api_keystring火山引擎 API 密钥(脱敏)
volcengine_base_urlstring火山引擎 base URL
volcengine_modelstring火山引擎模型
ollama_base_urlstringOllama base URL
ollama_modelstringOllama 模型
embedding_modelstring嵌入模型名称
reranker_modelstring重排序模型名称
data_dirstring数据目录路径
cuda_visible_devicesstringCUDA 设备 ID
semantic_scholar_api_keystringSemantic Scholar API 密钥(脱敏)
unpaywall_emailstringUnpaywall 邮箱

获取设置示例

bash
curl -X GET "http://localhost:8000/api/v1/settings"
json
{
  "code": 200,
  "message": "success",
  "data": {
    "llm_provider": "openai",
    "llm_model": "gpt-4o-mini",
    "llm_temperature": 0.7,
    "llm_max_tokens": 4096,
    "openai_api_key": "sk-12***abcd",
    "openai_model": "gpt-4o-mini",
    "anthropic_api_key": "",
    "anthropic_model": "",
    "aliyun_api_key": "",
    "aliyun_base_url": "",
    "aliyun_model": "",
    "volcengine_api_key": "",
    "volcengine_base_url": "",
    "volcengine_model": "",
    "ollama_base_url": "http://localhost:11434",
    "ollama_model": "",
    "embedding_model": "BAAI/bge-m3",
    "reranker_model": "",
    "data_dir": "/data0/djx/omelette",
    "cuda_visible_devices": "",
    "semantic_scholar_api_key": "",
    "unpaywall_email": ""
  }
}

PUT /api/v1/settings

说明: 更新用户可配置的设置。仅非空字段会被应用。包含 *** 的脱敏 API 密钥会被跳过,避免覆盖真实密钥。

请求体: SettingsUpdateSchema(部分更新,所有字段可选)

字段类型约束
llm_providerstring
llm_modelstring
llm_temperaturefloat0.0–2.0
llm_max_tokensint1–128000
openai_api_keystring
openai_modelstring
anthropic_api_keystring
anthropic_modelstring
aliyun_api_keystring
aliyun_base_urlstring
aliyun_modelstring
volcengine_api_keystring
volcengine_base_urlstring
volcengine_modelstring
ollama_base_urlstring
ollama_modelstring

响应: ApiResponse[SettingsSchema](更新后的合并设置)

更新设置示例

bash
curl -X PUT "http://localhost:8000/api/v1/settings" \
  -H "Content-Type: application/json" \
  -d '{"llm_provider": "openai", "llm_model": "gpt-4o-mini"}'

GET /api/v1/settings/models

说明: 返回可用的 LLM 提供商及其模型列表。

响应: ApiResponse[list[ProviderModelInfo]]

ProviderModelInfo 字段

字段类型说明
providerstring提供商 ID
display_namestring显示名称
modelsstring[]模型 ID 列表
requires_api_keybool是否需要 API 密钥
requires_base_urlbool是否可配置 base URL
default_base_urlstring默认 base URL(若适用)

模型列表示例

bash
curl -X GET "http://localhost:8000/api/v1/settings/models"
json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "provider": "openai",
      "display_name": "OpenAI",
      "models": ["gpt-4o", "gpt-4o-mini", "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", "o3-mini"],
      "requires_api_key": true,
      "requires_base_url": false,
      "default_base_url": ""
    },
    {
      "provider": "ollama",
      "display_name": "Ollama (本地)",
      "models": ["llama3", "llama3.1", "mistral", "qwen2", "deepseek-r1"],
      "requires_api_key": false,
      "requires_base_url": true,
      "default_base_url": "http://localhost:11434"
    }
  ]
}

POST /api/v1/settings/test-connection

说明: 使用当前 LLM 配置发送简单提示进行连接测试。使用数据库中的合并配置(无请求体)。

响应: ApiResponse[dict]

字段类型说明
successbool测试是否成功
responsestringLLM 响应前 200 字符(成功时)
errorstring错误信息(失败时)

连接测试示例

bash
curl -X POST "http://localhost:8000/api/v1/settings/test-connection"

成功:

json
{
  "code": 200,
  "message": "success",
  "data": {
    "success": true,
    "response": "OK."
  }
}

失败:

json
{
  "code": 500,
  "message": "Connection test failed",
  "data": {
    "success": false,
    "error": "Invalid API key"
  }
}

GET /api/v1/settings/health

说明: 简单健康检查端点。

响应: ApiResponse[dict]

字段类型说明
statusstring"healthy"
versionstring应用版本

健康检查示例

bash
curl -X GET "http://localhost:8000/api/v1/settings/health"
json
{
  "code": 200,
  "message": "success",
  "data": {
    "status": "healthy",
    "version": "0.1.0"
  }
}

错误码

错误码说明
200成功
400请求错误(如温度范围无效)
422校验错误(请求体无效)
500服务端错误(如连接测试失败)

Released under the MIT License.