use chat_gpt_lib_rs::{ChatGPTClient, ChatInput, Message, Model, Role};
use dotenvy::dotenv;
use std::env;
use std::error::Error;
use std::io::{stdin, stdout, Write};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
dotenv().ok();
let api_key = env::var("OPENAI_API_KEY").expect("OPENAI_API_KEY not found in environment");
let client = ChatGPTClient::new(&api_key, "https://api.openai.com");
let mut messages = vec![Message {
role: Role::System,
content: "You are an AI that can answer any question.".to_string(),
}];
loop {
print!("Enter your question: ");
stdout().flush().unwrap();
let mut user_input = String::new();
stdin().read_line(&mut user_input).unwrap();
messages.push(Message {
role: Role::User,
content: user_input.trim().to_string(),
});
let input = ChatInput {
model: Model::Gpt_4o, messages: messages.clone(), ..Default::default()
};
let response = client.chat(input).await?;
let ai_message = &response.choices[0].message.content;
println!("AI Response: {}", ai_message);
messages.push(Message {
role: Role::Assistant,
content: ai_message.clone(),
});
}
}