Skip to main content

aimux_core/
lib.rs

1//! # aimux-core
2//!
3//! Core abstractions for the aimux toolkit.
4//!
5//! Architecture (aligned with Vercel AI SDK V4):
6//!
7//! ```text
8//!   User-facing API          Provider-facing trait
9//!   ──────────────           ─────────────────────
10//!   generate_text()  ──►     LanguageModel::do_generate()
11//!   stream_text()    ──►     LanguageModel::do_stream()
12//! ```
13//!
14//! The user calls `generate_text` / `stream_text` (free functions).
15//! These convert user messages into `LanguageModelPrompt`, build `CallOptions`,
16//! and call `LanguageModel::do_generate` / `do_stream` on the provider implementation.
17
18pub mod content;
19pub mod embedding_model;
20pub mod error;
21pub mod files_model;
22pub mod generate;
23pub mod image_model;
24pub mod json_repair;
25pub mod language_model;
26pub mod language_model_message;
27pub mod math;
28pub mod message;
29pub mod model_id;
30pub mod options;
31pub mod provider;
32pub mod reranking_model;
33pub mod result;
34pub mod search_model;
35pub mod shared;
36pub mod speech_model;
37pub mod stream_part;
38pub mod tool;
39pub mod transcription_model;
40pub mod types;
41pub mod util;
42pub mod video_model;
43
44/// Convenience re-exports.
45pub mod prelude {
46    pub use crate::content::ContentPart;
47    pub use crate::embedding_model::{EmbeddingCallOptions, EmbeddingModel, EmbeddingResult};
48    pub use crate::error::AiMuxError;
49    pub use crate::files_model::{Files, UploadFileCallOptions, UploadFileResult};
50    pub use crate::generate::{
51        GenerateTextOptions, GenerateTextResult, StreamTextResult, generate_text, stream_text,
52    };
53    pub use crate::image_model::{ImageCallOptions, ImageModel, ImageResult};
54    pub use crate::language_model::LanguageModel;
55    pub use crate::language_model_message::LanguageModelPrompt;
56    pub use crate::message::{MessageContent, ModelMessage, ModelPrompt, Role};
57    pub use crate::model_id::ModelId;
58    pub use crate::options::{CallOptions, ResponseFormat, ToolChoice};
59    pub use crate::provider::Provider;
60    pub use crate::reranking_model::{RerankingCallOptions, RerankingModel, RerankingResult};
61    pub use crate::result::{GenerateResult, StreamResult};
62    pub use crate::search_model::{
63        SearchCallOptions, SearchModel, SearchResponse, SearchResult, SearchResultItem,
64    };
65    pub use crate::shared::{
66        AbortSignal, AspectRatio, FileBytes, FileData, SharedHeaders, SharedProviderMetadata,
67        SharedProviderOptions, SharedProviderReference, Size,
68    };
69    pub use crate::speech_model::{SpeechCallOptions, SpeechModel, SpeechResult};
70    pub use crate::stream_part::StreamPart;
71    pub use crate::tool::{FunctionTool, ProviderTool, Tool, ToolCall, ToolResult};
72    pub use crate::transcription_model::{
73        TranscriptionCallOptions, TranscriptionModel, TranscriptionResult,
74    };
75    pub use crate::types::{FinishReason, FinishReasonUnified, ReasoningEffort, Usage, Warning};
76    pub use crate::video_model::{VideoCallOptions, VideoModel, VideoResult};
77}
78
79// Root-level re-exports for convenience.
80pub use embedding_model::EmbeddingModel;
81pub use error::AiMuxError;
82pub use files_model::Files;
83pub use image_model::ImageModel;
84pub use language_model::LanguageModel;
85pub use provider::Provider;
86pub use reranking_model::RerankingModel;
87pub use search_model::SearchModel;
88pub use speech_model::SpeechModel;
89pub use transcription_model::TranscriptionModel;
90pub use video_model::VideoModel;