ExLLM.Providers.Gemini (ex_llm v0.8.1)
View SourceGoogle 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.Providers.Gemini.chat(messages, config_provider: ExLLM.Infrastructure.ConfigProvider.Env)
Using Static Configuration
config = %{
gemini: %{
api_key: "your-api-key",
model: "gemini-2.5-flash-preview-05-20"
}
}
{:ok, provider} = ExLLM.Infrastructure.ConfigProvider.Static.start_link(config)
ExLLM.Providers.Gemini.chat(messages, config_provider: provider)
Example Usage
messages = [
%{role: "user", content: "Hello, how are you?"}
]
# Simple chat
{:ok, response} = ExLLM.Providers.Gemini.chat(messages)
IO.puts(response.content)
# Streaming chat
{:ok, stream} = ExLLM.Providers.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.Providers.Gemini.chat(messages, options)