Skip to main content

ollama_oxide/
lib.rs

1//! # ollama-oxide
2//!
3//! A Rust library for integrating with Ollama's native API.
4//!
5//! ## Quick Start
6//!
7//! ### Async Example
8//! ```no_run
9//! use ollama_oxide::{OllamaClient, OllamaApiAsync, Result};
10//!
11//! #[tokio::main]
12//! async fn main() -> Result<()> {
13//!     let client = OllamaClient::default()?;
14//!     let version = client.version().await?;
15//!     println!("Ollama version: {}", version.version);
16//!     Ok(())
17//! }
18//! ```
19//!
20//! ### Sync Example
21//! ```no_run
22//! use ollama_oxide::{OllamaClient, OllamaApiSync, Result};
23//!
24//! fn main() -> Result<()> {
25//!     let client = OllamaClient::default()?;
26//!     let version = client.version_blocking()?;
27//!     println!("Ollama version: {}", version.version);
28//!     Ok(())
29//! }
30//! ```
31
32// ============================================================================
33// Error Handling
34// ============================================================================
35
36mod error;
37
38pub use error::{Error, Result};
39
40// ============================================================================
41// Inference Module
42// ============================================================================
43
44#[cfg(feature = "inference")]
45pub mod inference;
46
47#[cfg(feature = "inference")]
48pub use inference::{
49    // Chat types
50    ChatMessage,
51    ChatRequest,
52    ChatResponse,
53    ChatRole,
54    EmbedInput,
55    EmbedRequest,
56    EmbedResponse,
57    FormatSetting,
58    GenerateRequest,
59    GenerateResponse,
60    KeepAliveSetting,
61    Logprob,
62    ModelOptions,
63    ResponseMessage,
64    StopSetting,
65    ThinkSetting,
66    TokenLogprob,
67    VersionResponse,
68};
69
70// ============================================================================
71// HTTP Client Module
72// ============================================================================
73
74#[cfg(feature = "http")]
75pub mod http;
76
77#[cfg(feature = "http")]
78pub use http::{
79    ChatStream, ChatStreamBlocking, ClientConfig, OllamaApiAsync, OllamaApiSync, OllamaClient,
80};
81
82// ============================================================================
83// Model Module
84// ============================================================================
85
86#[cfg(feature = "model")]
87pub mod model;
88
89#[cfg(feature = "model")]
90pub use model::{
91    CopyRequest, CreateRequest, CreateResponse, DeleteRequest, LicenseSetting, ListResponse,
92    ModelDetails, ModelSummary, PsResponse, PullRequest, PullResponse, PushRequest, PushResponse,
93    RunningModel, ShowModelDetails, ShowRequest, ShowResponse,
94};
95
96// ============================================================================
97// Ergonomic Tools Module (requires "tools" feature)
98// ============================================================================
99
100#[cfg(feature = "tools")]
101pub mod tools;
102
103// Tool types re-exports (requires both "inference" and "tools" features)
104#[cfg(feature = "tools")]
105pub use tools::{ToolCall, ToolCallFunction, ToolDefinition, ToolFunction};
106
107// ============================================================================
108// Prelude
109// ============================================================================
110
111pub mod prelude {
112    pub use crate::{Error, Result};
113
114    #[cfg(feature = "http")]
115    pub use crate::{
116        ChatStream, ChatStreamBlocking, ClientConfig, OllamaApiAsync, OllamaApiSync, OllamaClient,
117    };
118
119    #[cfg(feature = "inference")]
120    pub use crate::{
121        // Chat types
122        ChatMessage,
123        ChatRequest,
124        ChatResponse,
125        ChatRole,
126        // Inference types
127        EmbedInput,
128        EmbedRequest,
129        EmbedResponse,
130        FormatSetting,
131        GenerateRequest,
132        GenerateResponse,
133        KeepAliveSetting,
134        Logprob,
135        ModelOptions,
136        ResponseMessage,
137        StopSetting,
138        ThinkSetting,
139        TokenLogprob,
140        VersionResponse,
141    };
142
143    // Tool types (requires "tools" features)
144    #[cfg(feature = "tools")]
145    pub use crate::{ToolCall, ToolCallFunction, ToolDefinition, ToolFunction};
146
147    // Model types (requires "model" feature)
148    #[cfg(feature = "model")]
149    pub use crate::{
150        CopyRequest, CreateRequest, CreateResponse, DeleteRequest, LicenseSetting, ListResponse,
151        ModelDetails, ModelSummary, PsResponse, RunningModel, ShowModelDetails, ShowRequest,
152        ShowResponse,
153    };
154}