更新时间:2026-07-30 GMT+08:00
分享

自定义模型

码道CLI新增对接第三方大语言模型的能力。若您已购买华为云码道代码智能体专业版套餐,同时支持在控制台添加第三方大语言模型,具体请参见配置企业自定义模型

约束与限制

  • 接入第三方企业自定义模型仅支持OpenAI规范的Chat Completions API格式Anthropic规范的Messages API格式
  • 在控制台新建的自定义模型所有智能体均可调用,在客户端新建的自定义模型仅系统内置智能体、AgentTeam和自定义智能体可调用,智能问答无法调用。
  • 相同模型提供商和模型ID的模型仅允许添加一次。

前提条件

自定义模型配置文件

在码道CLI中,通过配置文件对自定义模型进行管理。在CLI/TUI模式下,不支持使用命令创建、修改或删除自定义模型,所有配置均需手动编辑文件。

自定义模型配置文件及其存放路径:“~/.codeartsdoer/codearts_cli.json”,“~”表示当前用户的主目录,Windows下等同于“C:\Users\用户名\”,macOS下等同于“/Users/用户名/”,Linux下等同于“/home/用户名/”

配置文件以provider为顶层键,每个提供商ID对应一个配置块。自定模型配置文件完整的结构如下:

{
  "provider": {
    "<提供商ID>": {
      "name": "<提供商显示名称>",
      "npm": "<SDK包名>",
      "api": "<提供商API地址>",
      "env": ["<环境变量名>", ...],
      "whitelist": ["<模型ID>", ...],
      "blacklist": ["<模型ID>", ...],
      "options": {
        "apiKey": "<API密钥>",
        "baseURL": "<API基础地址>",
        "enterpriseUrl": "<企业版URL>",
        "setCacheKey": true,
        "timeout": 300000,
        "chunkTimeout": 60000
      },
      "models": {
        "<模型ID>": {
          "id": "<模型API标识>",
          "name": "<显示名称>",
          "family": "<模型家族>",
          "reasoning": true,
          "attachment": true,
          "temperature": true,
          "tool_call": true,
          "limit": { "context": 128000, "input": 120000, "output": 8000 },
          "cost": {
            "input": 3.0,
            "output": 15.0,
            "cache_read": 0.5,
            "cache_write": 2.0,
            "context_over_200k": {
              "input": 6.0,
              "output": 30.0,
              "cache_read": 1.0,
              "cache_write": 4.0
            }
          },
          "modalities": {
            "input": ["text", "image", "pdf"],
            "output": ["text"]
          },
          "headers": { "X-Custom-Header": "value" },
          "status": "active",
          "provider": { "npm": "<SDK包名>", "api": "<API地址>" },
          "variants": { ... }
        }
      }
    }
  }
}

apiKey是您的核心资产,请不要轻易外泄。当您配置apiKey后,重启TUI/CLI,系统会自动对apiKey进行加密,后续配置文件中展示的就是密文。

提供商ID是配置文件中的顶层键名,用于标识模型来源。常见提供商ID,如表1所示。您也可以使用任意自定义字符串作为提供商ID(如my-server),只要对应模型支持OpenAI兼容的API格式即可。

表1 常见提供商ID

提供商ID

说明

openai

OpenAI

deepseek

DeepSeek

glm

glm

kimi

kimi

表2 自定义模型配置文件参数说明

字段名

类型

必填

说明

provider.<提供商ID>.name

字符串

提供商的显示名称,缺省时使用提供商ID。

provider.<提供商ID>.npm

字符串

SDK包名,缺省时默认为@ai-sdk/openai-compatible。

provider.<提供商ID>.api

字符串

提供商的API URL,与options.baseURL功能类似。

provider.<提供商ID>.env

字符串数组

环境变量名列表,码道CLI会依次读取这些环境变量作为API密钥的回退来源。

provider.<提供商ID>.whitelist

字符串数组

模型白名单,仅列表中的模型会被加载(对内置提供商可用来过滤不需要的模型)。

provider.<提供商ID>.blacklist

字符串数组

模型黑名单,列表中的模型不会被加载。

provider.<提供商ID>.options.apiKey

字符串

API密钥。首次加载时明文密钥会自动加密为enc:v1:格式并写回配置文件。

provider.<提供商ID>.options.baseURL

字符串

API基础地址,如https://your-server.com/v1。

provider.<提供商ID>.options.enterpriseUrl

字符串

GitHub Enterprise URL,仅用于Copilot提供商的企业版认证。

provider.<提供商ID>.options.setCacheKey

布尔值

是否启用promptCacheKey,默认为false。

provider.<提供商ID>.options.timeout

