自定义模型调用错乱

例如我创建了A站的自定义模型,当切换到B站后,依旧使用的是A站的自定义模型,已经测试很多次,这个问题经常出现,往排查。

当前帖子里的信息还不足以形成可靠结论。为了进一步排查,请在本帖补充以下信息:

  1. TRAE IDE 版本
  2. 操作系统
  3. 详细的复现步骤(例如“A站”和“B站”具体是指不同的项目窗口还是工作区)
  4. 可用的相关截图或日志

是使用了同一个模型服务商或者中转站吗?

是的,自定义模型中,同一个模型的使用不同中转站,例如我先添加了A的gpt-5.6模型,又添加了B站的gpt-5.6模型,尽管我已经将模型切换到B站选项,但是还是会调用A站的(只调用先添加到) 同一个模型会出现这种情况,不同模型之间貌似是正常的

后端会按照provider+modelid选模型,如果modelid相同是不能重复添加的呀?

我刚才也提到这个问题,我通过自定义的方式加了智谱的codingplan和火山的codingplan的glm5.3flash,不管选哪个,他只扣codingplan的
AI分析是因为name/id 重复导致路由冲突

Trae Work 内部用 name/id 字段(格式为 {provider}//{model_id})作为模型路由的唯一标识。你的配置中存在 name/id 重复

冲突 1 — glm-5.3-flash:

  • Z-glm-5.3-flash(智谱 Coding)→ name/id = custom_openai_compatible//glm-5.3-flash
  • 火山coding-glm-5.3-flash(火山 Coding)→ name/id = custom_openai_compatible//glm-5.3-flash

两个模型的 name/id 完全相同,因为它们都是通过"自定义配置"方式添加的,provider 都是 custom_openai_compatible,model_id 都是 glm-5.3-flash。系统在路由时无法区分这两个配置,导致只走其中一个

如果后端是按照provider+modelid选模型,那我通过自定义模型添加不同codingplan中的相同模型,是不是就会调用错误?

你的模型id是一样的是吗?模型id重复会有校验逻辑不让通过的呀

对的对的,一个公司给的dsv4f,一个我私人的dsv4f,左右互搏,给我气笑了,只能把错误调用的那个先删掉

这个问题我之前也遇到过,根本原因在于 TraeCode 的自定义模型匹配逻辑是按模型名称(model name)而非配置标识(config key)来路由的

问题分析

当你添加了两个中转站,都配置了同名模型(比如都是 gpt-5.6),系统内部可能用"模型名称"作为唯一键来查找配置。当切换到 B 站后,查找 gpt-5.6 时命中了先添加的 A 站配置,导致实际请求发到了 A 站。

这本质上是一个 配置路由的确定性(deterministic routing)问题。从 API 设计角度看,正确的做法应该是用"provider + model"的复合键来做路由,而不是仅用 model name。

临时解决方案

在官方修复之前,可以尝试以下 workaround:

方案一:给不同中转站的模型取不同名称

在自定义模型配置中,将 A 站的命名为 gpt-5.6-a,B 站的命名为 gpt-5.6-b。实测这样能正确区分路由。

方案二:删掉不用的配置再切换

每次切换项目前,先删除当前不用的中转站配置,只保留目标中转站的配置。虽然麻烦但能保证路由正确。

排查建议

如果官方同学在排查,建议检查以下几点:

  1. 自定义模型配置的存储结构 —— 是否用 model name 作为 map key?
  2. 切换项目/工作区时,模型配置的加载和刷新逻辑
  3. 同名模型在不同 provider 下的去重与选择策略

从代码层面,建议实现一个类似这样的路由逻辑:

interface ModelConfig {
  providerId: string;
  modelName: string;
  endpoint: string;
  apiKey: string;
}

// 用复合键而非单一名称
function resolveModel(
  configs: ModelConfig[],
  providerId: string,
  modelName: string
): ModelConfig | undefined {
  return configs.find(
    c => c.providerId === providerId && c.modelName === modelName
  );
}

希望这个分析对排查有帮助。我之前也提交过类似的反馈,期待官方后续优化自定义模型的路由机制。

如果都是走自定义模型,显示名称设置为不一样的就可以通过校验,但是在实际调用的时候会出问题