#![allow(unused)]
use kalosm::language::*;
use std::sync::Arc;
#[tokio::main]
async fn main() {
#[derive(Parse, Clone)]
pub enum Response {
Do(String),
Say(String),
}
let parser = Arc::new(Response::new_parser());
let model = Llama::new_chat().await.unwrap();
let mut chat = model
.chat()
.with_system_prompt("The assistant will act like a pirate. You will respond with either something you do or something you say. Respond with JSON in the format { \"type\": \"Say\", \"data\": \"hello\" } or { \"type\": \"Do\", \"data\": \"run away\" }");
loop {
chat(&prompt_input("\n> ").unwrap())
.with_constraints(parser.clone())
.to_std_out()
.await
.unwrap();
}
}