Types Reference
Types Reference¶
All types defined by the library, grouped by category. Types are shown using Rust as the canonical representation.
Result Types¶
ModerationResult¶
A single moderation classification result.
| Field | Type | Default | Description |
|---|---|---|---|
flagged |
bool |
— | True if any category was flagged. |
categories |
ModerationCategories |
— | Boolean flags for each moderation category. |
category_scores |
ModerationCategoryScores |
— | Confidence scores for each category. |
RerankResult¶
A single reranked document with its relevance score.
| Field | Type | Default | Description |
|---|---|---|---|
index |
u32 |
— | Original document index in the input list. |
relevance_score |
f64 |
— | Relevance score in \[0, 1\]. Higher indicates more relevant. |
document |
Option<RerankResultDocument> |
/* serde(default) */ |
Original document content (if return_documents was true). |
RerankResultDocument¶
The text content of a reranked document, returned when return_documents is true.
| Field | Type | Default | Description |
|---|---|---|---|
text |
String |
— | Document text. |
SearchResult¶
An individual search result.
| Field | Type | Default | Description |
|---|---|---|---|
title |
String |
— | Result title. |
url |
String |
— | Result URL. |
snippet |
String |
— | Text snippet or excerpt from the page. |
date |
Option<String> |
/* serde(default) */ |
Publication or last-updated date, if available. |
SingleflightResult¶
The value broadcast from a singleflight leader to all followers.
The error value is shared so every follower receives the same upstream failure without cloning the underlying error.
Opaque type — fields are not directly accessible.
Configuration Types¶
See Configuration Reference for detailed defaults and language-specific representations.
SystemMessage¶
System message guiding model behavior for the entire conversation.
| Field | Type | Default | Description |
|---|---|---|---|
content |
UserContent |
UserContent::Text |
Instructions or context that apply throughout the conversation. Accepts either a plain text string or an array of content parts, mirroring UserContent so that Message::system_with_parts works. |
name |
Option<String> |
Default::default() |
Optional name for the system message source. |
UserMessage¶
User message in the conversation.
| Field | Type | Default | Description |
|---|---|---|---|
content |
UserContent |
UserContent::Text |
Message content as plain text or array of content parts (text, images, documents, audio). |
name |
Option<String> |
Default::default() |
Optional name for the user. |
ImageUrl¶
An image URL reference with optional detail level for processing.
| Field | Type | Default | Description |
|---|---|---|---|
url |
String |
— | URL of the image (data URI or HTTP/HTTPS URL). |
detail |
Option<ImageDetail> |
Default::default() |
Detail level: low (512x512), high (2x2 tiles), or auto (model-selected). |
DocumentContent¶
PDF/document content part for vision-capable models.
| Field | Type | Default | Description |
|---|---|---|---|
data |
String |
— | Base64-encoded document data or URL. |
media_type |
String |
— | MIME type (e.g., "application/pdf", "text/csv"). |
AudioContent¶
Audio content part for speech-capable models.
| Field | Type | Default | Description |
|---|---|---|---|
data |
String |
— | Base64-encoded audio data. |
format |
String |
— | Audio format (e.g., "wav", "mp3", "ogg"). |
AssistantMessage¶
Assistant's response to a user message.
| Field | Type | Default | Description |
|---|---|---|---|
content |
Option<AssistantContent> |
Default::default() |
The assistant's response: plain text, structured parts, or absent. None is valid when the model replies with tool calls only. |
name |
Option<String> |
Default::default() |
Optional name for the assistant. |
tool_calls |
Vec<ToolCall> |
vec!\[\] |
Tool calls the model wants to execute, if any. |
refusal |
Option<String> |
Default::default() |
Refusal reason, if the model declined to respond per safety policies. |
function_call |
Option<FunctionCall> |
Default::default() |
Deprecated legacy function_call field; retained for API compatibility. |
ToolMessage¶
Tool execution result returned to the model.
| Field | Type | Default | Description |
|---|---|---|---|
content |
String |
— | Result of the tool execution. |
tool_call_id |
String |
— | ID of the tool call this result responds to. |
name |
Option<String> |
Default::default() |
Optional tool/function name. |
DeveloperMessage¶
Developer message (system-like message for Claude models).
| Field | Type | Default | Description |
|---|---|---|---|
content |
String |
— | Developer-specific instructions or context. |
name |
Option<String> |
Default::default() |
Optional name for the developer message source. |
FunctionMessage¶
Deprecated legacy function-role message body.
| Field | Type | Default | Description |
|---|---|---|---|
content |
String |
— | The extracted text content |
name |
String |
— | The name |
SpecificToolChoice¶
Directive to call a specific tool.
| Field | Type | Default | Description |
|---|---|---|---|
choice_type |
ToolType |
ToolType::Function |
Tool type (always "function"). |
function |
SpecificFunction |
— | The specific function to invoke. |
SpecificFunction¶
Name of the specific function to invoke.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Function name. |
JsonSchemaFormat¶
JSON Schema specification for constrained output.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Name of the schema (must be unique in the request). |
description |
Option<String> |
Default::default() |
Description of what the schema represents. |
schema |
serde_json::Value |
— | JSON Schema object defining the output structure. |
strict |
Option<bool> |
Default::default() |
If true, enforce strict schema validation. |
Usage¶
Token-usage accounting returned by the provider on each completion / embedding call.
| Field | Type | Default | Description |
|---|---|---|---|
prompt_tokens |
u64 |
— | Prompt tokens used. Defaults to 0 when absent (some providers omit this). |
completion_tokens |
u64 |
— | Completion tokens used. Defaults to 0 when absent (e.g. embedding responses). |
total_tokens |
u64 |
— | Total tokens used. Defaults to 0 when absent (some providers omit this). |
prompt_tokens_details |
Option<PromptTokensDetails> |
Default::default() |
Breakdown of tokens used in the prompt, including cached tokens served at the provider's discounted cache-read rate. Absent when the provider does not return prompt-token details. |
PromptTokensDetails¶
Breakdown of tokens used in the prompt portion of a request.
cached_tokens is included in Usage.prompt_tokens — it is not an
additional charge on top of the prompt token count. When pricing supports
a cache_read_input_token_cost, the cached portion is billed at the
discounted rate and the remainder at the regular input rate.
| Field | Type | Default | Description |
|---|---|---|---|
cached_tokens |
u64 |
— | Cached tokens present in the prompt. Defaults to 0 when absent. |
audio_tokens |
u64 |
— | Audio input tokens present in the prompt. Defaults to 0 when absent. |
ChatCompletionRequest¶
Chat completion request (compatible with OpenAI and similar APIs).
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID (e.g., "gpt-4o-mini", "claude-3-5-sonnet"). |
messages |
Vec<Message> |
vec!\[\] |
Conversation history from oldest to newest. |
temperature |
Option<f64> |
Default::default() |
Sampling temperature in \[0.0, 2.0\]. Higher increases randomness. Defaults to 1.0. |
top_p |
Option<f64> |
Default::default() |
Nucleus sampling parameter in \[0.0, 1.0\]. Lower is more focused. |
n |
Option<u32> |
Default::default() |
Number of chat completions to generate. Defaults to 1. |
stream |
Option<bool> |
Default::default() |
Whether to stream the response. Managed by the client layer — do not set directly. |
stop |
Option<StopSequence> |
Default::default() |
Stop sequence(s) that halt token generation. |
max_tokens |
Option<u64> |
Default::default() |
Max output tokens. Different from max_completion_tokens in some providers. |
presence_penalty |
Option<f64> |
Default::default() |
Presence penalty in \[-2.0, 2.0\]. Positive discourages repeated topics. |
frequency_penalty |
Option<f64> |
Default::default() |
Frequency penalty in \[-2.0, 2.0\]. Positive discourages repeated tokens. |
logit_bias |
HashMap<String, f64> |
HashMap::new() |
Token bias map. Uses BTreeMap (sorted keys) for deterministic serialization order — important when hashing or signing requests. |
user |
Option<String> |
Default::default() |
User identifier for request tracking and abuse detection. |
tools |
Vec<ChatCompletionTool> |
vec!\[\] |
Tools the model can invoke. |
tool_choice |
Option<ToolChoice> |
Default::default() |
Tool usage mode (auto, required, none, or specific tool). |
parallel_tool_calls |
Option<bool> |
Default::default() |
Whether the model can call multiple tools in parallel. Defaults to true. |
response_format |
Option<ResponseFormat> |
Default::default() |
Output format constraint (text, JSON, JSON schema). |
stream_options |
Option<StreamOptions> |
Default::default() |
Streaming options (e.g., include_usage). |
seed |
Option<i64> |
Default::default() |
Random seed for reproducible outputs. Provider support varies. |
reasoning_effort |
Option<ReasoningEffort> |
Default::default() |
Reasoning effort level (low, medium, high) for extended-thinking models. |
modalities |
Vec<Modality> |
vec!\[\] |
Output modalities to request from the model. For OpenAI audio models, pass \["text", "audio"\]. Vertex AI / Gemini translates these to generationConfig.responseModalities (uppercase). |
extra_body |
Option<serde_json::Value> |
Default::default() |
Provider-specific extra parameters merged into the request body. Use for guardrails, safety settings, grounding config, etc. |
StreamOptions¶
Options for streaming responses.
| Field | Type | Default | Description |
|---|---|---|---|
include_usage |
Option<bool> |
Default::default() |
If true, include token usage in the final stream chunk. |
ChatCompletionResponse¶
Chat completion response from the API.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique identifier for this response. |
object |
String |
— | Always "chat.completion" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not break deserialization. |
created |
u64 |
— | Unix timestamp of response creation. |
model |
String |
— | Model used to generate the response. |
choices |
Vec<Choice> |
vec!\[\] |
List of completion choices. |
usage |
Option<Usage> |
Default::default() |
Token usage statistics. |
system_fingerprint |
Option<String> |
Default::default() |
Fingerprint of the system configuration (OpenAI-specific). |
service_tier |
Option<String> |
Default::default() |
Service tier used (OpenAI-specific). |
Choice¶
A single completion choice.
| Field | Type | Default | Description |
|---|---|---|---|
index |
u32 |
— | Index of this choice in the choices array. |
message |
AssistantMessage |
— | The assistant's message response. |
finish_reason |
Option<FinishReason> |
Default::default() |
Why the model stopped generating (stop, length, tool_calls, content_filter, etc.). |
ChatCompletionChunk¶
A streamed chunk of a chat completion response.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique identifier for this stream. |
object |
String |
— | Always "chat.completion.chunk" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not fail parsing. |
created |
u64 |
— | Unix timestamp of chunk creation. |
model |
String |
— | Model used to generate the chunk. |
choices |
Vec<StreamChoice> |
vec!\[\] |
Streaming choices (delta updates). |
usage |
Option<Usage> |
Default::default() |
Token usage (typically only in the final chunk). |
system_fingerprint |
Option<String> |
Default::default() |
Fingerprint of the system configuration (OpenAI-specific). |
service_tier |
Option<String> |
Default::default() |
Service tier used (OpenAI-specific). |
StreamChoice¶
A streaming choice with incremental delta.
| Field | Type | Default | Description |
|---|---|---|---|
index |
u32 |
— | Index of this choice in the choices array. |
delta |
StreamDelta |
— | Incremental update to the message (content, tool calls, etc.). |
finish_reason |
Option<FinishReason> |
Default::default() |
Why the stream ended (present only in final chunk). |
StreamDelta¶
Incremental delta in a stream chunk.
| Field | Type | Default | Description |
|---|---|---|---|
role |
Option<String> |
Default::default() |
Role (typically present only in the first chunk). |
content |
Option<String> |
Default::default() |
Partial content chunk (e.g., a few words of the response). |
tool_calls |
Vec<StreamToolCall> |
vec!\[\] |
Partial tool calls being streamed. |
function_call |
Option<StreamFunctionCall> |
Default::default() |
Deprecated legacy function_call delta; retained for API compatibility. |
refusal |
Option<String> |
Default::default() |
Partial refusal message. |
StreamToolCall¶
A streaming tool call being built incrementally.
| Field | Type | Default | Description |
|---|---|---|---|
index |
u32 |
— | Index of this tool call in the tool_calls array. |
id |
Option<String> |
Default::default() |
Tool call ID (typically in the first chunk for this call). |
call_type |
Option<ToolType> |
Default::default() |
Tool type (typically "function"). |
function |
Option<StreamFunctionCall> |
Default::default() |
Partial function name and arguments. |
StreamFunctionCall¶
Partial function call details in a stream.
| Field | Type | Default | Description |
|---|---|---|---|
name |
Option<String> |
Default::default() |
Function name (typically in the first chunk). |
arguments |
Option<String> |
Default::default() |
Partial JSON arguments chunk. |
EmbeddingRequest¶
Embedding request.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID (e.g., "text-embedding-3-small"). |
input |
EmbeddingInput |
EmbeddingInput::Single |
Text or texts to embed. |
encoding_format |
Option<EmbeddingFormat> |
Default::default() |
Output format: float (native) or base64. |
dimensions |
Option<u32> |
Default::default() |
Requested embedding dimensions (if supported by the model). |
user |
Option<String> |
Default::default() |
User identifier for request tracking. |
CreateImageRequest¶
Request to create images from a text prompt.
| Field | Type | Default | Description |
|---|---|---|---|
prompt |
String |
— | Text description of the image to generate. |
model |
Option<String> |
Default::default() |
Model ID (e.g., "dall-e-3"). Optional; API may use default if unset. |
n |
Option<u32> |
Default::default() |
Number of images to generate. Defaults to 1. |
size |
Option<String> |
Default::default() |
Image size (e.g., "1024x1024", "1792x1024"). |
quality |
Option<String> |
Default::default() |
Image quality: "standard" or "hd". |
style |
Option<String> |
Default::default() |
Style: "natural" or "vivid" (DALL-E 3 only). |
response_format |
Option<String> |
Default::default() |
Response format: "url" or "b64_json". |
user |
Option<String> |
Default::default() |
User identifier for request tracking. |
ImagesResponse¶
Response containing generated images.
| Field | Type | Default | Description |
|---|---|---|---|
created |
u64 |
— | Unix timestamp of image creation. |
data |
Vec<Image> |
vec!\[\] |
List of generated images. |
Image¶
A single generated image, returned as either a URL or base64 data.
| Field | Type | Default | Description |
|---|---|---|---|
url |
Option<String> |
Default::default() |
Image URL (if response_format was "url"). |
b64_json |
Option<String> |
Default::default() |
Base64-encoded image data (if response_format was "b64_json"). |
revised_prompt |
Option<String> |
Default::default() |
The final prompt used to generate the image (DALL-E 3). |
DecodedDataUrl¶
Result of decoding a data: URL — MIME type and the decoded byte payload.
Named struct (rather than a tuple) so polyglot bindings can extract
decode_data_url with a typed return rather than a sanitized scalar.
| Field | Type | Default | Description |
|---|---|---|---|
mime |
String |
— | MIME type extracted from the URL prefix (verbatim, not normalised). |
data |
Vec<u8> |
— | Decoded base64 payload. |
CreateSpeechRequest¶
Request to generate speech audio from text.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID (e.g., "tts-1", "tts-1-hd"). |
input |
String |
— | Text to synthesize into speech. |
voice |
String |
— | Voice name (e.g., "alloy", "echo", "fable", "onyx", "nova", "shimmer"). |
response_format |
Option<String> |
Default::default() |
Audio format (e.g., "mp3", "opus", "aac", "flac", "wav", "pcm"). |
speed |
Option<f64> |
Default::default() |
Playback speed in \[0.25, 4.0\]. Defaults to 1.0. |
CreateTranscriptionRequest¶
Request to transcribe audio into text.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID (e.g., "whisper-1"). |
file |
String |
— | Base64-encoded audio file data. |
language |
Option<String> |
Default::default() |
Language ISO-639-1 code (e.g., "en", "fr", "de"). Optional; model auto-detects. |
prompt |
Option<String> |
Default::default() |
Optional text to guide the model (improves accuracy for domain-specific terms). |
response_format |
Option<String> |
Default::default() |
Output format (e.g., "json", "text", "vtt", "srt", "verbose_json"). |
temperature |
Option<f64> |
Default::default() |
Sampling temperature in \[0.0, 1.0\]. Higher increases variability. Defaults to 0. |
TranscriptionResponse¶
Response from a transcription request.
| Field | Type | Default | Description |
|---|---|---|---|
text |
String |
— | The transcribed text. |
language |
Option<String> |
Default::default() |
Detected language (ISO-639-1 code). |
duration |
Option<f64> |
Default::default() |
Total audio duration in seconds. |
segments |
Vec<TranscriptionSegment> |
vec!\[\] |
Detailed segment-level transcription (if response_format is "verbose_json"). |
TranscriptionSegment¶
A segment of transcribed audio with timing information.
| Field | Type | Default | Description |
|---|---|---|---|
id |
u32 |
— | Segment index (0-based). |
start |
f64 |
— | Start time in seconds. |
end |
f64 |
— | End time in seconds. |
text |
String |
— | Transcribed text for this segment. |
ModerationRequest¶
Request to classify content for policy violations.
| Field | Type | Default | Description |
|---|---|---|---|
input |
ModerationInput |
ModerationInput::Single |
Text or texts to check. |
model |
Option<String> |
Default::default() |
Model ID (e.g., "text-moderation-latest"). Optional; API uses default if unset. |
ModerationCategories¶
Boolean flags for each moderation category.
| Field | Type | Default | Description |
|---|---|---|---|
sexual |
bool |
— | Sexual content. |
hate |
bool |
— | Hate speech. |
harassment |
bool |
— | Harassment. |
self_harm |
bool |
— | Self-harm content. |
sexual_minors |
bool |
— | Sexual content involving minors. |
hate_threatening |
bool |
— | Hate speech that threatens violence. |
violence_graphic |
bool |
— | Graphic violence. |
self_harm_intent |
bool |
— | Intent to self-harm. |
self_harm_instructions |
bool |
— | Instructions for self-harm. |
harassment_threatening |
bool |
— | Harassment that threatens violence. |
violence |
bool |
— | Non-graphic violence. |
ModerationCategoryScores¶
Confidence scores for each moderation category.
| Field | Type | Default | Description |
|---|---|---|---|
sexual |
f64 |
— | Sexual content score. |
hate |
f64 |
— | Hate speech score. |
harassment |
f64 |
— | Harassment score. |
self_harm |
f64 |
— | Self-harm content score. |
sexual_minors |
f64 |
— | Sexual content involving minors score. |
hate_threatening |
f64 |
— | Hate speech that threatens violence score. |
violence_graphic |
f64 |
— | Graphic violence score. |
self_harm_intent |
f64 |
— | Intent to self-harm score. |
self_harm_instructions |
f64 |
— | Instructions for self-harm score. |
harassment_threatening |
f64 |
— | Harassment that threatens violence score. |
violence |
f64 |
— | Non-graphic violence score. |
RerankRequest¶
Request to rerank documents by relevance to a query.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID (e.g., "cohere/rerank-english-v3.0"). |
query |
String |
— | The search query. |
documents |
Vec<RerankDocument> |
vec!\[\] |
Documents to rerank. |
top_n |
Option<u32> |
Default::default() |
Return only the top N results. Optional. |
return_documents |
Option<bool> |
Default::default() |
Include the document content in results. Defaults to false. |
SearchRequest¶
A search request.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | The model/provider to use (e.g. "brave/web-search", "tavily/search"). |
query |
String |
— | The search query string. |
max_results |
Option<u32> |
Default::default() |
Maximum number of results to return. |
search_domain_filter |
Vec<String> |
vec!\[\] |
Domain filter — restrict results to specific domains. |
country |
Option<String> |
Default::default() |
Country code for localized results (ISO 3166-1 alpha-2, e.g., "US", "FR"). |
OcrRequest¶
An OCR request.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | The model/provider to use (e.g. "mistral/mistral-ocr-latest"). |
document |
OcrDocument |
OcrDocument::Url |
The document to process (URL or base64). |
pages |
Vec<u32> |
vec!\[\] |
Specific pages to process (1-indexed). None means all pages. |
include_image_base64 |
Option<bool> |
Default::default() |
Whether to include base64-encoded images of each processed page. |
ModelsListResponse¶
Response listing available models.
| Field | Type | Default | Description |
|---|---|---|---|
object |
String |
— | Always "list" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not break deserialization. |
data |
Vec<ModelObject> |
vec!\[\] |
List of available models. |
ModelObject¶
A model available from the API.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Model ID (e.g., "gpt-4o", "claude-3-5-sonnet"). |
object |
String |
— | Always "model" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not break deserialization. |
created |
u64 |
— | Unix timestamp of model creation (or release date). |
owned_by |
String |
— | Organization or entity that owns the model. |
CreateFileRequest¶
Request to upload a file.
| Field | Type | Default | Description |
|---|---|---|---|
file |
String |
— | Base64-encoded file data. |
purpose |
FilePurpose |
FilePurpose::Assistants |
Purpose for the file. |
filename |
Option<String> |
Default::default() |
Optional filename to associate with the upload. |
FileObject¶
An uploaded file object.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique file ID. |
object |
String |
— | Object type (always "file"). |
bytes |
u64 |
— | File size in bytes. |
created_at |
u64 |
— | Unix timestamp of file creation. |
filename |
String |
— | Filename. |
purpose |
String |
— | File purpose. |
status |
Option<String> |
Default::default() |
Processing status (e.g., "uploaded", "processed"). |
FileListResponse¶
Response from listing files.
| Field | Type | Default | Description |
|---|---|---|---|
object |
String |
— | Object type (always "list"). |
data |
Vec<FileObject> |
vec!\[\] |
List of file objects. |
has_more |
Option<bool> |
Default::default() |
Whether more results are available. |
FileListQuery¶
Query parameters for listing files.
| Field | Type | Default | Description |
|---|---|---|---|
purpose |
Option<String> |
Default::default() |
Filter by file purpose (e.g., "batch", "fine-tune"). |
limit |
Option<u32> |
Default::default() |
Maximum number of results to return. Defaults to 20. |
after |
Option<String> |
Default::default() |
Pagination cursor: return results after this file ID. |
DeleteResponse¶
Response from a delete operation.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | ID of the deleted resource. |
object |
String |
— | Object type. |
deleted |
bool |
— | Confirmation that the resource was deleted. |
CreateBatchRequest¶
Request to create a batch job.
| Field | Type | Default | Description |
|---|---|---|---|
input_file_id |
String |
— | ID of the uploaded input file (JSONL format). |
endpoint |
String |
— | API endpoint (e.g., "/v1/chat/completions"). |
completion_window |
String |
— | Completion window (e.g., "24h"). |
metadata |
Option<serde_json::Value> |
Default::default() |
Optional metadata to attach to the batch. |
BatchObject¶
A batch job object.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique batch ID. |
object |
String |
— | Object type (always "batch"). |
endpoint |
String |
— | API endpoint (e.g., "/v1/chat/completions"). |
input_file_id |
String |
— | ID of the input file. |
completion_window |
String |
— | Completion window (e.g., "24h"). |
status |
BatchStatus |
BatchStatus::Validating |
Current job status. |
output_file_id |
Option<String> |
Default::default() |
ID of the output file (present when completed). |
error_file_id |
Option<String> |
Default::default() |
ID of the error file (present if some requests failed). |
created_at |
u64 |
— | Unix timestamp of batch creation. |
completed_at |
Option<u64> |
Default::default() |
Unix timestamp of completion (if completed). |
failed_at |
Option<u64> |
Default::default() |
Unix timestamp of failure (if failed). |
expired_at |
Option<u64> |
Default::default() |
Unix timestamp of expiration (if expired). |
request_counts |
Option<BatchRequestCounts> |
Default::default() |
Request processing counts. |
metadata |
Option<serde_json::Value> |
Default::default() |
Metadata attached to the batch. |
BatchRequestCounts¶
Request processing counts for a batch.
| Field | Type | Default | Description |
|---|---|---|---|
total |
u64 |
— | Total requests in the batch. |
completed |
u64 |
— | Completed requests. |
failed |
u64 |
— | Failed requests. |
BatchListResponse¶
Response from listing batches.
| Field | Type | Default | Description |
|---|---|---|---|
object |
String |
— | Object type (always "list"). |
data |
Vec<BatchObject> |
vec!\[\] |
List of batch objects. |
has_more |
Option<bool> |
Default::default() |
Whether more results are available. |
first_id |
Option<String> |
Default::default() |
First batch ID in the result set (for pagination). |
last_id |
Option<String> |
Default::default() |
Last batch ID in the result set (for pagination). |
BatchListQuery¶
Query parameters for listing batches.
| Field | Type | Default | Description |
|---|---|---|---|
limit |
Option<u32> |
Default::default() |
Maximum number of results to return. Defaults to 20. |
after |
Option<String> |
Default::default() |
Pagination cursor: return results after this batch ID. |
CreateResponseRequest¶
Request to create a structured response.
| Field | Type | Default | Description |
|---|---|---|---|
model |
String |
— | Model ID. |
input |
serde_json::Value |
— | Input data to process (e.g., a document to extract from). |
instructions |
Option<String> |
Default::default() |
Instructions for processing the input. |
tools |
Vec<ResponseTool> |
vec!\[\] |
Available tools the model can use. |
temperature |
Option<f64> |
Default::default() |
Sampling temperature in \[0.0, 2.0\]. Defaults to 1.0. |
max_output_tokens |
Option<u64> |
Default::default() |
Maximum output tokens. |
metadata |
Option<serde_json::Value> |
Default::default() |
Optional metadata. |
ResponseTool¶
A tool available for the response request.
| Field | Type | Default | Description |
|---|---|---|---|
tool_type |
String |
— | Tool type (e.g., "extractor", "search"). |
config |
serde_json::Value |
— | Tool configuration (flattened into the object). |
ResponseObject¶
Response from a structured response request.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique response ID. |
object |
String |
— | Object type (e.g., "response"). |
created_at |
u64 |
— | Unix timestamp of response creation. |
model |
String |
— | Model used to generate the response. |
status |
String |
— | Status (e.g., "succeeded", "failed"). |
output |
Vec<ResponseOutputItem> |
vec!\[\] |
Output items from the response. |
usage |
Option<ResponseUsage> |
Default::default() |
Token usage. |
error |
Option<serde_json::Value> |
Default::default() |
Error details (if status is "failed"). |
ResponseOutputItem¶
A single output item from the response.
| Field | Type | Default | Description |
|---|---|---|---|
item_type |
String |
— | Output type (e.g., "text", "object", "error"). |
content |
serde_json::Value |
— | Output content (flattened into the object). |
ResponseUsage¶
Token usage for a response.
| Field | Type | Default | Description |
|---|---|---|---|
input_tokens |
u64 |
— | Input tokens used. |
output_tokens |
u64 |
— | Output tokens used. |
total_tokens |
u64 |
— | Total tokens used. |
WaitForBatchConfig¶
Configuration for polling a batch until terminal status.
All time values are in seconds as f64 so the struct bridges across FFI
boundaries without requiring a Duration shim.
| Field | Type | Default | Description |
|---|---|---|---|
initial_interval_secs |
f64 |
5 |
Initial interval between polls, in seconds. |
max_interval_secs |
f64 |
60 |
Maximum interval between polls (backoff plateau), in seconds. |
backoff_multiplier |
f32 |
1.5 |
Exponential backoff multiplier (e.g., 1.5 increases delay by 50% each poll). |
timeout_secs |
Option<f64> |
None |
Optional timeout in seconds — polling fails if this duration is exceeded. |
CustomProviderConfig¶
Configuration for registering a custom LLM provider at runtime.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Unique name for this provider (e.g., "my-provider"). |
base_url |
String |
— | Base URL for the provider's API (e.g., <https://api.my-provider.com/v1>). |
auth_header |
AuthHeaderFormat |
— | Authentication header format. |
model_prefixes |
Vec<String> |
— | Model name prefixes that route to this provider (e.g., \["my-"\]). |
ProviderCapabilities¶
Static capability flags for a provider.
Each flag indicates whether the provider's models generally support that
feature. For providers that aggregate many underlying models (e.g. Bedrock,
OpenRouter, vLLM) the flags reflect the superset of available model
capabilities — a flag being True means at least one model supports the
feature, not every model.
All flags default to False so that newly added providers are safe.
Access via the crate-level capabilities function:
| Field | Type | Default | Description |
|---|---|---|---|
vision |
bool |
— | The provider accepts image input in chat messages. |
reasoning |
bool |
— | The provider supports extended-thinking / reasoning tokens. |
structured_output |
bool |
— | The provider supports JSON-mode or response_format structured output. |
function_calling |
bool |
— | The provider supports tool / function calling. |
audio_in |
bool |
— | The provider accepts audio as input. |
audio_out |
bool |
— | The provider can generate audio / TTS output. |
video_in |
bool |
— | The provider accepts video as input. |
ProviderConfig¶
Static configuration for a single provider entry in providers.json.
This struct deliberately does not include capability flags or streaming
format, which are accessed via the capabilities function.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Provider identifier (matches the entry key in providers.json). |
display_name |
Option<String> |
None |
Human-readable provider name shown in UIs. |
base_url |
Option<String> |
None |
Base URL used as the default for this provider's HTTP client. |
auth |
Option<AuthConfig> |
None |
Authentication scheme metadata (auth type + env var holding the key). |
endpoints |
Vec<String> |
None |
Supported endpoint kinds (e.g. chat, embeddings). |
model_prefixes |
Vec<String> |
None |
Model-name prefixes claimed by this provider (e.g. \["gpt-", "o1-"\]). |
param_mappings |
HashMap<String, String> |
None |
Parameter key renaming for this provider. Each entry maps an OpenAI-spec field name (e.g. "max_completion_tokens") to the name this provider expects (e.g. "max_tokens"). Applied automatically by ConfigDrivenProvider::transform_request. |
AuthConfig¶
Auth configuration block.
| Field | Type | Default | Description |
|---|---|---|---|
auth_type |
AuthType |
— | Auth scheme classification. |
env_var |
Option<String> |
None |
Name of the environment variable that holds the API key (e.g. "OPENAI_API_KEY"). Holds the variable name, never the secret value. |
BudgetConfig¶
Configuration for budget enforcement.
| Field | Type | Default | Description |
|---|---|---|---|
global_limit |
Option<f64> |
None |
Maximum total spend across all models, in USD. None means unlimited. |
model_limits |
HashMap<String, f64> |
HashMap::new() |
Per-model spending limits in USD. Models not listed here are only constrained by global_limit. |
enforcement |
Enforcement |
Enforcement::Hard |
Whether to reject requests or merely warn when a limit is exceeded. |
CacheConfig¶
Configuration for the response cache.
| Field | Type | Default | Description |
|---|---|---|---|
max_entries |
usize |
256 |
Maximum number of cached entries. |
ttl |
Duration |
300000ms |
Time-to-live for each cached entry. |
backend |
CacheBackend |
CacheBackend::Memory |
Storage backend to use. |
RateLimitConfig¶
Configuration for per-model rate limits.
| Field | Type | Default | Description |
|---|---|---|---|
rpm |
Option<u32> |
None |
Maximum requests per window. None means unlimited. |
tpm |
Option<u64> |
None |
Maximum tokens per window. None means unlimited. |
window |
Duration |
60000ms |
Fixed window duration (defaults to 60 s). |
Other Types¶
ChatCompletionTool¶
A tool the model can invoke (currently, all tools are functions).
| Field | Type | Default | Description |
|---|---|---|---|
tool_type |
ToolType |
— | Tool type (always "function" in OpenAI spec). |
function |
FunctionDefinition |
— | Function definition with name, description, and JSON schema parameters. |
FunctionDefinition¶
Function definition exposed to the model.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Name of the function. Required and must be alphanumeric + underscores. |
description |
Option<String> |
/* serde(default) */ |
Human-readable description explaining what the function does. |
parameters |
Option<serde_json::Value> |
/* serde(default) */ |
JSON Schema defining the function's parameters. |
strict |
Option<bool> |
/* serde(default) */ |
If true, enforce strict JSON schema validation for arguments. |
ToolCall¶
A tool call the model wants to execute.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique ID for this call, used to reference in tool result messages. |
call_type |
ToolType |
— | Tool type (always "function"). |
function |
FunctionCall |
— | Function name and arguments. |
FunctionCall¶
Function call details.
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Function name. |
arguments |
String |
— | Arguments as a JSON string (parse with serde_json::from_str). |
EmbeddingResponse¶
Embedding response.
| Field | Type | Default | Description |
|---|---|---|---|
object |
String |
— | Always "list" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not break deserialization. |
data |
Vec<EmbeddingObject> |
— | List of embeddings. |
model |
String |
— | Model used to generate embeddings. |
usage |
Option<Usage> |
/* serde(default) */ |
Token usage (input tokens only; embeddings have zero output tokens). |
EmbeddingObject¶
A single embedding vector.
| Field | Type | Default | Description |
|---|---|---|---|
object |
String |
— | Always "embedding" from OpenAI-compatible APIs. Stored as a plain String so non-standard provider values do not break deserialization. |
embedding |
Vec<f64> |
— | The embedding vector. |
index |
u32 |
— | Index in the batch (corresponds to input order). |
ModerationResponse¶
Response from the moderation endpoint.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique identifier for this moderation request. |
model |
String |
— | Model used for classification. |
results |
Vec<ModerationResult> |
— | Results for each input string. |
RerankResponse¶
Response from the rerank endpoint.
| Field | Type | Default | Description |
|---|---|---|---|
id |
Option<String> |
None |
Unique identifier for this rerank request. |
results |
Vec<RerankResult> |
— | Reranked documents in order of relevance. |
meta |
Option<serde_json::Value> |
/* serde(default) */ |
Optional metadata about the reranking operation. |
SearchResponse¶
A search response.
| Field | Type | Default | Description |
|---|---|---|---|
results |
Vec<SearchResult> |
— | List of search results. |
model |
String |
— | Model/provider that performed the search. |
OcrResponse¶
An OCR response.
| Field | Type | Default | Description |
|---|---|---|---|
pages |
Vec<OcrPage> |
— | Extracted pages in order. |
model |
String |
— | Model/provider used for OCR. |
usage |
Option<Usage> |
/* serde(default) */ |
Token usage, if reported by the provider. |
OcrPage¶
A single page of OCR output.
| Field | Type | Default | Description |
|---|---|---|---|
index |
u32 |
— | Page index (0-based). |
markdown |
String |
— | Extracted page content as Markdown. |
images |
Vec<OcrImage> |
/* serde(default) */ |
Embedded images extracted from the page (if include_image_base64 was true). |
dimensions |
Option<PageDimensions> |
/* serde(default) */ |
Page dimensions in pixels, if available. |
OcrImage¶
An image extracted from an OCR page.
| Field | Type | Default | Description |
|---|---|---|---|
id |
String |
— | Unique image identifier within the document. |
image_base64 |
Option<String> |
/* serde(default) */ |
Base64-encoded image data (if include_image_base64 was true). |
PageDimensions¶
Page dimensions in pixels.
| Field | Type | Default | Description |
|---|---|---|---|
width |
u32 |
— | Width in pixels. |
height |
u32 |
— | Height in pixels. |
DefaultClient¶
Default client implementation backed by reqwest.
Sends requests to 143 LLM providers with automatic provider detection
and per-request routing. The provider is resolved at construction time
from model_hint (or defaults to OpenAI), but individual requests can
override the provider via model name prefix (e.g. "anthropic/claude-3-5-sonnet"
routes to Anthropic regardless of construction-time setting).
When the model prefix does not match any known provider, the construction-time provider is used as the fallback. This enables seamless migration between providers by changing only the model name.
The provider is stored behind an Arc so it can be shared cheaply into
async closures and streaming tasks. Pre-computed auth headers and extra
headers are cached at construction to avoid redundant encoding on every request.
Opaque type — fields are not directly accessible.
ChunkMiddleware¶
A per-chunk transformation in the StreamPipeline.
Each middleware receives a typed chunk and returns Ok(Some(chunk))
to pass it through (optionally modified), Ok(None) to drop the chunk,
or Err(e) to propagate a stream error.
The trait is object-safe so multiple middleware implementations can be
chained inside StreamPipeline.
Opaque type — fields are not directly accessible.
HealthChecker¶
Abstraction over a health probe strategy.
Implementors issue a lightweight probe against upstream (typically a
provider base URL or named identifier) and report HealthStatus.
Opaque type — fields are not directly accessible.
IntentPrototype¶
An intent prototype: (intent_name, prototype_embedding, target_model_id).
| Field | Type | Default | Description |
|---|---|---|---|
name |
String |
— | Human-readable name for the intent (used in logs/metrics). |
embedding |
Vec<f64> |
— | Pre-computed embedding vector for this intent. |
model |
String |
— | Model to route to when this intent is detected. |
Enums¶
AssistantContent¶
Content shape for assistant messages.
#[serde(untagged)] means providers returning a plain scalar string for the
content field still deserialise correctly into AssistantContent::Text(_).
Providers returning an array of typed parts (e.g. after an image-generation
or audio-synthesis request) deserialise into AssistantContent::Parts(_).
| Variant | Description |
|---|---|
Text |
Plain text response (the common case for text-only models). — Fields: _0: String |
Parts |
Structured parts — text, refusals, output images, output audio. — Fields: _0: Vec<AssistantPart> |
AssistantPart¶
One part of a structured assistant response.
#[serde(tag = "type", rename_all = "snake_case")] matches OpenAI's
parts-spec discriminator ("type": "text", "type": "output_image", …).
| Variant | Wire value | Description |
|---|---|---|
Text |
text |
A text segment of the response. — Fields: text: String |
Refusal |
refusal |
A refusal — the model declined to respond. — Fields: refusal: String |
OutputImage |
output_image |
An image produced by the model (e.g. gpt-image-1, Gemini Imagen). — Fields: image_url: ImageUrl |
OutputAudio |
output_audio |
Audio produced by the model (e.g. gpt-4o-audio-preview). — Fields: audio: AudioContent |
AuthHeaderFormat¶
How the API key is sent in the HTTP request.
| Variant | Description |
|---|---|
Bearer |
Bearer token: Authorization: Bearer <key> |
ApiKey |
Custom header: e.g., X-Api-Key: <key> — Fields: _0: String |
None |
No authentication required. |
AuthType¶
Auth scheme used by a provider.
| Variant | Wire value | Description |
|---|---|---|
Bearer |
bearer |
Standard Authorization: Bearer <key> header. |
ApiKey |
api-key |
x-api-key: <key> header (also handles "header" and "x-api-key" aliases). |
None |
none |
No authentication header required. |
Unknown |
unknown |
Unrecognised auth scheme — falls back to bearer. |
BatchStatus¶
Status of a batch job.
| Variant | Wire value | Description |
|---|---|---|
Validating |
validating |
Validating the input file. |
Failed |
failed |
Job failed. |
InProgress |
in_progress |
Job is running. |
Finalizing |
finalizing |
Finalizing results. |
Completed |
completed |
Job completed successfully. |
Expired |
expired |
Job expired before completion. |
Cancelling |
cancelling |
Job is being cancelled. |
Cancelled |
cancelled |
Job has been cancelled. |
CacheBackend¶
Storage backend for the response cache.
| Variant | Wire value | Description |
|---|---|---|
Memory |
memory |
In-memory LRU cache (default). No external dependencies. |
OpenDal |
open_dal |
OpenDAL-backed storage. Supports 40+ backends (S3, Redis, GCS, local FS, etc.). — Fields: scheme: String, config: HashMap<String, String> |
CircuitState¶
Observable state of a circuit breaker.
| Variant | Description |
|---|---|
Closed |
Requests flow through normally. |
Open |
All requests are rejected; the circuit is waiting for the backoff to elapse. |
HalfOpen |
One probe request is allowed through to test service health. |
ContentPart¶
A single content part in a user message — text, image, document, or audio.
| Variant | Wire value | Description |
|---|---|---|
Text |
text |
Plain text. — Fields: text: String |
ImageUrl |
image_url |
Image identified by URL (with optional detail level). — Fields: image_url: ImageUrl |
Document |
document |
Document file (PDF, CSV, etc.) as base64 or URL. — Fields: document: DocumentContent |
InputAudio |
input_audio |
Audio input as base64. — Fields: input_audio: AudioContent |
EmbeddingFormat¶
The format in which the embedding vectors are returned.
| Variant | Wire value | Description |
|---|---|---|
Float |
float |
32-bit floating-point numbers (default). |
Base64 |
base64 |
Base64-encoded string representation of the floats. |
EmbeddingInput¶
Text or texts to embed.
| Variant | Description |
|---|---|
Single |
Single text string. — Fields: _0: String |
Multiple |
Multiple text strings (batch embedding). — Fields: _0: Vec<String> |
Enforcement¶
How budget limits are enforced.
| Variant | Description |
|---|---|
Hard |
Reject requests that would exceed the budget with LiterLlmError::BudgetExceeded. |
Soft |
Allow requests through but emit a tracing::warn! when the budget is exceeded. |
FilePurpose¶
Purpose of an uploaded file.
| Variant | Wire value | Description |
|---|---|---|
Assistants |
assistants |
File for use with Assistants API. |
Batch |
batch |
File for batch processing. |
FineTune |
fine-tune |
File for fine-tuning. |
Vision |
vision |
File for vision/image tasks. |
FinishReason¶
Why a choice stopped generating tokens.
| Variant | Wire value | Description |
|---|---|---|
Stop |
stop |
Stop |
Length |
length |
Length |
ToolCalls |
tool_calls |
Tool calls |
ContentFilter |
content_filter |
Content filter |
FunctionCall |
function_call |
Deprecated legacy finish reason; retained for API compatibility. |
Other |
other |
Catch-all for unknown finish reasons returned by non-OpenAI providers. Note: this intentionally does not carry the original string (e.g. Other(String)). Using #\[serde(other)\] requires a unit variant, and switching to #\[serde(untagged)\] would change deserialization semantics for all variants. The original value can be recovered by inspecting the raw JSON if needed. |
HealthStatus¶
The result of a single health probe.
| Variant | Description |
|---|---|
Healthy |
The probe succeeded; the upstream is reachable. |
Unhealthy |
The probe failed; the upstream may be down. |
ImageDetail¶
Image detail level controlling token cost and processing.
| Variant | Wire value | Description |
|---|---|---|
Low |
low |
Low detail: scales image to 512x512, uses fewer tokens. |
High |
high |
High detail: processes up to 2x2 grid of tiles, higher token cost. |
Auto |
auto |
Auto: model chooses low or high based on image dimensions. |
Message¶
A chat message in a conversation.
| Variant | Wire value | Description |
|---|---|---|
System |
system |
System — Fields: _0: SystemMessage |
User |
user |
User — Fields: _0: UserMessage |
Assistant |
assistant |
Assistant — Fields: _0: AssistantMessage |
Tool |
tool |
Tool — Fields: _0: ToolMessage |
Developer |
developer |
Developer — Fields: _0: DeveloperMessage |
Function |
function |
Deprecated legacy function-role message; retained for API compatibility. — Fields: _0: FunctionMessage |
Modality¶
Output modality requested from the model.
Passed as modalities: ["text", "audio"] (OpenAI) or translated to
generationConfig.responseModalities (Gemini / Vertex AI).
| Variant | Wire value | Description |
|---|---|---|
Text |
text |
Text output (the default for all providers). |
Audio |
audio |
Audio / speech output. |
Image |
image |
Image output (Gemini Imagen, gpt-image-1). |
ModerationInput¶
Input to the moderation endpoint — a single string or multiple strings.
| Variant | Description |
|---|---|
Single |
Single text string. — Fields: _0: String |
Multiple |
Multiple text strings (batch moderation). — Fields: _0: Vec<String> |
OcrDocument¶
Document input for OCR — either a URL or inline base64 data.
| Variant | Wire value | Description |
|---|---|---|
Url |
document_url |
A publicly accessible document URL. — Fields: url: String |
Base64 |
base64 |
Inline base64-encoded document data. — Fields: data: String, media_type: String |
ReasoningEffort¶
Controls how much reasoning effort the model should use.
| Variant | Wire value | Description |
|---|---|---|
Low |
low |
Low |
Medium |
medium |
Medium |
High |
high |
High |
RerankDocument¶
A document to be reranked — either a plain string or an object with a text field.
| Variant | Description |
|---|---|
Text |
Plain text document content. — Fields: _0: String |
Object |
Document with explicit text field (may include metadata). — Fields: text: String |
ResponseFormat¶
Wire format for the chat completions response_format field.
Provider mapping¶
-
OpenAI (and OpenAI-compatible providers): emitted verbatim as
{"type": "json_schema", "json_schema": {...}}per the chat-completions spec. -
Gemini / Vertex AI: translated to
generationConfig.responseMimeType = "application/json"andgenerationConfig.responseSchema = <schema>. Thename,description, andstrictfields are dropped — Gemini's structured-output API does not consume them. -
Anthropic: no native JSON mode. A system instruction is prepended asking the model to respond with valid JSON.
strictis advisory only; callers should still validate the returned JSON if the schema is load-bearing.
| Variant | Wire value | Description |
|---|---|---|
Text |
text |
Plain text output (default). |
JsonObject |
json_object |
Output must be valid JSON object (no schema validation). |
JsonSchema |
json_schema |
Output must conform to the specified JSON schema. — Fields: json_schema: JsonSchemaFormat |
StopSequence¶
Stop sequence(s) that cause the model to stop generating.
| Variant | Description |
|---|---|
Single |
Single stop sequence. — Fields: _0: String |
Multiple |
Multiple stop sequences. — Fields: _0: Vec<String> |
StreamFormat¶
The streaming wire format a provider uses for its response stream.
Most providers use standard Server-Sent Events (SSE). AWS Bedrock uses a proprietary binary EventStream framing.
Deserialized from the streaming_format JSON field via serde.
| Variant | Wire value | Description |
|---|---|---|
Sse |
sse |
Standard Server-Sent Events (text/event-stream). |
AwsEventStream |
aws_event_stream |
AWS EventStream binary framing (application/vnd.amazon.eventstream). |
ToolChoice¶
Tool usage mode or a specific tool to call.
| Variant | Description |
|---|---|
Mode |
Predefined mode: auto, required, or none. — Fields: _0: ToolChoiceMode |
Specific |
Force a specific tool to be called. — Fields: _0: SpecificToolChoice |
ToolChoiceMode¶
Tool choice mode.
| Variant | Wire value | Description |
|---|---|---|
Auto |
auto |
Model may or may not call tools; default behavior. |
Required |
required |
Model must call at least one tool. |
None |
none |
Model must not call any tools. |
ToolType¶
The type discriminator for tool/tool-call objects.
Per the OpenAI spec this is always "function". Using an enum enforces
that constraint at the type level and rejects any other value on
deserialization.
| Variant | Wire value | Description |
|---|---|---|
Function |
function |
Function |
UserContent¶
User message content as either plain text or a list of multimodal parts.
| Variant | Description |
|---|---|
Text |
Plain text content. — Fields: _0: String |
Parts |
Array of content parts (text, images, documents, audio). — Fields: _0: Vec<ContentPart> |