From c93aafadbc036c7acd3cf1ad5731b667db9132ec Mon Sep 17 00:00:00 2001 From: Christopher Petito Date: Fri, 10 Oct 2025 17:41:26 +0200 Subject: [PATCH] provide structured output option to provider.New Signed-off-by: Christopher Petito --- pkg/model/provider/dmr/client.go | 1 + pkg/teamloader/teamloader.go | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/model/provider/dmr/client.go b/pkg/model/provider/dmr/client.go index 6fa7c3ad6..056f8e8d8 100644 --- a/pkg/model/provider/dmr/client.go +++ b/pkg/model/provider/dmr/client.go @@ -364,6 +364,7 @@ func (c *Client) CreateChatCompletionStream(ctx context.Context, messages []chat slog.Error("Failed to marshal DMR request to JSON", "error", err) } if c.modelOptions.StructuredOutput != nil { + slog.Debug("Adding structured output to DMR request", "structured_output", c.modelOptions.StructuredOutput) request.ResponseFormat = &openai.ChatCompletionResponseFormat{ Type: openai.ChatCompletionResponseFormatTypeJSONSchema, JSONSchema: &openai.ChatCompletionResponseFormatJSONSchema{ diff --git a/pkg/teamloader/teamloader.go b/pkg/teamloader/teamloader.go index 38a969b7a..d3bbf52c1 100644 --- a/pkg/teamloader/teamloader.go +++ b/pkg/teamloader/teamloader.go @@ -221,7 +221,12 @@ func getModelsForAgent(ctx context.Context, cfg *latest.Config, a *latest.AgentC return nil, fmt.Errorf("model '%s' not found in configuration", name) } - model, err := provider.New(ctx, &modelCfg, env, options.WithGateway(runtimeConfig.ModelsGateway)) + opts := []options.Opt{options.WithGateway(runtimeConfig.ModelsGateway)} + if a.StructuredOutput != nil { + opts = append(opts, options.WithStructuredOutput(a.StructuredOutput)) + } + + model, err := provider.New(ctx, &modelCfg, env, opts...) if err != nil { return nil, err }