use claudius::{
Anthropic, KnownModel, MessageCreateParams, MessageParam, MessageRole, Model, Result,
};
use futures::StreamExt;
use tokio::pin;
#[tokio::main]
async fn main() -> Result<()> {
let client = Anthropic::new(None)?;
let message = MessageParam::new_with_string(
"Hello, I'm a human. Can you tell me about yourself?".to_string(),
MessageRole::User,
);
let system_prompt = "You are Claude, an AI assistant made by Anthropic.".to_string();
let params = MessageCreateParams::new_streaming(
1000, vec![message],
Model::Known(KnownModel::Claude37SonnetLatest),
)
.with_system_string(system_prompt);
let stream = client.stream(params).await?;
pin!(stream);
println!("Streaming response:");
while let Some(event) = stream.next().await {
match event {
Ok(event) => {
println!("Received event: {:?}", event);
}
Err(e) => {
eprintln!("Error: {}", e);
}
}
}
Ok(())
}