From b2f723073617a47c156a60f853c04834b1c3f36f Mon Sep 17 00:00:00 2001 From: fwang2002 Date: Wed, 29 Apr 2026 20:44:27 +0800 Subject: [PATCH] fix(openai,openaicompat): apply `WithName` to provider lookup and `Name()` (#212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The openaicompat PrepareCallFunc looked up ProviderOptions using the hardcoded "openai-compat" key, so any name supplied via WithName was silently ignored — users could not key their per-call options under a custom provider name. Switch the lookup to model.Provider() so it matches whatever name was configured. Similarly, the openai provider's Name() method always returned the hardcoded "openai" constant, discarding the value passed to WithName. Return o.options.name instead so the configured name is reported consistently. Co-authored-by: wangfeng01 --- providers/openai/openai.go | 2 +- providers/openaicompat/language_model_hooks.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/providers/openai/openai.go b/providers/openai/openai.go index 51ebf4845ec9b6efeab86bb265c029ff39540447..29a9094261bc42116aebfc60346b3fad8131615b 100644 --- a/providers/openai/openai.go +++ b/providers/openai/openai.go @@ -200,5 +200,5 @@ func (o *provider) LanguageModel(_ context.Context, modelID string) (fantasy.Lan } func (o *provider) Name() string { - return Name + return o.options.name } diff --git a/providers/openaicompat/language_model_hooks.go b/providers/openaicompat/language_model_hooks.go index e6018b48917187a4bae6c1f81b74ae8cffaa1acf..d2e77af1b12ce3f43e2249faf3ab278611a5bad8 100644 --- a/providers/openaicompat/language_model_hooks.go +++ b/providers/openaicompat/language_model_hooks.go @@ -16,9 +16,9 @@ import ( const reasoningStartedCtx = "reasoning_started" // PrepareCallFunc prepares the call for the language model. -func PrepareCallFunc(_ fantasy.LanguageModel, params *openaisdk.ChatCompletionNewParams, call fantasy.Call) ([]fantasy.CallWarning, error) { +func PrepareCallFunc(model fantasy.LanguageModel, params *openaisdk.ChatCompletionNewParams, call fantasy.Call) ([]fantasy.CallWarning, error) { providerOptions := &ProviderOptions{} - if v, ok := call.ProviderOptions[Name]; ok { + if v, ok := call.ProviderOptions[model.Provider()]; ok { providerOptions, ok = v.(*ProviderOptions) if !ok { return nil, &fantasy.Error{Title: "invalid argument", Message: "openai-compat provider options should be *openaicompat.ProviderOptions"}