Genai

OpenAI-compatible chat completions for Ruby.

Installation

Add the gem to your Gemfile:

gem "genai-rb"

Install dependencies:

bundle install

Or install it directly:

gem install genai-rb

Setup

Set your API key:

export OPENAI_API_KEY="api_key"

By default, requests go to:

https://api.openai.com/v1

For another OpenAI-compatible provider, set OPENAI_BASE_URL with /v1 included:

export OPENAI_BASE_URL="https://api.example.com/v1"

For Gemini's OpenAI-compatible endpoint:

export OPENAI_API_KEY="gemini_api_key"
export OPENAI_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai"

You can also pass values in Ruby:

require "genai"

client = Genai.new(
  api_key: "api_key",
  base_url: "https://api.openai.com/v1"
)

Quick Start

require "genai"

client = Genai.new

response = client.generate_content(contents: "Hello, how are you?")
puts response

The default model is gpt-5.5.

Run the included example:

ruby example.rb

Edit the variables at the top of example.rb to change providers:

api_key = "your_api_key"
base_url = "https://api.openai.com/v1"
model = "gpt-5.5"

For Gemini's OpenAI-compatible endpoint:

api_key = "your_gemini_api_key"
base_url = "https://generativelanguage.googleapis.com/v1beta/openai"
model = "gemini-2.5-flash"

Choosing A Model

response = client.generate_content(
  model: "gpt-5.5",
  contents: "Explain quantum computing."
)

puts response

Configuration

Pass OpenAI chat completion options with config:

response = client.generate_content(
  contents: "Write a short story about a robot learning to paint.",
  config: {
    temperature: 0.8,
    max_tokens: 1000
  }
)

max_output_tokens is accepted as an alias for max_tokens.

Messages

Use OpenAI-style messages when you need system or multi-turn context:

response = client.generate_content(
  contents: [
    { role: "system", content: "Answer briefly." },
    { role: "user", content: "0.1 + 0.2 == 0.3? Explain." }
  ]
)

puts response

Chat Sessions

chat = client.chats.create(model: "gpt-5.5")

puts chat.send_message("a = 231018")
puts chat.send_message("What is a?")

Supported APIs

  • OpenAI Chat Completions API
  • OpenAI-compatible /v1/chat/completions providers

License

Open source under the MIT License.