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

#358 in Web programming

Download history 15/week @ 2025-03-12 141/week @ 2025-03-19 14/week @ 2025-03-26 3/week @ 2025-04-02 10/week @ 2025-04-09 17/week @ 2025-04-16 16/week @ 2025-04-23 19/week @ 2025-05-07 251/week @ 2025-05-14 98/week @ 2025-05-21 64/week @ 2025-05-28 32/week @ 2025-06-04 326/week @ 2025-06-11 49/week @ 2025-06-18 60/week @ 2025-06-25

484 downloads per month
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

~7–19MB
~236K SLoC