Files
Onsol-GO/.agents/skills/developing-genkit-go/references/providers.md
T
2026-04-23 23:58:59 -05:00

3.6 KiB

Model Providers

Google AI (Gemini)

import "github.com/genkit-ai/genkit/go/plugins/googlegenai"

g := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}))

Env var: GEMINI_API_KEY or GOOGLE_API_KEY

Model names follow the format googleai/<model-id>. Look up the latest model IDs at https://ai.google.dev/gemini-api/docs/models.

// By name string
ai.WithModelName("googleai/gemini-flash-latest")

// Model ref with provider-specific config
ai.WithModel(googlegenai.ModelRef("googleai/gemini-flash-latest", &genai.GenerateContentConfig{
	ThinkingConfig: &genai.ThinkingConfig{
		ThinkingBudget: genai.Ptr[int32](0), // disable thinking
	},
}))

// Lookup a model instance
m := googlegenai.GoogleAIModel(g, "gemini-flash-latest")

Vertex AI

import "github.com/genkit-ai/genkit/go/plugins/googlegenai"

g := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.VertexAI{}))

Env vars: GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION (or GOOGLE_CLOUD_REGION)

Uses Application Default Credentials (gcloud auth application-default login).

Model names follow the format vertexai/<model-id>. Same model IDs as Google AI.

ai.WithModelName("vertexai/gemini-flash-latest")

Anthropic (Claude)

import (
	"github.com/anthropics/anthropic-sdk-go"          // Anthropic SDK types
	ant "github.com/genkit-ai/genkit/go/plugins/anthropic" // Genkit plugin
)

g := genkit.Init(ctx, genkit.WithPlugins(&ant.Anthropic{}))

Env var: ANTHROPIC_API_KEY

Model names follow the format anthropic/<model-id>. Look up the latest model IDs at https://docs.anthropic.com/en/docs/about-claude/models.

// By name
ai.WithModelName("anthropic/claude-sonnet-4-6")

// With provider-specific config (uses Anthropic SDK types via ai.WithConfig)
ai.WithConfig(&anthropic.MessageNewParams{
	Temperature: anthropic.Float(1.0),
	MaxTokens:   *anthropic.IntPtr(2000),
	Thinking: anthropic.ThinkingConfigParamUnion{
		OfEnabled: &anthropic.ThinkingConfigEnabledParam{
			BudgetTokens: *anthropic.IntPtr(1024),
		},
	},
})

OpenAI-Compatible (compat_oai)

Works with any OpenAI-compatible API: OpenAI, DeepSeek, xAI, etc.

import "github.com/genkit-ai/genkit/go/plugins/compat_oai"

openaiPlugin := &compat_oai.OpenAICompatible{
	Provider: "openai",   // unique identifier
	APIKey:   os.Getenv("OPENAI_API_KEY"),
	// BaseURL: "https://custom-endpoint/v1", // for non-OpenAI providers
}
g := genkit.Init(ctx, genkit.WithPlugins(openaiPlugin))

Define models explicitly (not auto-discovered):

model := openaiPlugin.DefineModel("openai", "gpt-4o", compat_oai.ModelOptions{})

Use with:

ai.WithModel(model)

Ollama (Local Models)

import "github.com/genkit-ai/genkit/go/plugins/ollama"

ollamaPlugin := &ollama.Ollama{
	ServerAddress: "http://localhost:11434",
	Timeout:       60, // seconds
}
g := genkit.Init(ctx, genkit.WithPlugins(ollamaPlugin))

Define models explicitly:

model := ollamaPlugin.DefineModel(g,
	ollama.ModelDefinition{
		Name: "llama3.1",
		Type: "chat", // or "generate"
	},
	nil, // optional *ModelOptions
)

Use with:

ai.WithModel(model)

Multiple Providers

Register multiple plugins in a single Genkit instance:

g := genkit.Init(ctx,
	genkit.WithPlugins(
		&googlegenai.GoogleAI{},
		&ant.Anthropic{},
	),
	genkit.WithDefaultModel("googleai/gemini-flash-latest"),
)

// Use different models per call
text1, _ := genkit.GenerateText(ctx, g,
	ai.WithModelName("googleai/gemini-flash-latest"),
	ai.WithPrompt("Hello from Gemini"),
)

text2, _ := genkit.GenerateText(ctx, g,
	ai.WithModelName("anthropic/claude-sonnet-4-6"),
	ai.WithPrompt("Hello from Claude"),
)