Initial commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# Genkit Google GenAI Plugin (`genkit_google_genai`)
|
||||
|
||||
The Google AI plugin provides an interface against the official Google AI Gemini API.
|
||||
|
||||
## Usage
|
||||
|
||||
```dart
|
||||
import 'package:genkit/genkit.dart';
|
||||
import 'package:genkit_google_genai/genkit_google_genai.dart';
|
||||
|
||||
void main() async {
|
||||
// Initialize Genkit with the Google AI plugin
|
||||
final ai = Genkit(plugins: [googleAI()]);
|
||||
|
||||
// Generate text
|
||||
final response = await ai.generate(
|
||||
model: googleAI.gemini('gemini-2.5-flash'),
|
||||
prompt: 'Tell me a joke about a developer.',
|
||||
);
|
||||
|
||||
print(response.text);
|
||||
}
|
||||
```
|
||||
|
||||
## Embeddings
|
||||
|
||||
```dart
|
||||
final embeddings = await ai.embedMany(
|
||||
embedder: googleAI.textEmbedding('text-embedding-004'),
|
||||
documents: [
|
||||
DocumentData(content: [TextPart(text: 'Hello world')]),
|
||||
],
|
||||
);
|
||||
```
|
||||
|
||||
## Image Generation
|
||||
|
||||
The plugin also supports image generation models such as `gemini-2.5-flash-image`.
|
||||
|
||||
### Example (Nano Banana)
|
||||
|
||||
```dart
|
||||
// Define an image generation flow
|
||||
ai.defineFlow(
|
||||
name: 'imageGenerator',
|
||||
inputSchema: .string(defaultValue: 'A banana riding a bike'),
|
||||
outputSchema: Media.$schema,
|
||||
fn: (input, context) async {
|
||||
final response = await ai.generate(
|
||||
model: googleAI.gemini('gemini-2.5-flash-image'),
|
||||
prompt: input,
|
||||
);
|
||||
if (response.media == null) {
|
||||
throw Exception('No media generated');
|
||||
}
|
||||
return response.media!;
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
The media (url field) contain base64 encoded data uri. You can decode it and save it as a file.
|
||||
|
||||
## Text-to-Speech (TTS)
|
||||
|
||||
You can use text-to-speech models to generate audio from text. The generated `Media` object will contain base64 encoded PCM audio in its data URI.
|
||||
|
||||
```dart
|
||||
// Define a TTS flow
|
||||
ai.defineFlow(
|
||||
name: 'textToSpeech',
|
||||
inputSchema: .string(defaultValue: 'Genkit is an amazing AI framework!'),
|
||||
outputSchema: Media.$schema,
|
||||
fn: (prompt, _) async {
|
||||
final response = await ai.generate(
|
||||
model: googleAI.gemini('gemini-2.5-flash-preview-tts'),
|
||||
prompt: prompt,
|
||||
config: GeminiTtsOptions(
|
||||
responseModalities: ['AUDIO'],
|
||||
speechConfig: SpeechConfig(
|
||||
voiceConfig: VoiceConfig(
|
||||
prebuiltVoiceConfig: PrebuiltVoiceConfig(voiceName: 'Puck'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if (response.media != null) {
|
||||
return response.media!;
|
||||
}
|
||||
throw Exception('No audio generated');
|
||||
},
|
||||
);
|
||||
```
|
||||
|
||||
Google AI also supports multi-speaker TTS by configuring a `MultiSpeakerVoiceConfig` inside `SpeechConfig`.
|
||||
Reference in New Issue
Block a user