Merge pull request #1127 from iceljc/features/refine-vector-store
add reasoning settings
This commit is contained in:
commit
4e13310884
|
|
@ -46,7 +46,7 @@
|
|||
<PackageVersion Include="Whisper.net.Runtime" Version="1.8.1" />
|
||||
<PackageVersion Include="NCrontab" Version="3.3.3" />
|
||||
<PackageVersion Include="Azure.AI.OpenAI" Version="2.2.0-beta.5" />
|
||||
<PackageVersion Include="OpenAI" Version="2.2.0-beta.4" />
|
||||
<PackageVersion Include="OpenAI" Version="2.3.0" />
|
||||
<PackageVersion Include="MailKit" Version="4.11.0" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.8" />
|
||||
<PackageVersion Include="MySql.Data" Version="9.0.0" />
|
||||
|
|
|
|||
|
|
@ -47,7 +47,15 @@ public class LlmModelSetting
|
|||
/// </summary>
|
||||
public int Dimension { get; set; }
|
||||
|
||||
public LlmCost Cost { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Settings for reasoning model
|
||||
/// </summary>
|
||||
public ReasoningSetting? Reasoning { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Settings for llm cost
|
||||
/// </summary>
|
||||
public LlmCostSetting Cost { get; set; } = new();
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
|
|
@ -55,10 +63,16 @@ public class LlmModelSetting
|
|||
}
|
||||
}
|
||||
|
||||
public class ReasoningSetting
|
||||
{
|
||||
public float Temperature { get; set; } = 1.0f;
|
||||
public string? EffortLevel { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cost per 1K tokens
|
||||
/// </summary>
|
||||
public class LlmCost
|
||||
public class LlmCostSetting
|
||||
{
|
||||
// Input
|
||||
public float TextInputCost { get; set; } = 0f;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#pragma warning disable OPENAI001
|
||||
using BotSharp.Abstraction.Hooks;
|
||||
using BotSharp.Abstraction.MessageHub.Models;
|
||||
using BotSharp.Core.Infrastructures.Streams;
|
||||
|
|
@ -15,16 +16,6 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
protected string _model;
|
||||
private List<string> renderedInstructions = [];
|
||||
|
||||
private readonly Dictionary<string, float> _defaultTemperature = new()
|
||||
{
|
||||
{ "o3", 1.0f },
|
||||
{ "o3-mini", 1.0f },
|
||||
{ "o4-mini", 1.0f },
|
||||
{ "gpt-5", 1.0f },
|
||||
{ "gpt-5-mini", 1.0f },
|
||||
{ "gpt-5-nano", 1.0f }
|
||||
};
|
||||
|
||||
public virtual string Provider => "openai";
|
||||
public string Model => _model;
|
||||
|
||||
|
|
@ -493,22 +484,24 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
private ChatCompletionOptions InitChatCompletionOption(Agent agent)
|
||||
{
|
||||
var state = _services.GetRequiredService<IConversationStateService>();
|
||||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var settings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
ChatReasoningEffortLevel? reasoningEffortLevel = null;
|
||||
var temperature = float.Parse(state.GetState("temperature", "0.0"));
|
||||
if (_defaultTemperature.ContainsKey(_model))
|
||||
if (settings?.Reasoning != null)
|
||||
{
|
||||
temperature = _defaultTemperature[_model];
|
||||
temperature = settings.Reasoning.Temperature;
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel ?? string.Empty)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel ?? string.Empty);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
}
|
||||
|
||||
var maxTokens = int.TryParse(state.GetState("max_tokens"), out var tokens)
|
||||
? tokens
|
||||
: agent.LlmConfig?.MaxOutputTokens ?? LlmConstant.DEFAULT_MAX_OUTPUT_TOKEN;
|
||||
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel ?? string.Empty)
|
||||
.IfNullOrEmptyAs(LlmConstant.DEFAULT_REASONING_EFFORT_LEVEL);
|
||||
var reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
|
||||
return new ChatCompletionOptions()
|
||||
{
|
||||
Temperature = temperature,
|
||||
|
|
@ -519,14 +512,17 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
|
||||
private ChatReasoningEffortLevel? ParseReasoningEffortLevel(string? level)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(level) || !_defaultTemperature.ContainsKey(_model))
|
||||
if (string.IsNullOrWhiteSpace(level))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var effortLevel = ChatReasoningEffortLevel.Low;
|
||||
var effortLevel = new ChatReasoningEffortLevel("minimal");
|
||||
switch (level.ToLower())
|
||||
{
|
||||
case "low":
|
||||
effortLevel = ChatReasoningEffortLevel.Low;
|
||||
break;
|
||||
case "medium":
|
||||
effortLevel = ChatReasoningEffortLevel.Medium;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue