developing-genkit-go
Go语言AI SDK,提供统一的生成、结构化输出、流式传输、工具调用和流程编排接口
npx skills add firebase/agent-skills --skill developing-genkit-goBefore / After 效果对比
1 组手动调用不同AI提供商的API,处理各种格式的响应和错误,适配流式传输和工具调用,开发周期长
使用统一SDK接口,自动处理多模型兼容性,内置流式传输和工具调用支持,开发效率大幅提升
developing-genkit-go
Genkit Go
Genkit Go is an AI SDK for Go that provides generation, structured output, streaming, tool calling, prompts, and flows with a unified interface across model providers.
Hello World
package main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/genkit-ai/genkit/go/ai"
"github.com/genkit-ai/genkit/go/genkit"
"github.com/genkit-ai/genkit/go/plugins/googlegenai"
"github.com/genkit-ai/genkit/go/plugins/server"
)
func main() {
ctx := context.Background()
g := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}))
genkit.DefineFlow(g, "jokeFlow", func(ctx context.Context, topic string) (string, error) {
return genkit.GenerateText(ctx, g,
ai.WithModelName("googleai/gemini-flash-latest"),
ai.WithPrompt("Tell me a joke about %s", topic),
)
})
mux := http.NewServeMux()
for _, f := range genkit.ListFlows(g) {
mux.HandleFunc("POST /"+f.Name(), genkit.Handler(f))
}
log.Fatal(server.Start(ctx, "127.0.0.1:8080", mux))
}
Core Features
Load the appropriate reference based on what you need:
Feature Reference When to load
Initialization
references/getting-started.md
Setting up genkit.Init, plugins, the *Genkit instance pattern
Generation
references/generation.md
Generate, GenerateText, GenerateData, streaming, output formats
Prompts
references/prompts.md
DefinePrompt, DefineDataPrompt, .prompt files, schemas
Tools
references/tools.md
DefineTool, tool interrupts, RestartWith/RespondWith
Flows & HTTP
references/flows-and-http.md
DefineFlow, DefineStreamingFlow, genkit.Handler, HTTP serving
Model Providers references/providers.md Google AI, Vertex AI, Anthropic, OpenAI-compatible, Ollama setup
Genkit CLI
Check if installed: genkit --version
Installation:
curl -sL cli.genkit.dev | bash
Key commands:
# Start app with Developer UI (tracing, flow testing) at http://localhost:4000
genkit start -- go run .
genkit start -o -- go run . # also opens browser
# Run a flow directly from the CLI
genkit flow:run myFlow '{"data": "input"}'
genkit flow:run myFlow '{"data": "input"}' --stream # with streaming
genkit flow:run myFlow '{"data": "input"}' --wait # wait for completion
# Look up Genkit documentation
genkit docs:search "streaming" go
genkit docs:list go
genkit docs:read go/flows.md
See references/getting-started.md for full CLI and Developer UI details.
Key Guidance
-
Pass
gexplicitly. The*Genkitinstance returned bygenkit.Initis the central registry. Pass it to all Genkit functions rather than storing it as a global. This is a core pattern throughout the SDK. -
Wrap AI logic in flows. Flows give you tracing, observability, HTTP deployment via
genkit.Handler, and the ability to test from the Developer UI and CLI. Any generation call worth keeping should live in a flow. -
Use
jsonschema:"description=..."struct tags on output types. The model uses these descriptions to understand what each field should contain. Without them, structured output quality drops significantly. -
Write good tool descriptions. The model decides which tools to call based on their description string. Vague descriptions lead to missed or incorrect tool calls.
-
Use
.promptfiles for complex prompts. They separate prompt content from Go code, support Handlebars templating, and can be iterated on without recompilation. Code-defined prompts are better for simple, single-line cases. -
Look up the latest model IDs. Model names change frequently. Check provider documentation for current model IDs rather than relying on hardcoded names. See references/providers.md.
Weekly Installs6.2KRepositoryfirebase/agent-skillsGitHub Stars218First Seen6 days agoSecurity AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled ongemini-cli6.2Kantigravity6.1Kcursor6.1Kopencode6.1Kcodex6.1Kgithub-copilot6.1K
用户评价 (0)
发表评价
暂无评价
统计数据
用户评分
为此 Skill 评分