parameters
This commit is contained in:
parent
9d6f5dc22d
commit
7b05535089
|
|
@ -35,6 +35,21 @@ public class AgentLlmConfig
|
|||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
public int? MaxOutputTokens { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Sampling temperature override for this agent. <c>null</c> (the default) inherits the
|
||||
/// conversation state / provider settings, so an unset field never changes global behavior.
|
||||
/// </summary>
|
||||
[JsonPropertyName("temperature")]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
public float? Temperature { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Nucleus sampling (top-p) override for this agent. <c>null</c> inherits the defaults.
|
||||
/// </summary>
|
||||
[JsonPropertyName("top_p")]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
public float? TopP { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reasoning effort level
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -565,23 +565,33 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var settings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
// Sampling: an explicit conversation state wins, then the agent's own override, then the
|
||||
// model's configured reasoning defaults. Unset everywhere keeps the historical 0.0 fallback.
|
||||
float? temperature = null;
|
||||
if (state.ContainsState("temperature") && float.TryParse(state.GetState("temperature"), out var stateTemperature))
|
||||
temperature = stateTemperature;
|
||||
temperature ??= agent?.LlmConfig?.Temperature;
|
||||
temperature ??= settings?.Reasoning?.Temperature;
|
||||
temperature ??= 0.2f;
|
||||
|
||||
float? topP = null;
|
||||
if (state.ContainsState("top_p") && float.TryParse(state.GetState("top_p"), out var stateTopP))
|
||||
topP = stateTopP;
|
||||
topP ??= agent?.LlmConfig?.TopP;
|
||||
|
||||
// Reasoning effort
|
||||
ChatReasoningEffortLevel? reasoningEffortLevel = null;
|
||||
float? temperature = float.Parse(state.GetState("temperature", "0.0"));
|
||||
if (settings?.Reasoning != null)
|
||||
{
|
||||
temperature = settings.Reasoning.Temperature;
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
}
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
|
||||
// Web search
|
||||
ChatWebSearchOptions? webSearchOptions = null;
|
||||
if (settings?.WebSearch != null)
|
||||
{
|
||||
temperature = null;
|
||||
topP = null;
|
||||
reasoningEffortLevel = null;
|
||||
webSearchOptions = new();
|
||||
}
|
||||
|
|
@ -593,6 +603,7 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
return new ChatCompletionOptions()
|
||||
{
|
||||
Temperature = temperature,
|
||||
TopP = topP,
|
||||
MaxOutputTokenCount = maxTokens,
|
||||
ReasoningEffortLevel = reasoningEffortLevel,
|
||||
WebSearchOptions = webSearchOptions
|
||||
|
|
|
|||
|
|
@ -691,23 +691,33 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var settings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
// Sampling: an explicit conversation state wins, then the agent's own override, then the
|
||||
// model's configured reasoning defaults. Unset everywhere keeps the historical 0.0 fallback.
|
||||
float? temperature = null;
|
||||
if (state.ContainsState("temperature") && float.TryParse(state.GetState("temperature"), out var stateTemperature))
|
||||
temperature = stateTemperature;
|
||||
temperature ??= agent?.LlmConfig?.Temperature;
|
||||
temperature ??= settings?.Reasoning?.Temperature;
|
||||
temperature ??= 0.2f;
|
||||
|
||||
float? topP = null;
|
||||
if (state.ContainsState("top_p") && float.TryParse(state.GetState("top_p"), out var stateTopP))
|
||||
topP = stateTopP;
|
||||
topP ??= agent?.LlmConfig?.TopP;
|
||||
|
||||
// Reasoning effort
|
||||
ChatReasoningEffortLevel? reasoningEffortLevel = null;
|
||||
float? temperature = float.Parse(state.GetState("temperature", "0.0"));
|
||||
if (settings?.Reasoning != null)
|
||||
{
|
||||
temperature = settings.Reasoning.Temperature;
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
}
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
|
||||
// Web search
|
||||
ChatWebSearchOptions? webSearchOptions = null;
|
||||
if (settings?.WebSearch != null)
|
||||
{
|
||||
temperature = null;
|
||||
topP = null;
|
||||
reasoningEffortLevel = null;
|
||||
webSearchOptions = new();
|
||||
}
|
||||
|
|
@ -719,6 +729,7 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
return new ChatCompletionOptions()
|
||||
{
|
||||
Temperature = temperature,
|
||||
TopP = topP,
|
||||
MaxOutputTokenCount = maxTokens,
|
||||
ReasoningEffortLevel = reasoningEffortLevel,
|
||||
WebSearchOptions = webSearchOptions
|
||||
|
|
|
|||
|
|
@ -534,23 +534,33 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
var settingsService = _services.GetRequiredService<ILlmProviderService>();
|
||||
var settings = settingsService.GetSetting(Provider, _model);
|
||||
|
||||
// Sampling: an explicit conversation state wins, then the agent's own override, then the
|
||||
// model's configured reasoning defaults. Unset everywhere keeps the historical 0.0 fallback.
|
||||
float? temperature = null;
|
||||
if (state.ContainsState("temperature") && float.TryParse(state.GetState("temperature"), out var stateTemperature))
|
||||
temperature = stateTemperature;
|
||||
temperature ??= agent?.LlmConfig?.Temperature;
|
||||
temperature ??= settings?.Reasoning?.Temperature;
|
||||
temperature ??= 0.2f;
|
||||
|
||||
float? topP = null;
|
||||
if (state.ContainsState("top_p") && float.TryParse(state.GetState("top_p"), out var stateTopP))
|
||||
topP = stateTopP;
|
||||
topP ??= agent?.LlmConfig?.TopP;
|
||||
|
||||
// Reasoning effort
|
||||
ChatReasoningEffortLevel? reasoningEffortLevel = null;
|
||||
float? temperature = float.Parse(state.GetState("temperature", "0.0"));
|
||||
if (settings?.Reasoning != null)
|
||||
{
|
||||
temperature = settings.Reasoning.Temperature;
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
}
|
||||
var level = state.GetState("reasoning_effort_level")
|
||||
.IfNullOrEmptyAs(agent?.LlmConfig?.ReasoningEffortLevel)
|
||||
.IfNullOrEmptyAs(settings?.Reasoning?.EffortLevel);
|
||||
reasoningEffortLevel = ParseReasoningEffortLevel(level);
|
||||
|
||||
// Web search
|
||||
ChatWebSearchOptions? webSearchOptions = null;
|
||||
if (settings?.WebSearch != null)
|
||||
{
|
||||
temperature = null;
|
||||
topP = null;
|
||||
reasoningEffortLevel = null;
|
||||
webSearchOptions = new();
|
||||
}
|
||||
|
|
@ -562,6 +572,7 @@ public class ChatCompletionProvider : IChatCompletion
|
|||
return new ChatCompletionOptions()
|
||||
{
|
||||
Temperature = temperature,
|
||||
TopP = topP,
|
||||
MaxOutputTokenCount = maxTokens,
|
||||
ReasoningEffortLevel = reasoningEffortLevel,
|
||||
WebSearchOptions = webSearchOptions
|
||||
|
|
|
|||
Loading…
Reference in a new issue