append instead of replace system msg

This commit is contained in:
Dhanji R. Prasanna
2025-11-29 16:13:00 +11:00
parent 81fd2ab92f
commit 8928fb92be

View File

@@ -103,7 +103,7 @@ use serde::{Deserialize, Serialize};
use std::time::Duration; use std::time::Duration;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use tokio_stream::wrappers::ReceiverStream; use tokio_stream::wrappers::ReceiverStream;
use tracing::{debug, error, warn}; use tracing::{debug, error};
use crate::{ use crate::{
CompletionChunk, CompletionRequest, CompletionResponse, CompletionStream, LLMProvider, Message, CompletionChunk, CompletionRequest, CompletionResponse, CompletionStream, LLMProvider, Message,
@@ -223,11 +223,13 @@ impl AnthropicProvider {
for message in messages { for message in messages {
match message.role { match message.role {
MessageRole::System => { MessageRole::System => {
if system_message.is_some() { if let Some(existing) = system_message {
warn!("Multiple system messages found, using the last one"); // Concatenate system messages instead of replacing
} system_message = Some(format!("{}\n\n{}", existing, message.content));
} else {
system_message = Some(message.content.clone()); system_message = Some(message.content.clone());
} }
}
MessageRole::User => { MessageRole::User => {
anthropic_messages.push(AnthropicMessage { anthropic_messages.push(AnthropicMessage {
role: "user".to_string(), role: "user".to_string(),