Skip to content

Commit c366592

Browse files
refactor(ark): use arkruntime.WithResponsesExtraFields
Remove local JSON merge; map WithExtraFields to SDK requestOption. Update replace pseudo-version for volcengine PR. Made-with: Cursor
1 parent 644616c commit c366592

7 files changed

Lines changed: 24 additions & 119 deletions

File tree

components/model/ark/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ require (
5050
gopkg.in/yaml.v3 v3.0.1 // indirect
5151
)
5252

53-
replace github.com/volcengine/volcengine-go-sdk => github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428150644-cf9db789ee32
53+
replace github.com/volcengine/volcengine-go-sdk => github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428151814-5ca1476bfea4

components/model/ark/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ github.com/goph/emperror v0.17.2/go.mod h1:+ZbQ+fUNO/6FNiUo0ujtMjhgad9Xa6fQL9KhH
6666
github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=
6767
github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k=
6868
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
69-
github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428150644-cf9db789ee32 h1:MmTysoe+4IMf8JpHkDZg2UF3sN5nt976sNLKXMoI6eg=
70-
github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428150644-cf9db789ee32/go.mod h1:oxoVo+A17kvkwPkIeIHPVLjSw7EQAm+l/Vau1YGHN+A=
69+
github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428151814-5ca1476bfea4 h1:dujwYehwF2FdlnMltvQqaAdLdXB56ZICvzAUPfKz0sc=
70+
github.com/jesse-engineer/volcengine-go-sdk v1.2.26-0.20260428151814-5ca1476bfea4/go.mod h1:oxoVo+A17kvkwPkIeIHPVLjSw7EQAm+l/Vau1YGHN+A=
7171
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
7272
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
7373
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=

components/model/ark/option.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ func WithEnableReasoningContentPassback(enable bool) model.Option {
158158
}
159159

160160
// WithExtraFields sets extra top-level JSON fields on the Responses API request body.
161-
// Merged after inputs are built and after multimodal preprocessing; extra keys override existing keys.
162-
// Requires volcengine-go-sdk with PreprocessResponsesRequest, CreateResponsesFromJSON, CreateResponsesStreamFromJSON.
161+
// Merged inside volcengine-go-sdk after the request is built and multimodal inputs are preprocessed;
162+
// keys in extraFields override existing keys. See arkruntime.WithResponsesExtraFields.
163163
func WithExtraFields(extraFields map[string]any) model.Option {
164164
return model.WrapImplSpecificOptFn(func(o *arkOptions) {
165165
o.extraFields = extraFields

components/model/ark/option_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,9 @@ func TestOptions(t *testing.T) {
4646
assert.Equal(t, cacheOpt, *opt.cache)
4747
assert.Equal(t, arkModel.ThinkingTypeEnabled, opt.thinking.Type)
4848
}
49+
50+
func TestWithExtraFieldsOption(t *testing.T) {
51+
fields := map[string]any{"k": "v"}
52+
opt := model.GetImplSpecificOptions(&arkOptions{}, WithExtraFields(fields))
53+
assert.Equal(t, fields, opt.extraFields)
54+
}

components/model/ark/responses_api.go

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import (
3535
arkModel "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
3636
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model/responses"
3737
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/utils"
38-
"github.com/volcengine/volcengine-go-sdk/volcengine"
3938
)
4039

4140
type Thinking = arkModel.Thinking
@@ -949,35 +948,31 @@ func (cm *ResponsesAPIChatModel) getOptions(opts []model.Option) (*model.Options
949948
return options, arkOpts, nil
950949
}
951950

951+
func extraFieldsToIface(m map[string]any) map[string]interface{} {
952+
if len(m) == 0 {
953+
return nil
954+
}
955+
out := make(map[string]interface{}, len(m))
956+
for k, v := range m {
957+
out[k] = v
958+
}
959+
return out
960+
}
961+
952962
func (cm *ResponsesAPIChatModel) invokeCreateResponses(ctx context.Context, responseReq *responses.ResponsesRequest, spec *arkOptions) (*responses.ResponseObject, error) {
953963
h := arkruntime.WithCustomHeaders(spec.customHeaders)
954964
if len(spec.extraFields) == 0 {
955965
return cm.client.CreateResponses(ctx, responseReq, h)
956966
}
957-
if err := cm.client.PreprocessResponsesRequest(ctx, responseReq); err != nil {
958-
return nil, err
959-
}
960-
raw, err := mergeResponsesRequestExtraJSON(responseReq, spec.extraFields)
961-
if err != nil {
962-
return nil, err
963-
}
964-
return cm.client.CreateResponsesFromJSON(ctx, responseReq.Model, raw, h)
967+
return cm.client.CreateResponses(ctx, responseReq, h, arkruntime.WithResponsesExtraFields(extraFieldsToIface(spec.extraFields)))
965968
}
966969

967970
func (cm *ResponsesAPIChatModel) invokeCreateResponsesStream(ctx context.Context, responseReq *responses.ResponsesRequest, spec *arkOptions) (*utils.ResponsesStreamReader, error) {
968971
h := arkruntime.WithCustomHeaders(spec.customHeaders)
969972
if len(spec.extraFields) == 0 {
970973
return cm.client.CreateResponsesStream(ctx, responseReq, h)
971974
}
972-
responseReq.Stream = volcengine.Bool(true)
973-
if err := cm.client.PreprocessResponsesRequest(ctx, responseReq); err != nil {
974-
return nil, err
975-
}
976-
raw, err := mergeResponsesRequestExtraJSON(responseReq, spec.extraFields)
977-
if err != nil {
978-
return nil, err
979-
}
980-
return cm.client.CreateResponsesStreamFromJSON(ctx, responseReq.Model, raw, h)
975+
return cm.client.CreateResponsesStream(ctx, responseReq, h, arkruntime.WithResponsesExtraFields(extraFieldsToIface(spec.extraFields)))
981976
}
982977

983978
func (cm *ResponsesAPIChatModel) toTools(tis []*schema.ToolInfo) ([]*responses.ResponsesTool, error) {

components/model/ark/responses_merge.go

Lines changed: 0 additions & 46 deletions
This file was deleted.

components/model/ark/responses_merge_test.go

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)