#gemini-api #google-gemini

gemini-rs

A library to interact with the Google Gemini API

17 releases (6 stable)

Uses new Rust 2024

2.0.0 Jun 11, 2025
1.4.0 Jun 11, 2025
1.3.0 May 18, 2025
1.1.0 Mar 19, 2025
0.4.2 Nov 15, 2024

#23 in #gemini-api


Used in whathaveidone

MIT license

49KB
978 lines

STILL A WIP

A library to use Google Gemini's API directly in Rust! Made because the current options weren't very capable and didn't support 100% of the official API.

Example

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!(
        "{}",
        gemini_rs::chat("gemini-2.0-flash")
            .send_message("Explain how AI works")
            .await?
    );
    Ok(())
}

lib.rs:

A Rust client library for Google's Gemini AI models.

Overview

This library provides a fully-featured client for interacting with Google's Gemini AI models, supporting all major API features including:

  • Text generation and chat conversations
  • JSON-structured outputs
  • Function calling
  • Safety settings and content filtering
  • System instructions
  • Model configuration (temperature, tokens, etc.)

Authentication

The client requires a Gemini API key which can be provided in two ways:

  • Environment variable: GEMINI_API_KEY
  • Programmatically: Client::new(api_key)

Basic Usage

#[tokio::main]
async fn main() -> gemini_rs::Result<()> {
    // Simple chat interaction
    let response = gemini_rs::chat("gemini-2.0-flash")
        .send_message("What is Rust's ownership model?")
        .await?;
    println!("{}", response);

    Ok(())
}

Advanced Features

The library supports advanced Gemini features through the Client and Chat types:

  • Model management (client().models())
  • Custom generation settings (chat.config_mut())
  • Safety settings (chat.safety_settings())
  • System instructions (chat.system_instruction())
  • Conversation history management (chat.history_mut())

Dependencies

~6–14MB
~229K SLoC