❤️‍🔥

Next'25 速報 -【Genkit】AI アプリ開発を加速するオープソースフレームワーク徹底解説

に公開

現在ラスベガスで開催されている Google Cloud の旗艦イベント「Google Cloud NEXT'25(以下、Next'25)」に現地参加中の Shanks / kazz / 小堀内 / 岸本 です。

Next'25 で発表された 最新情報 を現地からお届けしています!

はじめに

AI 搭載アプリケーションの開発を簡素化するために設計されたオープンソースの AI オーケストレーションフレームワーク Firebase Genkit が詳しく紹介されました。

本記事では、そのセッション内容に基づき、Genkit の概要、主要機能、そして日本のエンジニア、特に AI 機能の組み込みを目指すバックエンド開発者やフルスタック開発者がどのように活用できるかについて解説します。

登壇者は Firebase チームの Dmitry Lyalin 氏 (Group Product Manager)、Chris Gill 氏 (Product Manager)、そして Google Cloud の Esther Lloyd 氏 (Customer Engineer) です。

1

彼らは、大規模言語モデル (LLM) を利用した開発が急速に進化し、モデルの選択、RAG (Retrieval-Augmented Generation) の導入、デプロイといった課題が複雑化している現状を踏まえ、Genkit が開発プロセス全体をどのように支援するかを説明しました。

主要ポイント

  • オープンソースフレームワーク
    • Genkit は Apache 2.0 ライセンスで提供されるオープンソースのフレームワークであり、特定のベンダーにロックインされることなく利用できます。
      Node.js (GA)、Go (Beta)、Python (Alpha) の SDK が提供されています。
  • 統一されたインターフェースとプラグイン
    • 様々な LLM (Gemini, Ollama, Vertex AI Model Garden 経由の各種モデルなど) やベクトルストア (Firestore, Vertex Vector Search, PG Vector など) との連携を、統一された API とプラグインエコシステムを通じて容易にします。
  • 強力な開発者ツール
    • ローカルでのテスト、デバッグ、可視化を支援する開発者 UI や、OpenTelemetry ベースのトレース機能を提供し、開発サイクルを高速化します。
  • 高度な AI パターンの実装支援
    • 構造化された出力、関数呼び出し (Tool / Function Calling)、RAG、複雑なワークフローの構築、プロンプト管理といった、高度な AI アプリケーションに必要な機能を簡単に実装できます。

Genkit の概要とコンセプト

Genkit は、AI アプリケーション開発における一般的なサイクル (開発、テスト、チューニング、デバッグ、デプロイ) を効率化するためのツール群です。

deploy-env

主な構成要素は以下の 3 つです。
それぞれの機能を 1 つずつ確認していきましょう。

  1. オープンソース SDK
  2. プラグインエコシステム
  3. Developer UI

1. オープンソース SDK

Node.js (GA)、Go (Beta)、Python (Alpha) 用の SDK が提供されており、好みの言語で開発を開始できます。

sdk

2. プラグインエコシステム

Google 製およびコミュニティ製のプラグインを通じて、多様なモデルプロバイダー、ベクトルストア、その他のプラットフォームとの連携を容易にします。

sdk

Node.js での利用例
import { genkit } from 'genkit'
import { googleAI } from '@genkit-ai/googleai'
import { vertexAI } from '@genkit-ai/vertexai'
import { enableGoogleCloudTelemetry } from '@genkit-ai/google-cloud'
import { logger } from 'genkit/logging'

logger.setLogLevel(`debug`)

enableGoogleCloudTelemetry()

// Genkit の初期化 (Google AI, Vertex AI のプラグインを有効化する)
export const ai = genkit({
  plugins: [
    vertexAI(), 
    googleAI()
  ],
})

// これで Genkit の設定が完了し、モデルを利用する準備が整います。

3. Developer UI

ローカル開発 UI やトレース機能により、開発中のフローの動作確認やデバッグを効率的に行えます。

sdk

主要機能

Unified Model API

unified

異なるモデルプロバイダー (Google AI, Vertex AI, Ollama, Anthropic など) を、コードの大部分を変更することなく切り替え可能です。
プロバイダー固有の機能 (例: Gemini の Google 検索によるグラウンディング) にもアクセスできます。

Node.js でシンプルなモデル呼び出しを行う例
import { generate } from '@genkit-ai/ai';
import { gemini25ProPreview0325 } from '@genkit-ai/vertexai';

const result = await generate({
    model: gemini25ProPreview0325,
    prompt: '日本の首都は?',
});
console.log(await result.text());

Structure and type-safety

unified

LLM の出力を特定のスキーマ (JSON 形式など) に沿って生成させることが容易になります。
これにより、LLMからの応答をプログラムで確実に処理できるようになります。
Node.js では Zod、Python では Pydantic、Go では 標準の構造体 (struct) を利用します。

Node.js で Zod を使用する例
import { z } from 'genkit'
import { ai } from '../genkit' // 上記例で初期化した Genkit をインポート

// Zod による構造化定義
export const analyzeAudioFlow = ai.defineFlow(
  {
    name: "analyzeAudio",
    inputSchema: z.object({
      storageFileUrl: z.string(),
      contentType: z.string(),
    }),
    outputSchema: z.object({
      analyzedText: z.string(),
    }),
  },
  async (input) => {
    // ここにモデル呼び出しなどの処理が入る
  },
)

Tool / Function Calling

