pub mod error;
pub mod providers;
pub mod retry;
pub mod stream;
pub mod types;
pub use error::{Error, Result};
pub use providers::{
anthropic::AnthropicProvider, google::GoogleProvider, openai::OpenAiProvider, Provider,
};
pub use stream::AssistantMessageEventStream;
pub use types::{
now_ms, AssistantMessage, AssistantMessageEvent, Content, Context, Message, Model, StopReason,
StreamOptions, ThinkingLevel, Tool, ToolResultMessage, Usage,
};
pub async fn stream_simple(
model: &Model,
context: &Context,
options: &StreamOptions,
) -> Result<AssistantMessageEventStream> {
match model.api.as_str() {
"anthropic-messages" => {
AnthropicProvider::new()
.stream(model, context, options)
.await
}
"openai-completions" => OpenAiProvider::new().stream(model, context, options).await,
"google-generative-ai" => GoogleProvider::new().stream(model, context, options).await,
other => Err(Error::UnsupportedProvider(other.into())),
}
}