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::retry_strategy;
10
11pub use chat_core::{
12    builder::ChatBuilder,
13    chat::Chat,
14    chat::state::{Structured, Unstructured},
15    error::{ChatError, ChatFailure},
16    traits::{CompletionProvider, EmbeddingsProvider},
17    types,
18    types::{
19        callback::{CallbackRetryContext, CallbackStrategy, RetryStrategy},
20        messages::{
21            Messages,
22            content::Content,
23            parts::{PartEnum, Parts},
24            tool::{Tool, ToolStatus},
25        },
26        metadata::Metadata,
27        options::ChatOptions,
28        provider_meta::ProviderMeta,
29        response::{ChatOutcome, ChatResponse, EmbeddingsResponse, PauseReason},
30        tools::{Action, ScopedCollection, TypedCollection},
31    },
32};
33
34#[cfg(feature = "stream")]
35pub use chat_core::{
36    chat::state::Streamed, traits::ChatProvider, traits::StreamProvider,
37    types::response::StreamEvent,
38};
39
40#[cfg(feature = "gemini")]
41pub mod gemini {
42    pub use chat_gemini::*;
43}
44
45
46#[cfg(feature = "claude")]
47pub mod claude {
48    pub use chat_claude::*;
49}
50
51#[cfg(feature = "openai")]
52pub mod openai {
53    pub use chat_openai::*;
54}
55
56#[cfg(feature = "router")]
57pub mod router {
58    pub use chat_router::*;
59}
60
61pub mod prelude {
62    pub use crate::ChatOptions;
63    pub use crate::Messages;
64    pub use crate::types;
65    pub use crate::{ChatError, ChatFailure};
66    pub use crate::{CompletionProvider, EmbeddingsProvider};
67
68    #[cfg(feature = "gemini")]
69    pub use crate::gemini;
70
71    #[cfg(feature = "claude")]
72    pub use crate::claude;
73
74    #[cfg(feature = "openai")]
75    pub use crate::openai;
76
77    #[cfg(feature = "router")]
78    pub use crate::router;
79}