llm_kit_assemblyai/
lib.rs

1//! AssemblyAI provider implementation for the LLM Kit.
2//!
3//! This crate provides a provider implementation for AssemblyAI's transcription API,
4//! supporting speech-to-text functionality with advanced features like speaker
5//! diarization, sentiment analysis, and content moderation.
6//!
7//! # Examples
8//!
9//! ## Basic Transcription (Provider-Only)
10//!
11//! ```no_run
12//! use llm_kit_assemblyai::AssemblyAIClient;
13//! use llm_kit_provider::transcription_model::call_options::TranscriptionModelCallOptions;
14//!
15//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
16//! // Create a provider using the client builder
17//! let provider = AssemblyAIClient::new()
18//!     .api_key("your-api-key")
19//!     .build();
20//!
21//! let model = provider.transcription_model("best");
22//!
23//! // Download audio from a URL
24//! let audio_url = "https://example.com/audio.mp3";
25//! let audio_data = reqwest::get(audio_url).await?.bytes().await?;
26//!
27//! // Create call options with mp3 audio
28//! let call_options = TranscriptionModelCallOptions::mp3(audio_data.to_vec());
29//!
30//! // Call do_generate() directly (provider trait method)
31//! let result = model.do_generate(call_options).await?;
32//!
33//! println!("Transcription: {}", result.text);
34//! # Ok(())
35//! # }
36//! ```
37//!
38//! ## Using Provider Options
39//!
40//! ```no_run
41//! use llm_kit_assemblyai::AssemblyAIClient;
42//! use llm_kit_provider::transcription_model::call_options::TranscriptionModelCallOptions;
43//! use llm_kit_provider::shared::provider_options::SharedProviderOptions;
44//!
45//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
46//! let provider = AssemblyAIClient::new()
47//!     .api_key("your-api-key")
48//!     .build();
49//!
50//! let model = provider.transcription_model("best");
51//!
52//! let audio_url = "https://example.com/audio.mp3";
53//! let audio_data = reqwest::get(audio_url).await?.bytes().await?;
54//!
55//! // Configure provider options for advanced features
56//! let mut provider_options = SharedProviderOptions::new();
57//! provider_options.insert(
58//!     "assemblyai".to_string(),
59//!     vec![
60//!         ("speakerLabels".to_string(), serde_json::json!(true)),
61//!         ("speakersExpected".to_string(), serde_json::json!(2)),
62//!         ("sentimentAnalysis".to_string(), serde_json::json!(true)),
63//!         ("autoChapters".to_string(), serde_json::json!(true)),
64//!     ]
65//!     .into_iter()
66//!     .collect(),
67//! );
68//!
69//! let call_options = TranscriptionModelCallOptions::mp3(audio_data.to_vec())
70//!     .with_provider_options(provider_options);
71//!
72//! let result = model.do_generate(call_options).await?;
73//!
74//! println!("Transcription: {}", result.text);
75//! println!("Segments: {}", result.segments.len());
76//! # Ok(())
77//! # }
78//! ```
79
80/// Client builder for creating AssemblyAI providers.
81pub mod client;
82/// Error types for AssemblyAI provider operations.
83pub mod error;
84/// Provider implementation and creation functions.
85pub mod provider;
86/// Settings and configuration for AssemblyAI providers.
87pub mod settings;
88/// Transcription model implementation.
89pub mod transcription;
90
91// Re-export main types
92pub use client::AssemblyAIClient;
93pub use error::AssemblyAIError;
94pub use provider::AssemblyAIProvider;
95pub use settings::AssemblyAIProviderSettings;
96pub use transcription::{
97    AssemblyAITranscriptionModel, AssemblyAITranscriptionModelId, AssemblyAITranscriptionOptions,
98};
99
100/// The version of this crate.
101pub const VERSION: &str = env!("CARGO_PKG_VERSION");