| Crates.io | ai-sdk-provider |
| lib.rs | ai-sdk-provider |
| version | 0.3.0 |
| created_at | 2025-11-12 10:17:14.490182+00 |
| updated_at | 2025-11-23 06:15:51.641555+00 |
| description | Provider specification for AI SDK - trait-based interfaces for AI models |
| homepage | |
| repository | https://github.com/khongtrunght/ai-sdk-rust |
| max_upload_size | |
| id | 1929062 |
| size | 197,453 |
This crate defines the provider interface specification that all AI model providers must implement.
The AI SDK Provider crate provides trait-based interfaces for different types of AI models:
All model interfaces follow the v3 specification pattern with consistent error handling, metadata support, and provider-specific options.
The LanguageModel trait provides an interface for text generation and chat models.
use ai_sdk_provider::{LanguageModel, CallOptions};
// Use with any provider implementation
async fn generate_text<M: LanguageModel>(model: &M, prompt: &str) {
let options = CallOptions { /* ... */ };
let response = model.do_generate(options).await?;
println!("Generated: {}", response.text);
}
The EmbeddingModel trait provides an interface for generating text embeddings.
The ImageModel trait provides an interface for image generation models like DALL-E.
The SpeechModel trait provides an interface for text-to-speech synthesis.
The TranscriptionModel trait provides an interface for speech-to-text transcription.
The RerankingModel trait provides an interface for document reranking.
Reranking models take a query and a list of documents and reorder them by
relevance.
Currently, no providers are implemented in the ai-sdk-provider crate.
Provider implementations should be added in separate crates.
See examples/reranking_trait.rs for a complete example of implementing
the RerankingModel trait.
use ai_sdk_provider::{RerankingModel, RerankOptions, Documents};
async fn rerank_documents<M: RerankingModel>(
model: &M,
query: &str,
docs: Vec<String>
) -> Result<Vec<(usize, f64)>, Box<dyn std::error::Error>> {
let options = RerankOptions {
documents: Documents::Text { values: docs },
query: query.to_string(),
top_n: Some(5),
abort_signal: None,
provider_options: None,
headers: None,
};
let response = model.do_rerank(options).await?;
Ok(response.ranking.into_iter()
.map(|r| (r.index, r.relevance_score))
.collect())
}
Provider implementations are maintained in separate crates:
ai-sdk-openai - OpenAI provider (Language, Embedding, Image, Speech, Transcription)ai-sdk-anthropic - Anthropic provider (Language)ai-sdk-cohere - Cohere provider (Language, Embedding, Reranking)The crate also provides shared types used across all model interfaces:
SharedHeaders - HTTP headersSharedProviderOptions - Provider-specific input optionsSharedProviderMetadata - Provider-specific output metadataSharedWarning - Warnings about unsupported features or compatibility issuesJsonValue, JsonObject, JsonArray - JSON value typesWhen implementing a new provider:
SharedProviderOptionsSharedProviderMetadataSharedWarningSee the main AI SDK repository for license information.