🔥

Genkit の Code Execution 機能を使って生成 AI に Python コードを実行させてみた

2024/09/18に公開

はじめに

Genkit の version 0.5.8 で Google AI の Code Execution 機能が追加されました。これにより生成 AI に Python コードを実行させることが可能になりました。

Genkit プロジェクトの初期化

Genkit プロジェクトの初期化を行います。Genkit のバージョンを 0.5.8 以上にする必要があるので、genkit のインストールから行います。

% npm init -y
% npm i -D genkit-cli
% npm i genkit @genkit-ai/googleai genkitx-ollama
% mkdir src && touch src/index.ts

以下のコードを src/index.ts ファイルに貼り付けます。

src/index.ts
import { genkit, z } from 'genkit'
import { googleAI, gemini15Flash } from '@genkit-ai/googleai'
import { logger } from 'genkit/logging'
logger.setLogLevel('debug')

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
})

const mainFlow = ai.defineFlow({
  name: 'mainFlow',
  inputSchema: z.string(),
}, async (input) => {
  const { text } = await ai.generate(input)
  return text
})

ai.startFlowServer({ flows: [mainFlow] })

Code Execution の有効化

genkit 関数の引数で生成 AI モデルを指定している箇所で .withConfig({ codeExecution: true }) を足すだけで有効化できます。

-  model: gemini15Flash,
+  model: gemini15Flash.withConfig({ codeExecution: true }),

挙動の確認

以下を実行して Developer Tool を起動します。

% npx genkit start -o -- npx tsx --watch src/index.ts

Flow メニューから実装した Flow を選択します。

まず、以下のプロンプトをリクエストしてみます。
「10万回コインを投げて、表が出た回数の割合をシミュレートしてください。」

Genkit Code Execution のプロンプト例 1

View Trace を選択すると実際にコードが実行されたことがわかります。

Genkit Code Execution trace 例 1

次に、より直接的なリクエストをしてみます。
「Python で以下のコードを実行してください: print('Hello World') 」

Genkit Code Execution で Python コードを実行させるプロンプト

先ほどと同様、View Trace を選択すると実際にコードが実行されたことがわかります。

Genkit Code Execution で Python コードを実行させる(trace)

最後に、コードとは関係のない一般的なリクエストをしてみます。

Genkit Code Execution が実行されないプロンプト

Genkit Code Execution が実行されないプロンプトの trace

すると、コードの実行がされていないことがわかります。これは、Code Execution が tools の 1 つの選択肢として指定されているためです。生成 AI は必要な場合にしか Code Execution を実行しません。

まとめ

1 行追加するだけで簡単に Code Execution を試すことができました。これによって Genkit でできることの幅が広がったのではないかと思います。も是非試してみてください。

https://github.com/tanabee/genkit-code-execution-sample

参考資料

CureApp テックブログ

Discussion