use std::io::Write; use openai_http_client::{ api::create_chat_completion::CreateChatCompletionRequest, types::Message, Client, }; #[tokio::main] async fn main() -> Result<(), Box> { let api_key = std::env::var("OPENAI_API_KEY")?; let openai = Client::new(&api_key); let mut context = vec![ Message::new( "system", "The following is a conversation with an AI assistant.", ), Message::new( "system", "The assistant is helpful, creative, clever, and very friendly.", ), Message::new("user", "Hello, how are you?"), Message::new( "assistant", "My name is Agent, I am an AI. How can I help you today?", ), ]; loop { print!("User: "); let _ = std::io::stdout().flush(); let mut user_content = String::new(); if let Err(e) = std::io::stdin().read_line(&mut user_content) { eprintln!("Error: {}", e); break; } context.push(Message::new("user", &user_content)); let req = CreateChatCompletionRequest::new(&context); let resp = openai.send(req).await?; let message = &resp.choices[0].message; println!("Agent: {}", message.content); if user_content.to_lowercase().starts_with("bye") { break; } context.push(message.clone()); } Ok(()) }