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}