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}