From 792d186f5720b55339baf89bda3b34bdddd8a9d8 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Thu, 30 Apr 2026 13:50:45 -0300 Subject: [PATCH] feat: add `ExtraBody` provider option to openai-compat (#220) This was already present to some other providers, like Vercel and OpenRouter. --- providers/openaicompat/language_model_hooks.go | 3 +++ providers/openaicompat/provider_options.go | 1 + 2 files changed, 4 insertions(+) diff --git a/providers/openaicompat/language_model_hooks.go b/providers/openaicompat/language_model_hooks.go index d2e77af1b12ce3f43e2249faf3ab278611a5bad8..5ffefb692a9478a50117d6aab98e01adb5c0d7fd 100644 --- a/providers/openaicompat/language_model_hooks.go +++ b/providers/openaicompat/language_model_hooks.go @@ -47,6 +47,9 @@ func PrepareCallFunc(model fantasy.LanguageModel, params *openaisdk.ChatCompleti if providerOptions.User != nil { params.User = param.NewOpt(*providerOptions.User) } + if len(providerOptions.ExtraBody) > 0 { + params.SetExtraFields(providerOptions.ExtraBody) + } return nil, nil } diff --git a/providers/openaicompat/provider_options.go b/providers/openaicompat/provider_options.go index 561860c32dabf176e820af5b3cc4980bf323abca..1c5662c3c90457004174e703d8da1e1b94c7eb93 100644 --- a/providers/openaicompat/provider_options.go +++ b/providers/openaicompat/provider_options.go @@ -28,6 +28,7 @@ func init() { type ProviderOptions struct { User *string `json:"user"` ReasoningEffort *openai.ReasoningEffort `json:"reasoning_effort"` + ExtraBody map[string]any `json:"extra_body,omitempty"` } // ReasoningData represents reasoning data for OpenAI-compatible provider.