developing-genkit-go
GenkitをGoで使用してAI駆動アプリケーションを開発します。ユーザーがGenkitを使ったGoでのAI機能・エージェント・フロー・ツールの構築を求める場合や、生成・プロンプト・ストリーミング・ツール呼び出し・モデルプロバイダーを含むGenkit GoコードでのAI機能構築が必要な場合に使用します。
description の原文を見る
Develop AI-powered applications using Genkit in Go. Use when the user asks to build AI features, agents, flows, or tools in Go using Genkit, or when working with Genkit Go code involving generation, prompts, streaming, tool calling, or model providers.
SKILL.md 本文
Genkit Go
Genkit Go は Go 用の AI SDK であり、生成、構造化出力、ストリーミング、ツール呼び出し、プロンプト、フローを複数のモデルプロバイダー間で統一されたインターフェースで提供します。
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))
}
コア機能
必要なものに応じて、適切なリファレンスを確認してください:
| 機能 | リファレンス | いつロードするか |
|---|---|---|
| 初期化 | references/getting-started.md | genkit.Init のセットアップ、プラグイン、*Genkit インスタンスパターン |
| 生成 | references/generation.md | Generate、GenerateText、GenerateData、ストリーミング、出力フォーマット |
| プロンプト | references/prompts.md | DefinePrompt、DefineDataPrompt、.prompt ファイル、スキーマ |
| ツール | references/tools.md | DefineTool、ツール割り込み、RestartWith/RespondWith |
| ミドルウェア | references/middleware.md | ai.Middleware、ai.WithUse、Hooks (Generate/Model/Tool)、ビルトイン (Retry、Fallback、ToolApproval、Filesystem、Skills) |
| フロー & HTTP | references/flows-and-http.md | DefineFlow、DefineStreamingFlow、genkit.Handler、HTTP サーバリング |
| モデルプロバイダー | references/providers.md | Google AI、Vertex AI、Anthropic、OpenAI 互換、Ollama セットアップ |
Genkit CLI
インストール済みか確認: genkit --version
インストール:
curl -sL cli.genkit.dev | bash
主要コマンド:
# Developer UI (トレーシング、フロー テスト) を使ってアプリを開始 (http://localhost:4000)
genkit start -- go run .
genkit start -o -- go run . # ブラウザも開く
# CLI から直接フローを実行
genkit flow:run myFlow '{"data": "input"}'
genkit flow:run myFlow '{"data": "input"}' --stream # ストリーミング付き
genkit flow:run myFlow '{"data": "input"}' --wait # 完了を待機
# Genkit ドキュメントを検索
genkit docs:search "streaming" go
genkit docs:list go
genkit docs:read go/flows.md
詳細な CLI と Developer UI については references/getting-started.md を参照してください。
主要なガイダンス
gを明示的に渡す。genkit.Initが返す*Genkitインスタンスは中央レジストリです。グローバルに保存するのではなく、すべての Genkit 関数に渡します。これは SDK 全体での中心的なパターンです。- AI ロジックをフローでラップする。 フローはトレーシング、可観測性、
genkit.Handler経由の HTTP デプロイ、Developer UI と CLI からのテスト機能を提供します。保持する価値のある生成呼び出しはフローの中に配置してください。 - 出力型に
jsonschema:"description=..."struct タグを使用する。 モデルはこれらの説明を使用して、各フィールドに何を含めるべきかを理解します。これらがなければ、構造化出力の品質が大幅に低下します。 - 優れたツール説明を書く。 モデルは説明文字列に基づいてどのツールを呼び出すかを決定します。曖昧な説明は、ツール呼び出しの欠落または誤った呼び出しにつながります。
- 複雑なプロンプトには
.promptファイルを使用する。 プロンプト コンテンツを Go コードから分離し、Handlebars テンプレートをサポートし、再コンパイルなしで反復できます。コード定義プロンプトはシンプルなワンライナーのケースに適しています。 - カスタムミドルウェアを書く前に、ビルトインミドルウェアに手を出す。
Retry、Fallback、ToolApproval、Filesystem、Skillsは一般的な横断的ニーズをカバーし、ai.WithUseを通じて相互に構成できます。references/middleware.mdを参照してください。カスタムミドルウェアを書く場合は、Newでキャプチャされたクロージャ内で呼び出しごとの状態を割り当て、WrapToolが変異するものを保護してください。ツールは並行して実行される場合があるからです。 - 最新のモデル ID を確認する。 モデル名は頻繁に変更されます。ハードコードされた名前に頼るのではなく、プロバイダーのドキュメントで現在のモデル ID を確認してください。
references/providers.mdを参照してください。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- firebase
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/firebase/agent-skills / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。