1+ #pragma warning disable OPENAI001
12using BotSharp . Abstraction . Hooks ;
23using BotSharp . Abstraction . MessageHub . Models ;
34using BotSharp . Core . Infrastructures . Streams ;
@@ -15,16 +16,6 @@ public class ChatCompletionProvider : IChatCompletion
1516 protected string _model ;
1617 private List < string > renderedInstructions = [ ] ;
1718
18- private readonly Dictionary < string , float > _defaultTemperature = new ( )
19- {
20- { "o3" , 1.0f } ,
21- { "o3-mini" , 1.0f } ,
22- { "o4-mini" , 1.0f } ,
23- { "gpt-5" , 1.0f } ,
24- { "gpt-5-mini" , 1.0f } ,
25- { "gpt-5-nano" , 1.0f }
26- } ;
27-
2819 public virtual string Provider => "openai" ;
2920 public string Model => _model ;
3021
@@ -493,22 +484,24 @@ private string GetPrompt(IEnumerable<ChatMessage> messages, ChatCompletionOption
493484 private ChatCompletionOptions InitChatCompletionOption ( Agent agent )
494485 {
495486 var state = _services . GetRequiredService < IConversationStateService > ( ) ;
487+ var settingsService = _services . GetRequiredService < ILlmProviderService > ( ) ;
488+ var settings = settingsService . GetSetting ( Provider , _model ) ;
496489
490+ ChatReasoningEffortLevel ? reasoningEffortLevel = null ;
497491 var temperature = float . Parse ( state . GetState ( "temperature" , "0.0" ) ) ;
498- if ( _defaultTemperature . ContainsKey ( _model ) )
492+ if ( settings ? . Reasoning != null )
499493 {
500- temperature = _defaultTemperature [ _model ] ;
494+ temperature = settings . Reasoning . Temperature ;
495+ var level = state . GetState ( "reasoning_effort_level" )
496+ . IfNullOrEmptyAs ( agent ? . LlmConfig ? . ReasoningEffortLevel ?? string . Empty )
497+ . IfNullOrEmptyAs ( settings ? . Reasoning ? . EffortLevel ?? string . Empty ) ;
498+ reasoningEffortLevel = ParseReasoningEffortLevel ( level ) ;
501499 }
502500
503501 var maxTokens = int . TryParse ( state . GetState ( "max_tokens" ) , out var tokens )
504502 ? tokens
505503 : agent . LlmConfig ? . MaxOutputTokens ?? LlmConstant . DEFAULT_MAX_OUTPUT_TOKEN ;
506504
507- var level = state . GetState ( "reasoning_effort_level" )
508- . IfNullOrEmptyAs ( agent ? . LlmConfig ? . ReasoningEffortLevel ?? string . Empty )
509- . IfNullOrEmptyAs ( LlmConstant . DEFAULT_REASONING_EFFORT_LEVEL ) ;
510- var reasoningEffortLevel = ParseReasoningEffortLevel ( level ) ;
511-
512505 return new ChatCompletionOptions ( )
513506 {
514507 Temperature = temperature ,
@@ -519,14 +512,17 @@ private ChatCompletionOptions InitChatCompletionOption(Agent agent)
519512
520513 private ChatReasoningEffortLevel ? ParseReasoningEffortLevel ( string ? level )
521514 {
522- if ( string . IsNullOrWhiteSpace ( level ) || ! _defaultTemperature . ContainsKey ( _model ) )
515+ if ( string . IsNullOrWhiteSpace ( level ) )
523516 {
524517 return null ;
525518 }
526519
527- var effortLevel = ChatReasoningEffortLevel . Low ;
520+ var effortLevel = new ChatReasoningEffortLevel ( "minimal" ) ;
528521 switch ( level . ToLower ( ) )
529522 {
523+ case "low" :
524+ effortLevel = ChatReasoningEffortLevel . Low ;
525+ break ;
530526 case "medium" :
531527 effortLevel = ChatReasoningEffortLevel . Medium ;
532528 break ;
0 commit comments