Use this file to discover all available pages before exploring further.
This guide will help you create your first AI-powered application using Genkit for Go. You’ll learn how to initialize Genkit, make your first generation request, and work with structured data.
package mainimport ( "context" "fmt" "log" "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googlegenai")func main() { ctx := context.Background() g := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{})) answer, err := genkit.GenerateText(ctx, g, ai.WithModelName("googleai/gemini-2.0-flash"), ai.WithPrompt("Why is Go a great language for AI applications?"), ) if err != nil { log.Fatalf("could not generate: %s", err) } fmt.Println(answer)}
Stream text as it’s generated for responsive user experiences:
stream := genkit.GenerateStream(ctx, g, ai.WithModelName("googleai/gemini-2.0-flash"), ai.WithPrompt("Write a short story about a robot learning to paint."),)for result, err := range stream { if err != nil { log.Fatal(err) } if result.Done { break } fmt.Print(result.Chunk.Text())}
Give models the ability to take actions and access external data:
type WeatherInput struct { Location string `json:"location"`}weatherTool := genkit.DefineTool(g, "getWeather", "Gets the current weather for a location", func(ctx *ai.ToolContext, input WeatherInput) (string, error) { // Call your weather API here return fmt.Sprintf("Weather in %s: 72°F and sunny", input.Location), nil },)response, err := genkit.Generate(ctx, g, ai.WithModelName("googleai/gemini-2.0-flash"), ai.WithPrompt("What's the weather like in San Francisco?"), ai.WithTools(weatherTool),)if err != nil { log.Fatal(err)}fmt.Println(response.Text())