Google Gemini
FlowKit supports Google's Gemini models via the GeminiAdapter.
Setup
bash
export GOOGLE_AI_API_KEY=...Get your API key from Google AI Studio.
Usage
typescript
import { GeminiAdapter } from "@andresaya/flowkit";
const adapter = new GeminiAdapter({
apiKey: process.env.GOOGLE_AI_API_KEY!,
model: "gemini-1.5-flash",
});
const engine = new FlowEngine(flow, { llm: adapter, storage });Configuration
typescript
interface GeminiConfig {
/** Google AI API key (required) */
apiKey: string;
/** Model to use (default: gemini-1.5-flash) */
model?: string;
/** Temperature (default: 0) */
temperature?: number;
/** Max tokens (default: 4096) */
maxTokens?: number;
/** Timeout in ms (default: 60000) */
timeout?: number;
/** Enable streaming (default: false) */
streaming?: boolean;
}Available Models
| Model | Best For | Cost |
|---|---|---|
gemini-1.5-flash | Fast and free tier friendly | Free/$ |
gemini-1.5-pro | More capable | $$ |
gemini-2.0-flash-exp | Latest experimental | Free |
Example
typescript
import {
agent, flow, FlowEngine, MemoryStorage, GeminiAdapter,
name, yesNo
} from "@andresaya/flowkit";
const bot = agent("Alex")
.personality("friendly")
.build();
const myFlow = flow("greeting", bot)
.ask("name", "What's your name?", name(), "user_name")
.then("confirm")
.ask("confirm", "Nice to meet you {{user_name}}! Need help?", yesNo(), "needs_help")
.when({ yes: "help", no: "bye" })
.say("help", "How can I help?")
.done()
.say("bye", "Goodbye!")
.done()
.build();
const engine = new FlowEngine(myFlow, {
llm: new GeminiAdapter({
apiKey: process.env.GOOGLE_AI_API_KEY!,
model: "gemini-1.5-flash",
}),
storage: new MemoryStorage(),
});
const result = await engine.start("session-1");
console.log(result.message);Features
| Feature | Supported |
|---|---|
| Streaming | Yes |
| Tool Calling | Yes |
| JSON Mode | Yes |
| Free Tier | Yes |
Tips
- Use
gemini-1.5-flashfor development - Generous free tier - Great for multilingual support - Good at multiple languages
- Enable streaming - Better user experience
- Check rate limits - Free tier has request limits