2025-02-27 09:31:53 +02:00
|
|
|
use anthropic::types::{ContentBlock, Message, MessagesRequest, MessagesRequestBuilder, Role};
|
2024-09-12 13:44:06 +03:00
|
|
|
|
|
|
|
|
use crate::conversation::llm::{Author as LLMAuthor, Message as LLMMessage};
|
|
|
|
|
|
2025-02-27 09:31:53 +02:00
|
|
|
pub(super) fn create_anthropic_message_request(llm_messages: Vec<LLMMessage>) -> MessagesRequest {
|
2024-09-12 13:44:06 +03:00
|
|
|
let mut messages = vec![];
|
|
|
|
|
|
|
|
|
|
for message in llm_messages {
|
|
|
|
|
let role = match message.author {
|
|
|
|
|
LLMAuthor::User => Role::User,
|
|
|
|
|
LLMAuthor::Assistant => Role::Assistant,
|
|
|
|
|
LLMAuthor::Prompt => {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-27 09:31:53 +02:00
|
|
|
let content = vec![ContentBlock::Text {
|
2024-09-12 13:44:06 +03:00
|
|
|
text: message.message_text,
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
let message = Message { role, content };
|
|
|
|
|
|
|
|
|
|
messages.push(message);
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-27 09:31:53 +02:00
|
|
|
MessagesRequestBuilder::default()
|
|
|
|
|
.messages(messages)
|
|
|
|
|
.stream(false)
|
|
|
|
|
.build()
|
|
|
|
|
.expect("Failed to build messages request")
|
2024-09-12 13:44:06 +03:00
|
|
|
}
|