use clap::Parser;
use dotenvy::dotenv_override;
use sapiens::{something, Config};
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(long, default_value = "gpt-3.5-turbo")]
model: String,
#[arg(short, long, default_value_t = 10)]
max_steps: u32,
#[arg(short, long, default_value = "Tell me a joke.")]
task: String,
#[arg(long)]
show_warmup_prompt: bool,
}
impl From<Args> for Config {
fn from(args: Args) -> Self {
Self {
model: args.model,
max_steps: args.max_steps,
show_warmup_prompt: args.show_warmup_prompt,
..Default::default()
}
}
}
#[tokio::main]
async fn main() {
let args = Args::parse();
let _ = dotenv_override();
let toolbox = sapiens_cli::assemble_toolbox();
let openai_client = async_openai::Client::new().with_api_key(
std::env::var("OPENAI_API_KEY").expect("OPENAI_API_KEY not set in configuration file"),
);
for (k, _) in std::env::vars() {
std::env::remove_var(&k);
}
let task = args.task.clone();
something(toolbox, openai_client, args.into(), task).await;
}