ExLLM.Adapters.Gemini (ex_llm v0.5.0)

View Source

Google Gemini API adapter for ExLLM.

Supports Gemini 2.5, 2.0, and 1.5 models including Flash and Pro variants.

Configuration

This adapter requires a Google API key.

Using Environment Variables

# Set environment variables
export GOOGLE_API_KEY="your-api-key"
export GEMINI_MODEL="gemini-2.0-flash"  # optional

# Use with default environment provider
ExLLM.Adapters.Gemini.chat(messages, config_provider: ExLLM.ConfigProvider.Env)

Using Static Configuration

config = %{
  gemini: %{
    api_key: "your-api-key",
    model: "gemini-2.5-flash-preview-05-20"
  }
}
{:ok, provider} = ExLLM.ConfigProvider.Static.start_link(config)
ExLLM.Adapters.Gemini.chat(messages, config_provider: provider)

Example Usage

messages = [
  %{role: "user", content: "Hello, how are you?"}
]

# Simple chat
{:ok, response} = ExLLM.Adapters.Gemini.chat(messages)
IO.puts(response.content)

# Streaming chat
{:ok, stream} = ExLLM.Adapters.Gemini.stream_chat(messages)
for chunk <- stream do
  if chunk.content, do: IO.write(chunk.content)
end

Safety Settings

You can customize safety settings:

options = [
  safety_settings: [
    %{category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_ONLY_HIGH"},
    %{category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_ONLY_HIGH"}
  ]
]
{:ok, response} = ExLLM.Adapters.Gemini.chat(messages, options)