From ddf35cd3dfd3884696f72253985b9eeceeb79985 Mon Sep 17 00:00:00 2001 From: dd <1553722928@qq.com> Date: Thu, 6 Aug 2026 17:18:48 +0800 Subject: [PATCH] fix(ark): expose Responses API model name on messages --- components/model/ark/responses_api.go | 2 + components/model/ark/responses_api_test.go | 55 ++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/components/model/ark/responses_api.go b/components/model/ark/responses_api.go index d7addc33a..2afed2060 100644 --- a/components/model/ark/responses_api.go +++ b/components/model/ark/responses_api.go @@ -998,6 +998,7 @@ func (cm *ResponsesAPIChatModel) toOutputMessage(resp *responses.ResponseObject, } setContextID(msg, resp.Id) setResponseID(msg, resp.Id) + setModelName(msg, resp.Model) if resp.ServiceTier != nil { setServiceTier(msg, resp.ServiceTier.String()) @@ -1257,6 +1258,7 @@ func (cm *ResponsesAPIChatModel) setStreamChunkDefaultExtra(msg *schema.Message, } setContextID(msg, object.Id) setResponseID(msg, object.Id) + setModelName(msg, object.Model) if object.ServiceTier != nil { setServiceTier(msg, object.ServiceTier.String()) } diff --git a/components/model/ark/responses_api_test.go b/components/model/ark/responses_api_test.go index e09a1f73a..7b4d27b8e 100644 --- a/components/model/ark/responses_api_test.go +++ b/components/model/ark/responses_api_test.go @@ -75,6 +75,61 @@ func TestResponsesAPIChatModelGenerate(t *testing.T) { }) } +func TestResponsesAPIChatModelPreservesModelName(t *testing.T) { + const modelName = "doubao-seed-2-0-lite" + + cm := &ResponsesAPIChatModel{} + + t.Run("non-streaming response", func(t *testing.T) { + msg, err := cm.toOutputMessage(&responses.ResponseObject{ + Model: modelName, + Status: responses.ResponseStatus_completed, + Usage: &responses.Usage{}, + Output: []*responses.OutputItem{ + { + Union: &responses.OutputItem_OutputMessage{ + OutputMessage: &responses.ItemOutputMessage{ + Content: []*responses.OutputContentItem{ + { + Union: &responses.OutputContentItem_Text{ + Text: &responses.OutputContentItemText{Text: "hello"}, + }, + }, + }, + }, + }, + }, + }, + }, nil) + assert.NoError(t, err) + + name, ok := GetModelName(msg) + assert.True(t, ok) + assert.Equal(t, modelName, name) + }) + + t.Run("concatenated streaming response", func(t *testing.T) { + metadataMsg := &schema.Message{Role: schema.Assistant} + cm.setStreamChunkDefaultExtra(metadataMsg, &responses.ResponseObject{ + Model: modelName, + }, &cacheConfig{}) + + textMsg := &schema.Message{ + Role: schema.Assistant, + Content: "hello", + } + msg, err := schema.ConcatMessages([]*schema.Message{ + metadataMsg, + textMsg, + }) + assert.NoError(t, err) + + name, ok := GetModelName(msg) + assert.True(t, ok) + assert.Equal(t, modelName, name) + }) +} + func TestResponsesAPIChatModelStream(t *testing.T) { PatchConvey("test Stream", t, func() { ctx := context.Background()