Some checks failed
Rust / build (push) Has been cancelled
gemini-rs 
A Rust wrapper for the Google Cloud Gemini REST API (Vertex AI).
Features
- Text Generation: Generate text responses from Gemini models
- Streaming: Stream responses in real-time using SSE
- Text Embeddings: Generate text embeddings for ML pipelines
- Token Counting: Count tokens before making API calls
- Image Generation: Generate and predict images
- Conversations: Maintain multi-turn dialogue context
- Safety Settings: Configure content safety thresholds
- Function Calling: Declare and use tools/functions
- Google Search Retrieval: Enable dynamic search-backed responses
- JSON Schema Responses: Get structured JSON output
Installation
Add this to your Cargo.toml:
[dependencies]
gemini-rs = { path = "path/to/gemini-rs" }
tokio = { version = "1", features = ["full"] }
Quick Start
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Authenticate with GCP
let provider = AuthenticationManager::new();
// Create client
let client = GeminiClient::new(
provider,
"us-central1-aiplatform.googleapis.com".to_string(),
"your-project-id".to_string(),
"us-central1".to_string(),
);
// Generate content
let request = GenerateContentRequest::builder()
.contents(vec![Content {
role: Some(Role::User),
parts: Some(vec![Part::Text("Hello, Gemini!".to_string())]),
}])
.build();
let response = client.generate_content(&request, "gemini-2.0-flash").await?;
for candidate in &response.candidates {
if let Some(text) = candidate.get_text() {
println!("{}", text);
}
}
Ok(())
}
Examples
Run the examples in the examples/ directory:
# Generate text
cargo run --example text-from-text
# Streaming text generation
cargo run --example text-from-text-streaming
# Multi-turn conversation
cargo run --example conversation
# Count tokens
cargo run --example count-tokens
# Generate images
cargo run --example generate_image
# Text embeddings
cargo run --example text-embedding
# JSON schema responses
cargo run --example json-schema
# Safety settings
cargo run --example safety-setting
# System instructions
cargo run --example system_instruction
# Google Search Retrieval
cargo run --example google-search-retrieval
# Google Search tool
cargo run --example google-search
API Reference
Client Methods
| Method | Description |
|---|---|
generate_content() |
Generate content from a model |
generate_content_stream() |
Stream content generation responses |
stream_generate_content() |
Stream content using a queue-based approach |
prompt_conversation() |
Send a conversation prompt and get response |
text_embeddings() |
Generate text embeddings |
count_tokens() |
Count tokens in a request |
predict_image() |
Generate/predict images |
Supported Models
The library works with all Vertex AI Gemini models, including:
gemini-2.0-flashgemini-2.0-flash-litegemini-1.5-progemini-1.5-flashtext-embedding-004imagen-3.0-generate-002
License
See LICENSE for details.
Languages
Rust
100%