Skip to main content

kcode_gemini_api/
lib.rs

1//! Gemini inference with in-memory session usage accounting and spending limits.
2//!
3//! [`Gemini`] intentionally supports Gemini 2.5 Flash, Gemini 3.1 Flash-Lite,
4//! Gemini 3.1 Pro Preview, Nano Banana Pro, multimodal inference, and grounded
5//! search. Nothing is persisted by this crate.
6
7#![deny(missing_docs)]
8#![forbid(unsafe_code)]
9
10mod accounting;
11mod agent;
12mod api;
13mod error;
14mod model;
15
16pub use accounting::{
17    GroupedUsage, LimitPeriod, LimitStatus, SpendingLimits, UsageBreakdown, UsageRecord,
18    UsageTotals, UsageWindow,
19};
20pub use agent::{AgentTool, AgentToolCall, AgentTurnRequest, AgentTurnResponse, ModelMetadata};
21pub use api::Gemini;
22pub use error::{Error, Result};
23pub use model::{
24    AspectRatio, CompletionStatus, CostAccuracy, CostBreakdown, GeneratedImage, GenerationOptions,
25    GroundedSearchRequest, GroundedSearchResponse, InferenceRequest, InferenceResponse, MediaInput,
26    MediaKind, Modality, ModalityTokens, Money, MultimodalRequest, NanoBananaProRequest,
27    ServiceTier, StructuredOutput, TextModel, ThinkingLevel, TokenUsage, WebSource,
28};
29
30/// Stable Gemini 3.1 Flash-Lite model identifier.
31pub const GEMINI_31_FLASH_LITE: &str = "gemini-3.1-flash-lite";
32/// Current Gemini 3.1 Pro preview model identifier.
33pub const GEMINI_31_PRO: &str = "gemini-3.1-pro-preview";
34/// Stable Gemini 2.5 Flash model identifier.
35pub const GEMINI_25_FLASH: &str = "gemini-2.5-flash";
36/// Stable Nano Banana Pro model identifier.
37pub const NANO_BANANA_PRO: &str = "gemini-3-pro-image";