@@ -145,9 +145,10 @@ func NewCompatibleEmbeddings(config Config, httpClient *http.Client) *OpenAI {
145145 }
146146}
147147
148- func modifyCompletionRequestWithRequest (params openai.ChatCompletionNewParams , internalRequest llm.CompletionRequest ) openai.ChatCompletionNewParams {
148+ func modifyCompletionRequestWithRequest (params openai.ChatCompletionNewParams , internalRequest llm.CompletionRequest , cfg llm. LanguageModelConfig ) openai.ChatCompletionNewParams {
149149 params .Messages = postsToChatCompletionMessages (internalRequest .Posts )
150- if internalRequest .Context .Tools != nil {
150+ // Only add tools if not explicitly disabled
151+ if ! cfg .ToolsDisabled && internalRequest .Context .Tools != nil {
151152 params .Tools = toolsToOpenAITools (internalRequest .Context .Tools .GetTools ())
152153 }
153154 return params
@@ -318,10 +319,10 @@ type ToolBufferElement struct {
318319 args strings.Builder
319320}
320321
321- func (s * OpenAI ) streamResultToChannels (params openai.ChatCompletionNewParams , llmContext * llm.Context , output chan <- llm.TextStreamEvent ) {
322+ func (s * OpenAI ) streamResultToChannels (params openai.ChatCompletionNewParams , llmContext * llm.Context , cfg llm. LanguageModelConfig , output chan <- llm.TextStreamEvent ) {
322323 // Route to Responses API or Completions API based on configuration
323324 if s .config .UseResponsesAPI {
324- s .streamResponsesAPIToChannels (params , llmContext , output )
325+ s .streamResponsesAPIToChannels (params , llmContext , cfg , output )
325326 } else {
326327 s .streamCompletionsAPIToChannels (params , llmContext , output )
327328 }
@@ -484,7 +485,7 @@ func (s *OpenAI) streamCompletionsAPIToChannels(params openai.ChatCompletionNewP
484485}
485486
486487// streamResponsesAPIToChannels uses the new Responses API for streaming
487- func (s * OpenAI ) streamResponsesAPIToChannels (params openai.ChatCompletionNewParams , llmContext * llm.Context , output chan <- llm.TextStreamEvent ) {
488+ func (s * OpenAI ) streamResponsesAPIToChannels (params openai.ChatCompletionNewParams , llmContext * llm.Context , cfg llm. LanguageModelConfig , output chan <- llm.TextStreamEvent ) {
488489 ctx , cancel := context .WithCancelCause (context .Background ())
489490 defer cancel (nil )
490491
@@ -510,7 +511,7 @@ func (s *OpenAI) streamResponsesAPIToChannels(params openai.ChatCompletionNewPar
510511 }()
511512
512513 // Convert ChatCompletionNewParams to ResponseNewParams
513- responseParams := s .convertToResponseParams (params , llmContext )
514+ responseParams := s .convertToResponseParams (params , llmContext , cfg )
514515
515516 // Create a streaming request
516517 stream := s .client .Responses .NewStreaming (ctx , responseParams )
@@ -843,7 +844,7 @@ func (s *OpenAI) streamResponsesAPIToChannels(params openai.ChatCompletionNewPar
843844
844845// convertToResponseParams converts ChatCompletionNewParams to ResponseNewParams
845846// This is a simplified conversion that handles the basic use cases
846- func (s * OpenAI ) convertToResponseParams (params openai.ChatCompletionNewParams , llmContext * llm.Context ) responses.ResponseNewParams {
847+ func (s * OpenAI ) convertToResponseParams (params openai.ChatCompletionNewParams , llmContext * llm.Context , cfg llm. LanguageModelConfig ) responses.ResponseNewParams {
847848 result := responses.ResponseNewParams {}
848849
849850 // Convert model - directly assign as it's the same type
@@ -988,8 +989,8 @@ func (s *OpenAI) convertToResponseParams(params openai.ChatCompletionNewParams,
988989 }
989990 }
990991
991- // Add native tools if enabled
992- if len (s .config .EnabledNativeTools ) > 0 {
992+ // Add native tools if not explicitly disabled
993+ if ! cfg . ToolsDisabled && len (s .config .EnabledNativeTools ) > 0 {
993994 for _ , nativeTool := range s .config .EnabledNativeTools {
994995 if nativeTool == "web_search" {
995996 // Add web search as a built-in tool
@@ -1026,11 +1027,11 @@ func (s *OpenAI) convertToResponseParams(params openai.ChatCompletionNewParams,
10261027 return result
10271028}
10281029
1029- func (s * OpenAI ) streamResult (params openai.ChatCompletionNewParams , llmContext * llm.Context ) (* llm.TextStreamResult , error ) {
1030+ func (s * OpenAI ) streamResult (params openai.ChatCompletionNewParams , llmContext * llm.Context , cfg llm. LanguageModelConfig ) (* llm.TextStreamResult , error ) {
10301031 eventStream := make (chan llm.TextStreamEvent )
10311032 go func () {
10321033 defer close (eventStream )
1033- s .streamResultToChannels (params , llmContext , eventStream )
1034+ s .streamResultToChannels (params , llmContext , cfg , eventStream )
10341035 }()
10351036
10361037 return & llm.TextStreamResult {Stream : eventStream }, nil
@@ -1101,16 +1102,17 @@ func getModelConstant(model string) shared.ChatModel {
11011102}
11021103
11031104func (s * OpenAI ) ChatCompletion (request llm.CompletionRequest , opts ... llm.LanguageModelOption ) (* llm.TextStreamResult , error ) {
1104- params := s .completionRequestFromConfig (s .createConfig (opts ))
1105- params = modifyCompletionRequestWithRequest (params , request )
1105+ cfg := s .createConfig (opts )
1106+ params := s .completionRequestFromConfig (cfg )
1107+ params = modifyCompletionRequestWithRequest (params , request , cfg )
11061108 params .StreamOptions .IncludeUsage = openai .Bool (true )
11071109
11081110 if s .config .SendUserID {
11091111 if request .Context .RequestingUser != nil {
11101112 params .User = openai .String (request .Context .RequestingUser .Id )
11111113 }
11121114 }
1113- return s .streamResult (params , request .Context )
1115+ return s .streamResult (params , request .Context , cfg )
11141116}
11151117
11161118func (s * OpenAI ) ChatCompletionNoStream (request llm.CompletionRequest , opts ... llm.LanguageModelOption ) (string , error ) {
0 commit comments