gemini
Google Gemini API bindings for Hot.
Installation
Add this to the deps in your hot.hot file:
"hot.dev/gemini": "0.9.2"
Configuration
Set your Gemini API key:
::hot::ctx/set({
"gemini.api.key": "YOUR_API_KEY"
})
Features
Chat/Generation
response ::gemini::chat/generate({
contents: [{role: "user", parts: [{text: "Hello!"}]}]
}, "gemini-2.0-flash")
// Convenience function
response ::gemini::chat/chat("gemini-2.0-flash", "What is the capital of France?")
Streaming
stream ::gemini::chat/generate-stream({
contents: [{role: "user", parts: [{text: "Tell me a story"}]}]
}, "gemini-2.0-flash")
for-each(stream.body, (chunk) {
println(chunk)
})
Image Generation (Imagen)
Generate images using Google's Imagen model:
// Simple generation
response ::gemini::images/generate({
prompt: "A serene lake at sunset",
numberOfImages: 2,
aspectRatio: "16:9"
})
// Generate and save to file (returns Media.Image)
result ::gemini::images/generate-to-file("output/sunset.png", "A serene lake at sunset")
match result {
Media.Image => {
println(result.file.path) // "output/sunset.png"
println(result.prompt) // "A serene lake at sunset"
}
HttpError => { println("Error!") }
}
Inline Image Generation (Gemini 2.0 Flash)
Gemini 2.0 Flash supports native image generation within chat responses:
// Generate image inline (unique to Gemini!)
result ::gemini::images/generate-inline-to-file("output/robot.png", "Draw a cute robot watering plants")
match result {
Media.Image => { println(result.file.path) }
HttpError => { println("Error!") }
}
Batch Image Generation
batch ::gemini::images/generate-batch-to-files("output", {
prompt: "A magical forest",
numberOfImages: 3,
aspectRatio: "1:1"
})
println(`Generated ${batch.succeeded} images`)
Models
// List available models
models ::gemini::models/list()
// Get specific model
model ::gemini::models/get("gemini-2.0-flash")
File Upload
// Upload a file
file ::gemini::files/upload("image.png", "image/png")
// List uploaded files
files ::gemini::files/list()
API Base URL
https://generativelanguage.googleapis.com
Documentation
Full documentation available at hot.dev/pkg/gemini
License
Apache-2.0 - see LICENSE