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="MaxTokens">The maximum number of tokens to generate.</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(
string Model,
IList<IMessageBase> Messages,
int MaxTokens,
bool Stream)
bool Stream,
string System
)
{
// Attention: The "required" modifier is not supported for [JsonExtensionData].
[JsonExtensionData]

View File

@ -27,18 +27,18 @@ public sealed class ProviderAnthropic() : BaseProvider(LLMProviders.ANTHROPIC, "
if(!requestedSecret.Success)
yield break;
// Prepare the system prompt:
var systemPrompt = new TextMessage
{
Role = "system",
Content = chatThread.PrepareSystemPrompt(settingsManager, chatThread),
};
// Parse the API parameters:
var apiParameters = this.ParseAdditionalApiParameters("system");
// 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:
var chatRequest = JsonSerializer.Serialize(new ChatRequest
@ -46,8 +46,9 @@ public sealed class ProviderAnthropic() : BaseProvider(LLMProviders.ANTHROPIC, "
Model = chatModel.Id,
// 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,
// Right now, we only support streaming completions: