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 = MessagesBuilder::builder("claude-3-7-sonnet-20250219", messages.clone(), 2000)
39 .credentials(credentials.clone())
40 .thinking(Thinking {
41 thinking_type: ThinkingType::Enabled,
42 budget_tokens: 1000,
43 })
44 .create()
45 .await
46 .unwrap();
47
48 if let Some(content) = response.content.first() {
50 match content {
51 ResponseContentBlock::Text { text } => {
52 println!("Assistant: {}", text.trim());
53 messages.push(Message {
54 role: MessageRole::Assistant,
55 content: MessageContent::Text(text.clone()),
56 });
57 }
58 _ => {}
59 }
60 }
61
62 loop {
64 print!("User: ");
65 stdout().flush().unwrap();
66
67 let mut user_input = String::new();
68 stdin().read_line(&mut user_input).unwrap();
69
70 messages.push(Message {
72 role: MessageRole::User,
73 content: MessageContent::Text(user_input),
74 });
75
76 let response =
78 MessagesResponse::builder("claude-3-7-sonnet-20250219", messages.clone(), 1024)
79 .credentials(credentials.clone())
80 .create()
81 .await
82 .unwrap();
83
84 if let Some(content) = response.content.first() {
86 match content {
87 ResponseContentBlock::Text { text } => {
88 println!("Assistant: {}", text.trim());
89 messages.push(Message {
90 role: MessageRole::Assistant,
91 content: MessageContent::Text(text.clone()),
92 });
93 }
94 _ => {}
95 }
96 }
97 }
98}