mod common;
use std::io::Write;
use svir::openai::chat::Decoder;
use svir::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::openai(common::url()).build()?;
let request = Request::new(common::model()).user("Count from one to five.");
let mut raw = client.send(&request).await?;
let mut decoder = Decoder::lenient();
let mut answer = None;
while let Some(bytes) = raw.next().await {
let bytes = bytes?;
std::io::stdout().write_all(&bytes)?;
for event in decoder.push(&bytes) {
if let Event::Completed(done) = event? {
answer = Some(done);
}
}
}
decoder.finish()?;
if let Some(done) = answer {
eprintln!("-- relayed {:?}, usage: {:?}", done.text, done.usage);
}
Ok(())
}