pub mod chat;
use std::collections::BTreeMap;
use async_trait::async_trait;
pub use chat::ChatAdapter;
use modelplease::Message;
use typesayer_types::{error::Result, field::FieldValue, signature::Signature};
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Demo {
pub inputs: BTreeMap<String, FieldValue>,
pub outputs: BTreeMap<String, FieldValue>,
}
#[async_trait]
pub trait Adapter: Send + Sync {
async fn format(
&self,
signature: &Signature,
inputs: &BTreeMap<String, FieldValue>,
demos: &[Demo],
) -> Result<Vec<Message>>;
async fn parse(
&self,
signature: &Signature,
completion: &str,
) -> Result<BTreeMap<String, FieldValue>>;
}