message_cli/
message_cli.rs1use anthropic_api::{messages::*, Credentials};
23use std::io::{stdin, stdout, Write};
24
25#[tokio::main]
26async fn main() {
27 let credentials = Credentials::from_env();
29
30 let mut messages = vec![Message {
31 role: MessageRole::User,
32 content: MessageContent::Text(
33 "You are a helpful AI assistant. Please introduce yourself briefly.".to_string(),
34 ),
35 }];
36
37 let response = MessagesAPI::builder("claude-3-7-sonnet-20250219", messages.clone(), 1024)
39 .credentials(credentials.clone())
40 .create()
41 .await
42 .unwrap();
43
44 if let Some(content) = response.content.first() {
46 match content {
47 ResponseContentBlock::Text { text } => {
48 println!("Assistant: {}", text.trim());
49 messages.push(Message {
50 role: MessageRole::Assistant,
51 content: MessageContent::Text(text.clone()),
52 });
53 }
54 _ => {}
55 }
56 }
57
58 loop {
60 print!("User: ");
61 stdout().flush().unwrap();
62
63 let mut user_input = String::new();
64 stdin().read_line(&mut user_input).unwrap();
65
66 messages.push(Message {
68 role: MessageRole::User,
69 content: MessageContent::Text(user_input),
70 });
71
72 let response = MessagesAPI::builder("claude-3-7-sonnet-20250219", messages.clone(), 1024)
74 .credentials(credentials.clone())
75 .create()
76 .await
77 .unwrap();
78
79 if let Some(content) = response.content.first() {
81 match content {
82 ResponseContentBlock::Text { text } => {
83 println!("Assistant: {}", text.trim());
84 messages.push(Message {
85 role: MessageRole::Assistant,
86 content: MessageContent::Text(text.clone()),
87 });
88 }
89 _ => {}
90 }
91 }
92 }
93}