数字或false

请求超时时间,单位为毫秒,默认为300000(5分钟)。设置为false,可禁用超时。

provider.<提供商ID>.options.chunkTimeout

数字

SSE流式响应的块间超时时间,单位为毫秒。超过该时间未收到新数据块则中断请求。

provider.<提供商ID>.options.*

任意类型

options还支持任意额外字段(catchall),提供商的SDK实现可能读取这些自定义选项。

provider.<提供商ID>.models.<模型ID>.id

字符串

模型的API标识(实际发送给提供商的模型ID),缺省时使用配置键名。

provider.<提供商ID>.models.<模型ID>.name

字符串

码道CLI客户端显示的模型名称,缺省时使用配置键名。

provider.<提供商ID>.models.<模型ID>.family

字符串

模型家族名称(如gpt、claude),用于模型分组。

provider.<提供商ID>.models.<模型ID>.reasoning

布尔值

是否支持推理/思考能力。

provider.<提供商ID>.models.<模型ID>.attachment

布尔值

是否支持附件上传(图片、PDF等)。

provider.<提供商ID>.models.<模型ID>.temperature

布尔值

是否支持温度参数调节。

provider.<提供商ID>.models.<模型ID>.tool_call

布尔值

是否支持工具/函数调用,默认为true。

provider.<提供商ID>.models.<模型ID>.limit.context

数字

最大上下文窗口大小(Token)。

provider.<提供商ID>.models.<模型ID>.limit.input

数字

最大输入Token数。

provider.<提供商ID>.models.<模型ID>.limit.output

数字

最大输出Token数。

provider.<提供商ID>.models.<模型ID>.cost.input

数字

输入Token单价(每百万Token美元价格)。

provider.<提供商ID>.models.<模型ID>.cost.output

数字

输出Token单价。

provider.<提供商ID>.models.<模型ID>.cost.cache_read

数字

缓存读取单价。

provider.<提供商ID>.models.<模型ID>.cost.cache_write

数字

缓存写入单价。

provider.<提供商ID>.models.<模型ID>.cost.context_over_200k

对象

超过200K上下文时的替代定价,包含input、output、cache_read和cache_write。

provider.<提供商ID>.models.<模型ID>.modalities.input

字符串数组

输入支持的模态,包括text、audio、image、video、pdf。

provider.<提供商ID>.models.<模型ID>.modalities.output

字符串数组

输出支持的模态,包括text、audio、image、video、pdf。

provider.<提供商ID>.models.<模型ID>.headers

字符串键值对象

自定义HTTP请求头,随模型请求发送。

provider.<提供商ID>.models.<模型ID>.status

字符串

模型状态标记,包括active、beta、alpha、deprecated。

provider.<提供商ID>.models.<模型ID>.provider.npm

字符串

该模型使用的SDK包名,覆盖提供商级默认。

provider.<提供商ID>.models.<模型ID>.provider.api

字符串

该模型的API URL,覆盖提供商级默认。

provider.<提供商ID>.models.<模型ID>.variants

键值对象

变体配置。

自定义模型配置示例

以最小化配置为例,演示如何通过设置提供商IDAPI密钥来自定义模型。以Windows操作系统为例。

  1. 进入%USERPROFILE%/.codeartsdoer路径,找到并打开codearts_cli.json配置文件。
  2. 在codearts_cli.json配置文件中,增加provider内容。

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "deepseek": {
          "options": {
            "apiKey": "sk-***",
            "baseURL": "https://api.deepseek.com/v1"
          },
          "models": {
            "deepseek-chat": {
              "name": "DeepSeek Chat"
            },
            "deepseek-reasoner": {
              "name": "DeepSeek Reasoner",
              "reasoning": true
            }
          }
        }
      },
      "mcp": {},
      "lsp": false
    }

    其中,apiKey需要您到DeepSeek官网购买后填写。

  3. 保存文件并退出。
  4. 查看自定义模型是否添加成功。

    • 在CLI环境中执行以下命令,从回显的模型列表中检查是否包含自定义模型。
      codearts models
    • 在TUI环境中输入如下斜杠命令,进入模型选择页面确认是否存在自定义模型。
      /models

指定运行模型

在码道CLI中,您可以通过指定特定模型来运行您的任务。如下命令中,provider为模型的供应商,model为模型的名称。

  • TUI开发环境
    • 启动TUI开发模式时,可以通过执行如下命令,指定运行的模型。
      codearts --model provider/model
      或使用短参数
      codearts -m provider/model
    • 在TUI开发环境中,只需输入“/models”命令即可快速切换模型。
  • CLI开发环境
    codearts run --model provider/model "您的问题"

相关文档