Skip to main content

chat_rs/
lib.rs

1//! # Chat-RS
2//!
3//! A multi-provider LLM framework.
4//!
5//! This crate provides a unified, type-safe API for interacting with Large Language Models
6//! like Google Gemini, Anthropic Claude, and OpenAI. It features compile-time safe builders,
7//! automatic retry loops, and native tool execution.
8
9pub use chat_core::{parts, retry_strategy};
10
11pub mod transport {
12    pub use chat_core::transport::*;
13}
14
15pub use chat_core::{
16    builder::ChatBuilder,
17    chat::Chat,
18    chat::state::{Structured, Unstructured},
19    error::{ChatError, ChatFailure},
20    traits::{CompletionProvider, EmbeddingsProvider},
21    transport::Transport,
22    types,
23    types::{
24        callback::{CallbackRetryContext, CallbackStrategy, RetryStrategy},
25        messages::{
26            Messages,
27            content::Content,
28            parts::{PartEnum, Parts},
29            tool::{Tool, ToolStatus},
30        },
31        metadata::Metadata,
32        options::ChatOptions,
33        provider_meta::ProviderMeta,
34        response::{ChatOutcome, ChatResponse, EmbeddingsResponse, PauseReason},
35        tools::{Action, ScopedCollection, TypedCollection},
36    },
37};
38
39#[cfg(feature = "stream")]
40pub use chat_core::{
41    chat::state::InputStreamed,
42    chat::stream::{ChatStream, Input, InputStream, IntoInput, OutputStream, SendError},
43    traits::ChatProvider,
44    traits::StreamProvider,
45    types::response::StreamEvent,
46};
47
48#[cfg(feature = "completions")]
49pub mod completions {
50    pub use chat_completions::*;
51}
52
53#[cfg(feature = "responses")]
54pub mod responses {
55    pub use chat_responses::*;
56}
57
58#[cfg(feature = "gemini")]
59pub mod gemini {
60    pub use chat_gemini::*;
61}
62
63#[cfg(feature = "claude")]
64pub mod claude {
65    pub use chat_claude::*;
66}
67
68#[cfg(feature = "openai")]
69pub mod openai {
70    pub use chat_openai::*;
71}
72
73#[cfg(feature = "ollama")]
74pub mod ollama {
75    pub use chat_ollama::*;
76}
77
78#[cfg(feature = "huggingface")]
79pub mod huggingface {
80    pub use chat_huggingface::*;
81}
82
83#[cfg(feature = "cerebras")]
84pub mod cerebras {
85    pub use chat_cerebras::*;
86}
87
88#[cfg(feature = "deepseek")]
89pub mod deepseek {
90    pub use chat_deepseek::*;
91}
92
93#[cfg(feature = "openrouter")]
94pub mod openrouter {
95    pub use chat_openrouter::*;
96}
97
98#[cfg(feature = "router")]
99pub mod router {
100    pub use chat_router::*;
101}
102
103pub mod prelude {
104    pub use crate::ChatOptions;
105    pub use crate::Messages;
106    pub use crate::types;
107    pub use crate::{ChatError, ChatFailure};
108    pub use crate::{CompletionProvider, EmbeddingsProvider};
109
110    #[cfg(feature = "completions")]
111    pub use crate::completions;
112
113    #[cfg(feature = "responses")]
114    pub use crate::responses;
115
116    #[cfg(feature = "gemini")]
117    pub use crate::gemini;
118
119    #[cfg(feature = "claude")]
120    pub use crate::claude;
121
122    #[cfg(feature = "openai")]
123    pub use crate::openai;
124
125    #[cfg(feature = "ollama")]
126    pub use crate::ollama;
127
128    #[cfg(feature = "huggingface")]
129    pub use crate::huggingface;
130
131    #[cfg(feature = "cerebras")]
132    pub use crate::cerebras;
133
134    #[cfg(feature = "deepseek")]
135    pub use crate::deepseek;
136
137    #[cfg(feature = "openrouter")]
138    pub use crate::openrouter;
139
140    #[cfg(feature = "router")]
141    pub use crate::router;
142}