use clust::Client;
use clust::messages::ClaudeModel;
use clust::messages::MaxTokens;
use clust::messages::Message;
use clust::messages::MessagesRequestBody;
use clust::messages::SystemPrompt;
use clap::Parser;
#[derive(Parser)]
struct Arguments {
#[arg(short, long)]
prompt: String,
#[arg(short, long)]
message: String,
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let arguments = Arguments::parse();
let client = Client::from_env()?;
let model = ClaudeModel::Claude3Haiku20240307;
let messages = vec![Message::user(
arguments.message,
)];
let max_tokens = MaxTokens::new(1024, model)?;
let system_prompt = SystemPrompt::new(arguments.prompt);
let request_body = MessagesRequestBody {
model,
messages,
max_tokens,
system: Some(system_prompt),
..Default::default()
};
let response = client
.create_a_message(request_body)
.await?;
println!("Result:\n{}", response);
println!(
"Content: {}",
response
.content
.flatten_into_text()?
);
Ok(())
}