use llm::{
builder::{LLMBackend, LLMBuilder}, chat::ChatMessage, };
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = std::env::var("AZURE_OPENAI_API_KEY").unwrap_or("your api key here".into());
let api_version =
std::env::var("AZURE_OPENAI_API_VERSION").unwrap_or("your api version here".into());
let endpoint =
std::env::var("AZURE_OPENAI_API_ENDPOINT").unwrap_or("your api endpoint here".into());
let deployment_id =
std::env::var("AZURE_OPENAI_DEPLOYMENT").unwrap_or("gpt-4o-mini".to_owned());
let llm = LLMBuilder::new()
.backend(LLMBackend::AzureOpenAI) .base_url(endpoint)
.api_key(api_key) .api_version(api_version)
.deployment_id(deployment_id)
.model("gpt-4o-mini") .max_tokens(512) .temperature(0.7) .build()
.expect("Failed to build LLM (Azure OpenAI)");
let messages = vec![
ChatMessage::user()
.content("Tell me that you love cats")
.build(),
ChatMessage::assistant()
.content("I am an assistant, I cannot love cats but I can love dogs")
.build(),
ChatMessage::user()
.content("Tell me that you love dogs in 2000 chars")
.build(),
];
match llm.chat(&messages).await {
Ok(text) => println!("Chat response:\n{text}"),
Err(e) => eprintln!("Chat error: {e}"),
}
Ok(())
}