Google I/O では、Node.js 向けの Firebase Genkit が発表されました。それに続き、Firebase チームと Go チームが協力して Genkit を Go コミュニティに導入します。オープンソース フレームワークである Genkit for Go を使うと、シンプルさ、スケーラビリティ、セキュリティで名高い Go 言語を使って、AI アプリケーションやクラウド サービスをネイティブに構築できます。
デベロッパーは、Go の利点であるパフォーマンスと同時実行性を Genkit のライブラリやツールと組み合わせることにより、両方のテクノロジーの可能性を最大限に活用する生成 AI アプリケーションを作成できます。潜在的なユースケースには次のようなものが挙げられます。
Genkit for Go は現在アルファ版で、実験や調査に最適です。ぜひ AI プロジェクトのプロトタイプを作成し、フィードバックをお寄せください。Go デベロッパーが本番環境に対応したスケーラブルな次世代の AI アプリケーションを構築できるように、皆さんの意見を Genkit for Go のロードマップに直接反映いたします。
Genkit は、AI アプリケーションを構築するためのデベロッパー ファーストなフレームワークです。Go だけで書かれた Go ライブラリなので、Go 言語らしい記述法や表記規則が使われており、Go デベロッパーならすぐになじめる生産性の高いライブラリになっています。Genkit は、軽量で組み合わせ可能な抽象化された機能を提供し、洗練された AI ワークフローを簡単に開発できるようになっています。カスタマイズ性や制御性が犠牲になることはありません。
生成 AI アプリケーションを構築するときに Genkit を使うと、次のような点で生産性が向上します。
func main() {
ctx := context.Background()
// Google AI プラグインを初期化する。
if err := googleai.Init(ctx, nil); err != nil {
log.Fatal(err)
}
// LLM にメニューを提案してもらうプロンプトを生成する簡単なフローを定義する。
// フローは Genkit ツールとの連携機能で、
// 複数ステップのワークフローを観察できるようにする。
genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
// Google AI の gemini-1.5-flash モデルを初期化する。
m := googleai.Model("gemini-1.5-flash")
if m == nil {
return "", errors.New("menuSuggestionFlow: failed to find model")
}
// リクエストを作成してモデル API(Google AI)に送信する。
resp, err := m.Generate(ctx,
ai.NewGenerateRequest(
&ai.GenerationCommonConfig{Temperature: 1},
ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
nil)
if err != nil {
return "", err
}
// モデル API からのレスポンスを処理する。
text, err := resp.Text()
if err != nil {
return "", fmt.Errorf("menuSuggestionFlow: %v", err)
}
return text, nil
})
// Genkit フローサーバーを初期化する。
if err := genkit.Init(ctx, nil); err != nil {
log.Fatal(err)
}
}
最適な AI 生成結果を実現するには、モデル、設定、プロンプト、出力形態を慎重に検討する必要があります。Genkit は、シンプルなファイル形式である Dotprompt に対応しているので、エンジニアリング プロセスが効率的になります。
Dotprompt を使うと、高度なプロンプト テンプレート、入出力スキーマ、モデル選択、モデル設定オプションをすべて 1 つの .prompt
ファイルで定義できます。あらゆるものをうまく整理できるので、プロンプトを Go コードと一緒にテスト、バージョン管理、デプロイしやすくなります。
---
model: vertexai/gemini-1.5-pro
config:
temperature: 0.9
input:
schema:
location: string
style?: string
name?: string
default:
location: a restaurant
---
You are the world's most welcoming AI assistant and are currently working at {{location}}.
Greet a guest{{#if name}} named {{name}}{{/if}}{{#if style}} in the style of {{style}}{{/if}}.
Genkit for Go の中核にあるのは、プロバイダに依存しない軽量フレームワークです。Google やサードパーティ プロバイダの特定のモデル、ベクトル データベース、クラウド サービスとシームレスに連携できるプラグインのコレクションは増加を続けています。
今回のリリースの Genkit for Go では、次のプラグインが提供されます。
Genkit のプラグイン システムは、オープンで拡張可能な設計なので、あらゆるモデル、ベクトル データベース、評価モデル、ツールなどを利用できます。コミュニティの皆さんは、ぜひ独自のプラグインを公開し、Genkit のエコシステムに貢献してください。
まもなく、ドキュメントに Genkit for Go プラグイン開発ガイドが追加されますので、お楽しみに!
AI アプリを構築しようとすると、効果的なプロンプトの作成、予測不可能な出力のデバッグ、検索プロセスの最適化など、他にはない課題に直面します。典型的な IDE ユーティリティにはない専用ツールを提供することで、このような複雑な問題に対処できるようにしたいと考えています。
Genkit の CLI と直感的なブラウザベースのデベロッパー UI には、強力なツールキットが含まれているため、生成 AI 開発の効率が上がります。
このツールを使うと、次のようなことができるようになります。
VS Code や Project IDX で作業したい方は、IDE の内蔵ブラウザで Genkit デベロッパー UI を開くと、コードと並べて利用できます。
デプロイの準備が整ってからも、期待どおりのサービスを確実にユーザーに提供できるように、Genkit で本番環境の AI アプリケーションを監視できます。Genkit の Google Cloud テレメトリ プラグインを使うと、AI アプリから Google Cloud の運用スイートにログ、指標、トレースを簡単にエクスポートできます。
Google Cloud との連携機能はすぐに利用できますが、Genkit のインストルメンテーションは広く使われている OpenTelemetry 標準による実装にしてあるため、多くの一般的なオブザーバビリティ プラットフォームと連携させることができます。
Genkit for Go はアルファ版として利用できるので、さっそくこれを使って AI ワークフローをアプリケーションに組み込み、成長を続ける Go AI デベロッパーのコミュニティに参加しましょう。
はじめるには、Genkit for Go スタートガイドをご覧ください。
また、IDX の事前設定済みワークスペースで Genkit テンプレートを開くこともできます。
私たちは、ぜひとも皆さんと協力したいと思っています!
力を合わせて Go の AI 開発エコシステムを繁栄させましょう。皆さんが Genkit で作ったものを見るのが待ちきれません!