プロンプト

プロンプト操作は、アプリ デベロッパーが生成 AI モデルの出力に影響を与える主な方法です。たとえば、LLM を使用する場合は、モデルのレスポンスのトーン、形式、長さなどの特性に影響を与えるプロンプトを作成できます。

Genkit は、プロンプトはコードであるという前提に基づいて設計されています。ソースファイルにプロンプトを作成して維持し、コードに使用するのと同じバージョン管理システムを使用してプロンプトに対する変更を追跡し、生成 AI モデルを呼び出すコードとともにデプロイします。

ほとんどのデベロッパーは、付属の Dotprompt ライブラリが Genkit でプロンプトを操作するニーズを満たしていることに気付きます。ただし、プロンプトを直接操作することで、別のアプローチを使用することもできます。

プロンプトの定義

Genkit の generate() ヘルパー関数は、文字列プロンプトを受け入れます。単純なユースケースでは、この方法でモデルを呼び出すことができます。

import { generate } from '@genkit-ai/ai';

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: 'You are a helpful AI assistant named Walt.',
});

ほとんどの場合、プロンプトにはお客様から提供された入力を含める必要があります。次のように、イベントをレンダリングする関数を定義できます。

function helloPrompt(name: string) {
  return `You are a helpful AI assistant named Walt. Say hello to ${name}.`;
}

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: helloPrompt('Fred'),
});

コードでプロンプトを定義する欠点の 1 つは、テストではプロンプトをフローの一部として実行する必要があることです。より迅速なイテレーションを促進するために、Genkit にはプロンプトを定義してデベロッパー UI で実行できる機能があります。

definePrompt 関数を使用してプロンプトを Genkit に登録します。

import { definePrompt } from '@genkit-ai/ai';
import z from 'zod';

export const helloPrompt = definePrompt(
  {
    name: 'helloPrompt',
    inputSchema: z.object({ name: z.string() }),
  },
  async (input) => {
    const promptText = `You are a helpful AI assistant named Walt.
    Say hello to ${input.name}.`;

    return {
      messages: [{ role: 'user', content: [{ text: promptText }] }],
      config: { temperature: 0.3 }
    });
  }
);

プロンプト アクションは、任意のモデルで使用できる GenerateRequest オブジェクトを返す関数を定義します。必要に応じて、プロンプトの入力スキーマも定義できます。これは、フローの入力スキーマに相当します。プロンプトでは、温度や出力トークンの数など、一般的なモデル構成オプションを定義することもできます。

このプロンプトは、renderPrompt() ヘルパー関数を使用してコードで使用できます。プロンプトで想定される入力変数と、呼び出すモデルを指定します。

import { generate, render } from '@genkit-ai/ai';

generate(
  renderPrompt({
    prompt: helloPrompt,
    input: { name: 'Fred' },
    model: 'googleai/gemini-1.5-flash-latest',
  })
);

Genkit デベロッパー UI では、この方法で定義した任意のプロンプトを実行できます。これにより、使用される可能性のあるフローの範囲外で個々のプロンプトを試すことができます。

ドットプロンプト

Genkit には、プロンプトに機能を追加する Dotprompt ライブラリが含まれています。

  • .prompt 個のソースファイルからプロンプトを読み込んでいます
  • ハンドルバーベースのテンプレート
  • マルチターン プロンプト テンプレートとマルチメディア コンテンツのサポート
  • 簡潔な入出力スキーマ定義
  • generate() での一般的な使用