mod common;
use schemars::JsonSchema;
use serde::Deserialize;
use svir::prelude::*;
#[derive(Deserialize, JsonSchema)]
struct River {
name: String,
length_km: u32,
mouth: String,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::openai(common::url()).build()?;
let request = Request::new(common::model())
.response_format(Schema::of::<River>())
.user("Describe the river that joins Lake Onega to Lake Ladoga.");
let answer = client.complete(&request).await?;
let River {
name,
length_km,
mouth,
} = answer.parse()?;
println!("{name}: {length_km} km, into {mouth}");
Ok(())
}