use serde::{Deserialize, Serialize};
mod client;
pub mod providers;
mod wire_formats;
const DEFAULT_MODEL: &str = "gemma-4-26b-a4b-it";
const DEFAULT_MAX_TOKENS: u32 = 4096;
#[derive(thiserror::Error, Debug, Clone)]
pub enum Error {
#[error("service unavailable: {0}")]
Unavailable(String),
#[error("request failed: {0}")]
RequestFailed(String),
#[error("empty response")]
EmptyResponse,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
pub enum WireFormat {
Completions,
Responses,
#[default]
Messages,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ChatMessage {
pub role: String,
pub content: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StreamEvent {
Delta(String),
Done,
}
pub use client::HealthResponse;
pub use client::{chat, chat_async, chat_stream, health_check, health_check_blocking};
pub use providers::{AuthConfig, ProviderConfig};
#[cfg(test)]
fn test_messages() -> Vec<ChatMessage> {
vec![
ChatMessage {
role: "user".to_string(),
content: "Hello".to_string(),
},
ChatMessage {
role: "assistant".to_string(),
content: "Hi there!".to_string(),
},
ChatMessage {
role: "user".to_string(),
content: "How are you?".to_string(),
},
]
}