calling

LLM が外部の API や関数 (Genkit では Tool と表現) を呼び出す必要があるかを判断し、実行するエージェント的な動作をサポートします。
再利用可能なツールを定義し、フロー内で簡単に利用できます。

Tool / Function Calling 例
import * as cheerio from 'cheerio'
import { z } from 'genkit'
import { ai } from '../genkit'

// Web ページを解析するツール
const webLoader = ai.defineTool(
  {
    name: `webLoader`,
    description: `Accesses the specified URL and retrieves the content of the webpage.`,
    inputSchema: z.object({ url: z.string().url() }),
    outputSchema: z.string(),
  },
  async ({ url }) => {
    const res = await fetch(url)
    const html = await res.text()
    const $ = cheerio.load(html)
    $(`script, style, noscript`).remove()
    if ($(`article`).length) {
      return $(`article`).text()
    }
    return $(`body`).text()
  }
)

// 入力された値によって、必要であれば LLM 経由で webLoader ツールがコールされる
export const analyzeWebContentsFlow = ai.onFlow(
  ai,
  {
    name: `analyzeWebContentsFlow`,
    inputSchema: z.object({
      url: z.string(),
    }),
    outputSchema: z.object({
      analysis: z.string(),
    }),
  },
  async (input) => {
    // LLM コール時に、上記で定義したツール (webLoader) を登録しておく
    const { output } = await analyzeWebContentsPrompt(input, { tools: [webLoader] })
    return output
  }
)

検索拡張生成 (RAG)

rag

Firestore や Vertex Vector Search、PG Vector などのベクトルストアと連携し、独自のデータソースに基づいて LLM の応答を生成 (グラウンディング) する RAG パイプラインを容易に構築できます。

フロー (Flows)

複数の LLM 呼び出しやデータ処理ステップを組み合わせた複雑なワークフローを Flows として定義・管理できます。

これにより、ステップ間のデータの受け渡しやエラーハンドリングが簡潔になります。
Flows は API エンドポイントとしてはもちろん、トリガーベース (Cloud Run Functions トリガー、Cloud Run の Eventarc トリガー) でもデプロイ可能です。

プロンプト管理 (Prompt Management)

rag

google/dotprompt 使用による、.prompt ファイル形式をサポートし、プロンプトとモデル設定を一箇所で管理できます。
これによって、コードからプロンプトを分離し、非エンジニアの専門家もプロンプト改善に参加しやすくなります。

.prompt 例
---
model: vertexai/gemini-2.5-pro-exp-03-25
config:
  temperature: 0.2
input:
  schema:
    storageFileUrl: string
    contentType: string
output:
  format: json
  schema:
    analyzedText: string
---

指定のURLにある音声ファイルを分析し、「話されている言語のまま」正確に文字起こししてください。
※自動的に日本語へ翻訳せず、原文の言語を維持してください。

以下の指示に従ってください:
1. 話者は Google 社員 (Googler) である可能性が高く、Google Cloud Next のセッションを想定した技術的内容を含みます。
2. クラウド技術、AI、データエンジニアリング、DevOps、ネットワーク、セキュリティ、ソフトウェア開発などの専門的な話題が中心です。
3. 以下の専門用語や製品名は正確に認識してください。
   - Google Cloud 製品(Vertex AI、BigQuery、Cloud Run、Cloud Functions、Spanner、Dataflow、GKE、Anthos 等)
   - AI/ML 用語(LLM、生成 AI、Gemini、PaLM、embedding、fine-tuning、RAG 等)
   - 開発/インフラ用語(Kubernetes、CI/CD、MLOps、DevOps、SRE、microservices 等)
   - サードパーティサービス(TensorFlow、PyTorch、Kafka、MongoDB、PostgreSQL 等)
4. 冗長な言い淀み(例:「えー」「あの」「you know」「like」等)は、必要に応じて省略しても構いません。
5. 文字起こしは段落に分割し、読みやすい形式に整えてください。
6. 技術的な内容を優先し、冗談や雑談よりも「重要な技術情報」を正確に記録してください。
7. 可能な限り、話者のニュアンスを損なわずに正確に文字起こししてください。

{{media url=storageFileUrl contentType=contentType}}

まとめ

Genkit は、AI アプリケーション開発に伴う複雑さを効果的に軽減し、開発者がアイデアを迅速にプロトタイプから本番環境へと移行させることを可能にする、強力なオープンソースフレームワークです。

また、つい先日リリースされた Firebase Studio のバックエンドとして、Genkit が使用されているとのことでした。

Node.js, Go, Python といった主要言語をサポートし、Google Cloud の AI サービスとの連携も容易な Genkit は、様々な開発者にとって魅力的な選択肢になるのではと感じました。

チャットボット開発、コンテンツ自動生成、RAG パイプライン構築、既存システムへの AI 機能統合など、様々な可能性を秘めた Genkit を、ぜひ一度試してみてはいかがでしょうか。

コミュニティへの参加と貢献

Genkit は活発に開発が進められているオープンソースプロジェクトです。

もし Genkit に興味を持たれた方は、ぜひ GitHub リポジトリを訪れてみてください。

Issue の報告や機能改善のプルリクエストを通じて、プロジェクトに貢献することができます。

(この記事の筆者である小堀内も、小さな修正を加えるプルリクエストがマージされ、Genkit JS 1.6.0 のコントリビューターになることができました!)

Discussion