Expand README with features, quick start, examples, and API reference
Some checks failed
Rust / build (push) Has been cancelled

This commit is contained in:
2026-04-06 21:13:49 +01:00
parent 1d467138ed
commit f9c50a3f45

132
README.md
View File

@@ -1,2 +1,132 @@
# gemini-rs [![Rust](https://github.com/andreban/gemini-rs/actions/workflows/rust.yml/badge.svg)](https://github.com/andreban/gemini-rs/actions/workflows/rust.yml) # gemini-rs [![Rust](https://github.com/andreban/gemini-rs/actions/workflows/rust.yml/badge.svg)](https://github.com/andreban/gemini-rs/actions/workflows/rust.yml)
A Rust wrapper for the Google Cloud Gemini REST API
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`:
```toml
[dependencies]
gemini-rs = { path = "path/to/gemini-rs" }
tokio = { version = "1", features = ["full"] }
```
## Quick Start
```rust
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:
```bash
# 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-flash`
- `gemini-2.0-flash-lite`
- `gemini-1.5-pro`
- `gemini-1.5-flash`
- `text-embedding-004`
- `imagen-3.0-generate-002`
## License
See [LICENSE](LICENSE) for details.