1pub mod error;
10pub mod providers;
11pub mod retry;
12pub mod stream;
13pub mod types;
14
15pub use error::{Error, Result};
16pub use providers::{
17 anthropic::AnthropicProvider, google::GoogleProvider, openai::OpenAiProvider, Provider,
18};
19pub use stream::AssistantMessageEventStream;
20pub use types::{
21 now_ms, AssistantMessage, AssistantMessageEvent, Content, Context, Message, Model, StopReason,
22 StreamOptions, ThinkingLevel, Tool, ToolResultMessage, Usage,
23};
24
25pub async fn stream_simple(
32 model: &Model,
33 context: &Context,
34 options: &StreamOptions,
35) -> Result<AssistantMessageEventStream> {
36 match model.api.as_str() {
37 "anthropic-messages" => {
38 AnthropicProvider::new()
39 .stream(model, context, options)
40 .await
41 }
42 "openai-completions" => OpenAiProvider::new().stream(model, context, options).await,
43 "google-generative-ai" => GoogleProvider::new().stream(model, context, options).await,
44 other => Err(Error::UnsupportedProvider(other.into())),
45 }
46}