use anthropic_api::{messages::*, Credentials};
use std::io::{stdin, stdout, Write};
#[tokio::main]
async fn main() {
let credentials = Credentials::from_env();
let mut messages = vec![Message {
role: MessageRole::User,
content: MessageContent::Text(
"You are a helpful AI assistant. Please introduce yourself briefly.".to_string(),
),
}];
let response = MessagesBuilder::builder("claude-3-7-sonnet-20250219", messages.clone(), 2048)
.credentials(credentials.clone())
.create()
.await
.unwrap();
if let Some(content) = response.content.first() {
match content {
ResponseContentBlock::Text { text } => {
println!("Assistant: {}", text.trim());
messages.push(Message {
role: MessageRole::Assistant,
content: MessageContent::Text(text.clone()),
});
}
_ => {}
}
}
loop {
print!("User: ");
stdout().flush().unwrap();
let mut user_input = String::new();
stdin().read_line(&mut user_input).unwrap();
messages.push(Message {
role: MessageRole::User,
content: MessageContent::Text(user_input),
});
let response =
MessagesResponse::builder("claude-3-7-sonnet-20250219", messages.clone(), 1024)
.credentials(credentials.clone())
.create()
.await
.unwrap();
if let Some(content) = response.content.first() {
match content {
ResponseContentBlock::Text { text } => {
println!("Assistant: {}", text.trim());
messages.push(Message {
role: MessageRole::Assistant,
content: MessageContent::Text(text.clone()),
});
}
_ => {}
}
}
}
}