请求别名不等于实际模型 ID

**请求里的模型名可能只是一个别名(路由名),provider 响应里返回的 `model` 才是实际执行的模型 ID。两者不同不是错误,不该去"修正"它 —— 该修的是观测层把实际 ID 丢掉了。**

一次实例

  • 请求 model: deepseek-chat,DeepSeek 返回 model: deepseek-v4-flash。
  • 最初被当成"请求名与返回名不一致 = bug"。用户的判断相反:实际返回的才是对的,模型 ID 就应该以返回为准。
  • 真正的缺陷在适配器:Pi 的 Responses adapter 解析了响应的 id / usage / status,唯独没保存 response.model → AssistantMessage.responseModel = undefined → Langfuse 回退显示请求别名,事实被抹掉。

结论

  • 观测数据要分开存两个字段:requestedModel(别名/路由名)与 responseModel(实际模型),而不是强行让它们相等。
  • 不要把返回的实际 ID 硬编码进适配器;provider 将来返回别的 ID 也要如实记录。
  • 这属于纯 observability 元数据修复,不改请求、不改推理行为。

相关