completion.rs

 1use anyhow::Result;
 2use futures::{future::BoxFuture, stream::BoxStream};
 3
 4use crate::models::LanguageModel;
 5
 6pub trait CompletionRequest: Send + Sync {
 7    fn data(&self) -> serde_json::Result<String>;
 8}
 9
10pub trait CompletionProvider {
11    fn base_model(&self) -> Box<dyn LanguageModel>;
12    fn complete(
13        &self,
14        prompt: Box<dyn CompletionRequest>,
15    ) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>>;
16}