Skip to content

Commit 4e13310

Browse files
authored
Merge pull request #1127 from iceljc/features/refine-vector-store
add reasoning settings
2 parents 4d13cd2 + d19a4e1 commit 4e13310

File tree

3 files changed

+32
-22
lines changed

3 files changed

+32
-22
lines changed

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<PackageVersion Include="Whisper.net.Runtime" Version="1.8.1" />
4747
<PackageVersion Include="NCrontab" Version="3.3.3" />
4848
<PackageVersion Include="Azure.AI.OpenAI" Version="2.2.0-beta.5" />
49-
<PackageVersion Include="OpenAI" Version="2.2.0-beta.4" />
49+
<PackageVersion Include="OpenAI" Version="2.3.0" />
5050
<PackageVersion Include="MailKit" Version="4.11.0" />
5151
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.8" />
5252
<PackageVersion Include="MySql.Data" Version="9.0.0" />

src/Infrastructure/BotSharp.Abstraction/MLTasks/Settings/LlmModelSetting.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,32 @@ public class LlmModelSetting
4747
/// </summary>
4848
public int Dimension { get; set; }
4949

50-
public LlmCost Cost { get; set; } = new();
50+
/// <summary>
51+
/// Settings for reasoning model
52+
/// </summary>
53+
public ReasoningSetting? Reasoning { get; set; }
54+
55+
/// <summary>
56+
/// Settings for llm cost
57+
/// </summary>
58+
public LlmCostSetting Cost { get; set; } = new();
5159

5260
public override string ToString()
5361
{
5462
return $"[{Type}] {Name} {Endpoint}";
5563
}
5664
}
5765

66+
public class ReasoningSetting
67+
{
68+
public float Temperature { get; set; } = 1.0f;
69+
public string? EffortLevel { get; set; }
70+
}
71+
5872
/// <summary>
5973
/// Cost per 1K tokens
6074
/// </summary>
61-
public class LlmCost
75+
public class LlmCostSetting
6276
{
6377
// Input
6478
public float TextInputCost { get; set; } = 0f;

src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#pragma warning disable OPENAI001
12
using BotSharp.Abstraction.Hooks;
23
using BotSharp.Abstraction.MessageHub.Models;
34
using 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

Comments
 (0)