use crate::{
agent::StreamingPromptRequest,
completion::{CompletionModel, GetTokenUsage, Message},
};
use rig_core::wasm_compat::{WasmCompatSend, WasmCompatSync};
pub use rig_core::streaming::*;
pub trait StreamingPrompt<M, R>
where
M: CompletionModel + 'static,
M::StreamingResponse: WasmCompatSend,
R: Clone + Unpin + GetTokenUsage,
{
fn stream_prompt(
&self,
prompt: impl Into<Message> + WasmCompatSend,
) -> StreamingPromptRequest<M>;
}
pub trait StreamingChat<M, R>: WasmCompatSend + WasmCompatSync
where
M: CompletionModel + 'static,
M::StreamingResponse: WasmCompatSend,
R: Clone + Unpin + GetTokenUsage,
{
fn stream_chat<I, T>(
&self,
prompt: impl Into<Message> + WasmCompatSend,
chat_history: I,
) -> StreamingPromptRequest<M>
where
I: IntoIterator<Item = T> + WasmCompatSend,
T: Into<Message>;
}