From 9e842b8ef32c44717d333fb378c1d6114404d15b Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Fri, 13 Mar 2026 19:07:56 +0100 Subject: [PATCH] Map missing model settings to OpenAI API params FrequencyPenalty, PresencePenalty, and ParallelToolCalls were present on ChatCompletionRequest but never forwarded in buildParams, so agent-level settings configured via functional options were silently ignored for the OpenAI provider. Signed-off-by: Bryan Frimin --- pkg/llm/openai/provider.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/llm/openai/provider.go b/pkg/llm/openai/provider.go index 5e33f480c..fbb26e5bc 100644 --- a/pkg/llm/openai/provider.go +++ b/pkg/llm/openai/provider.go @@ -140,6 +140,12 @@ func buildParams(req *llm.ChatCompletionRequest) openai.ChatCompletionNewParams if req.TopP != nil { params.TopP = param.NewOpt(*req.TopP) } + if req.FrequencyPenalty != nil { + params.FrequencyPenalty = param.NewOpt(*req.FrequencyPenalty) + } + if req.PresencePenalty != nil { + params.PresencePenalty = param.NewOpt(*req.PresencePenalty) + } if len(req.StopSequences) > 0 { params.Stop = openai.ChatCompletionNewParamsStopUnion{ OfStringArray: req.StopSequences, @@ -151,6 +157,9 @@ func buildParams(req *llm.ChatCompletionRequest) openai.ChatCompletionNewParams if req.ToolChoice != nil { params.ToolChoice = buildToolChoice(req.ToolChoice) } + if req.ParallelToolCalls != nil { + params.ParallelToolCalls = param.NewOpt(*req.ParallelToolCalls) + } if req.ResponseFormat != nil { params.ResponseFormat = buildResponseFormat(req.ResponseFormat) }