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::Streamed, traits::ChatProvider, traits::StreamProvider,
42    types::response::StreamEvent,
43};
44
45#[cfg(feature = "completions")]
46pub mod completions {
47    pub use chat_completions::*;
48}
49
50#[cfg(feature = "responses")]
51pub mod responses {
52    pub use chat_responses::*;
53}
54
55#[cfg(feature = "gemini")]
56pub mod gemini {
57    pub use chat_gemini::*;
58}
59
60#[cfg(feature = "claude")]
61pub mod claude {
62    pub use chat_claude::*;
63}
64
65#[cfg(feature = "openai")]
66pub mod openai {
67    pub use chat_openai::*;
68}
69
70#[cfg(feature = "ollama")]
71pub mod ollama {
72    pub use chat_ollama::*;
73}
74
75#[cfg(feature = "huggingface")]
76pub mod huggingface {
77    pub use chat_huggingface::*;
78}
79
80#[cfg(feature = "cerebras")]
81pub mod cerebras {
82    pub use chat_cerebras::*;
83}
84
85#[cfg(feature = "deepseek")]
86pub mod deepseek {
87    pub use chat_deepseek::*;
88}
89
90#[cfg(feature = "router")]
91pub mod router {
92    pub use chat_router::*;
93}
94
95pub mod prelude {
96    pub use crate::ChatOptions;
97    pub use crate::Messages;
98    pub use crate::types;
99    pub use crate::{ChatError, ChatFailure};
100    pub use crate::{CompletionProvider, EmbeddingsProvider};
101
102    #[cfg(feature = "completions")]
103    pub use crate::completions;
104
105    #[cfg(feature = "responses")]
106    pub use crate::responses;
107
108    #[cfg(feature = "gemini")]
109    pub use crate::gemini;
110
111    #[cfg(feature = "claude")]
112    pub use crate::claude;
113
114    #[cfg(feature = "openai")]
115    pub use crate::openai;
116
117    #[cfg(feature = "ollama")]
118    pub use crate::ollama;
119
120    #[cfg(feature = "huggingface")]
121    pub use crate::huggingface;
122
123    #[cfg(feature = "cerebras")]
124    pub use crate::cerebras;
125
126    #[cfg(feature = "deepseek")]
127    pub use crate::deepseek;
128
129    #[cfg(feature = "router")]
130    pub use crate::router;
131}