Fixed Anthropic provider

This commit is contained in:
Thorsten Sommer 2025-12-28 20:47:31 +01:00
parent 283a04f0b2
commit 422791e8b9
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 14 additions and 10 deletions

View File

@ -9,11 +9,14 @@ namespace AIStudio.Provider.Anthropic;
/// <param name="Messages">The chat messages.</param> /// <param name="Messages">The chat messages.</param>
/// <param name="MaxTokens">The maximum number of tokens to generate.</param> /// <param name="MaxTokens">The maximum number of tokens to generate.</param>
/// <param name="Stream">Whether to stream the chat completion.</param> /// <param name="Stream">Whether to stream the chat completion.</param>
/// <param name="System">The system prompt for the chat completion.</param>
public readonly record struct ChatRequest( public readonly record struct ChatRequest(
string Model, string Model,
IList<IMessageBase> Messages, IList<IMessageBase> Messages,
int MaxTokens, int MaxTokens,
bool Stream) bool Stream,
string System
)
{ {
// Attention: The "required" modifier is not supported for [JsonExtensionData]. // Attention: The "required" modifier is not supported for [JsonExtensionData].
[JsonExtensionData] [JsonExtensionData]

View File

@ -27,18 +27,18 @@ public sealed class ProviderAnthropic() : BaseProvider(LLMProviders.ANTHROPIC, "
if(!requestedSecret.Success) if(!requestedSecret.Success)
yield break; yield break;
// Prepare the system prompt:
var systemPrompt = new TextMessage
{
Role = "system",
Content = chatThread.PrepareSystemPrompt(settingsManager, chatThread),
};
// Parse the API parameters: // Parse the API parameters:
var apiParameters = this.ParseAdditionalApiParameters("system"); var apiParameters = this.ParseAdditionalApiParameters("system");
// Build the list of messages: // Build the list of messages:
var messages = await chatThread.Blocks.BuildMessagesUsingStandardRoles(); var messages = await chatThread.Blocks.BuildMessages(role => role switch
{
ChatRole.USER => "user",
ChatRole.AI => "assistant",
ChatRole.AGENT => "assistant",
_ => "user",
});
// Prepare the Anthropic HTTP chat request: // Prepare the Anthropic HTTP chat request:
var chatRequest = JsonSerializer.Serialize(new ChatRequest var chatRequest = JsonSerializer.Serialize(new ChatRequest
@ -46,8 +46,9 @@ public sealed class ProviderAnthropic() : BaseProvider(LLMProviders.ANTHROPIC, "
Model = chatModel.Id, Model = chatModel.Id,
// Build the messages: // Build the messages:
Messages = [systemPrompt, ..messages], Messages = [..messages],
System = chatThread.PrepareSystemPrompt(settingsManager, chatThread),
MaxTokens = apiParameters.TryGetValue("max_tokens", out var value) && value is int intValue ? intValue : 4_096, MaxTokens = apiParameters.TryGetValue("max_tokens", out var value) && value is int intValue ? intValue : 4_096,
// Right now, we only support streaming completions: // Right now, we only support streaming completions: