adk_model/
lib.rs

1//! # adk-model
2//!
3//! LLM model integrations for ADK (Gemini, OpenAI, Anthropic, etc.).
4//!
5//! ## Overview
6//!
7//! This crate provides LLM implementations for ADK agents. Currently supports:
8//!
9//! - [`GeminiModel`] - Google's Gemini models (2.0 Flash, Pro, etc.)
10//! - [`OpenAIClient`] - OpenAI models (GPT-4o, GPT-4o-mini, etc.)
11//! - [`AzureOpenAIClient`] - Azure OpenAI Service
12//! - [`AnthropicClient`] - Anthropic Claude models (Claude 4, Claude 3.5, etc.)
13//! - [`MockLlm`] - Mock LLM for testing
14//!
15//! ## Quick Start
16//!
17//! ### Gemini
18//!
19//! ```rust,no_run
20//! use adk_model::GeminiModel;
21//! use std::sync::Arc;
22//!
23//! let api_key = std::env::var("GOOGLE_API_KEY").unwrap();
24//! let model = GeminiModel::new(&api_key, "gemini-2.0-flash-exp").unwrap();
25//! ```
26//!
27//! ### OpenAI
28//!
29//! ```rust,ignore
30//! use adk_model::openai::{OpenAIClient, OpenAIConfig};
31//!
32//! let model = OpenAIClient::new(OpenAIConfig::new(
33//!     std::env::var("OPENAI_API_KEY").unwrap(),
34//!     "gpt-4o-mini",
35//! )).unwrap();
36//! ```
37//!
38//! ### Anthropic
39//!
40//! ```rust,ignore
41//! use adk_model::anthropic::{AnthropicClient, AnthropicConfig};
42//!
43//! let model = AnthropicClient::new(AnthropicConfig::new(
44//!     std::env::var("ANTHROPIC_API_KEY").unwrap(),
45//!     "claude-sonnet-4-20250514",
46//! )).unwrap();
47//! ```
48//!
49//! ## Supported Models
50//!
51//! ### Gemini
52//! | Model | Description |
53//! |-------|-------------|
54//! | `gemini-2.0-flash-exp` | Fast, efficient model (recommended) |
55//! | `gemini-1.5-pro` | Most capable model |
56//! | `gemini-1.5-flash` | Balanced speed/capability |
57//!
58//! ### OpenAI
59//! | Model | Description |
60//! |-------|-------------|
61//! | `gpt-4o` | Most capable model |
62//! | `gpt-4o-mini` | Fast, cost-effective |
63//! | `gpt-4-turbo` | Previous generation flagship |
64//!
65//! ### Anthropic
66//! | Model | Description |
67//! |-------|-------------|
68//! | `claude-sonnet-4-20250514` | Latest Claude 4 Sonnet |
69//! | `claude-3-5-sonnet-20241022` | Claude 3.5 Sonnet |
70//! | `claude-3-opus-20240229` | Most capable Claude 3 |
71//!
72//! ## Features
73//!
74//! - Async streaming with backpressure
75//! - Tool/function calling support
76//! - Multimodal input (text, images, audio, video, PDF)
77//! - Generation configuration (temperature, top_p, etc.)
78//! - OpenAI-compatible APIs (Ollama, vLLM, etc.)
79
80#[cfg(feature = "anthropic")]
81pub mod anthropic;
82#[cfg(feature = "gemini")]
83pub mod gemini;
84pub mod mock;
85#[cfg(feature = "openai")]
86pub mod openai;
87
88#[cfg(feature = "anthropic")]
89pub use anthropic::AnthropicClient;
90#[cfg(feature = "gemini")]
91pub use gemini::GeminiModel;
92pub use mock::MockLlm;
93#[cfg(feature = "openai")]
94pub use openai::{AzureOpenAIClient, OpenAIClient};