Files
baibot-withmcp/src/agent/provider/anthropic/utils.rs
Slavi Pantaleev a84135ff32 fmt
2025-05-10 11:47:50 +03:00

44 lines
1.4 KiB
Rust

use anthropic::types::{
ContentBlock, ImageSource, Message, MessagesRequest, MessagesRequestBuilder, Role,
};
use crate::conversation::llm::{
Author as LLMAuthor, Message as LLMMessage, MessageContent as LLMMessageContent,
};
pub(super) fn create_anthropic_message_request(llm_messages: Vec<LLMMessage>) -> MessagesRequest {
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;
}
};
let content = match &message.content {
LLMMessageContent::Text(text) => vec![ContentBlock::Text { text: text.clone() }],
LLMMessageContent::Image(image_details) => {
vec![ContentBlock::Image {
source: ImageSource::Base64 {
media_type: image_details.mime.to_string(),
data: crate::utils::base64::base64_encode(&image_details.data),
},
}]
}
};
let message = Message { role, content };
messages.push(message);
}
MessagesRequestBuilder::default()
.messages(messages)
.stream(false)
.build()
.expect("Failed to build messages request")
}