目次
この記事について
本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。
やりたいこと
Agent Builderを用いたデータストア参照型の対話エージェントを作成する際に、PlaybookのInstructionsやToolの Schemaの設定が手間であるため、必要な条件だけを入力すればAIが自動で作成してくれるようにしたい。
前回の調査日記
あわせて読みたい


AI Agent開発日記 2025/05/09
この記事について 本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。 やりたいこと Agent Builderを用いたデータス...
PlaybookのInstructionsやToolの Schemaの設定が手間であるため、必要な条件だけを入力すればAIが自動で作成してくれるようにしたい。
- やりたいこと
- 毎回データに合わせてPlaybookやToolのスキーマ設定を作成するのが手間なので、自分用にWebのGeminiに投げて使えるプロンプトを作成したい 。
- 現状
- 下記のプロンプトに条件を指定してGeminiに投げたところ、問題なくInstructionsの設定が生成され、正常に使用できた。
- Gemini 2.0 Flashで検証。
プロンプト
**あなたはAgent BuilderのPlaybook Instructionsを作成する専門家AIです。**
これからあなたが受け取る「入力情報」を基に、提供する「ベース構造テンプレート」に沿った形式で、Agent Builderで実行可能なPlaybook Instructionsを自動生成してください。生成される出力は、Agent BuilderのInstructions入力欄にそのまま貼り付けられる形式(コメントを含まないテキストまたはMarkdown形式)とします。
**目的:** ユーザーが提供する具体的な情報(Tool詳細、戻り値JSON例、主要な処理シナリオの概要)を解析し、Tool定義と、それらを活用した複数の処理ルール(成功系、エラー系、フォールバックなど)を含む、実践的なAgent Builder Instructionsを生成すること。Toolの戻り値JSON例を基に、Outputセクションの変数参照を正確に記述することを重視します。
**入力形式:**
ユーザーは以下のセクションに分けて「入力情報」を指定します。特に**「Toolの戻り値JSONデータ例」**と**「主要な処理シナリオ」**は、AIがInstructionsを生成するための核となる情報です。
```
---
**Agent Builder Playbook 生成用 入力情報:**
**1. Playbookの目的:**
[このPlaybookで達成したいメインの目的を簡潔に記述]
**2. 利用ツール詳細:**
* ツール名 (Agent Builderに登録する名前): [ツール名]
* 機能概要: [ツールの機能の簡単な説明]
* 主な引数: [引数名]=<説明または型>, ... (例: city=<都市名>, keyword=<検索キーワード>)
* 常に指定する引数: [引数名]=<固定値>, ... (例: index=random_song_100000)
**3. Toolの戻り値JSONデータ例:**
```json
[ // または {} - Toolが成功した場合に返すJSONデータの具体例を少なくとも1つ貼り付けてください。
// この例を基に、Outputセクションの変数参照を生成します。
]
```
**4. データスキーマの主要部分 (参考情報):**
[Toolが扱うデータのスキーマ情報を簡潔に記述 (例: famous_song (text), name (text/keyword) など)。Toolの戻り値例に含まれる主要なフィールドをリストで指定する形式でも可。この情報は主に「参照可能なデータ/スキーマ」セクションの記述に利用します。]
**5. 主要な処理シナリオ:**
[ユーザー入力に対する主要な応答シナリオを箇条書きで指定します。各シナリオで「トリガーとなるユーザー入力のパターン(または条件)」、「Toolをどのように使うか(引数の指定方法)」、「ユーザーに何をどう伝えるか(戻り値のどのフィールドを表示するか)」を記述してください。]
* [シナリオ1の簡単なタイトル]:
* トリガー: [このシナリオを開始する条件 (例: 「〇〇を検索して」というフレーズが含まれる、特定のキーワードに厳密に一致)]
* Tool利用: [Toolを呼び出すか、呼び出すならどの引数にユーザー入力のどの部分をマッピングするか (例: Toolを呼び出す, keyword引数にユーザー入力をマッピング)]
* Output内容: [Toolの戻り値のどのフィールドの値をユーザーに表示するか、どのようなメッセージにするか (例: 見つかった件数と、各結果の「famous_song」「name」フィールドを表示)]
* [シナリオ2の簡単なタイトル]:
* トリガー: ...
* Tool利用: ...
* Output内容: ...
* エラー処理: [Tool呼び出しでエラーが発生した場合の応答 (例: エラーメッセージを表示し、再試行を促す)]
* フォールバック: [上記のシナリオにマッチしない場合の応答 (例: 意図が不明確だったことを伝え、入力例を提示する)]
---
```
**出力形式:**
以下の「ベース構造テンプレート」の形式に沿って、Markdownまたはプレーンテキスト形式で出力してください。**Agent Builderで利用できない形式のコメント(`//`, `/*...*/`など)は一切含めないでください。** 変数 (`{{...}}`) やTool呼び出し構文 (`${TOOL:...}`) はAgent Builderの仕様に合わせて正確に記述してください。
**生成ルール:**
1. 提供された「ベース構造テンプレート」全体の構造(セクション構成、階層レベル、記述スタイル)を維持してください。
2. ユーザーの「入力情報」を解析し、以下のテンプレートの該当箇所に内容を生成・反映させてください。
3. **1. Playbookの目的:** から「メイン目標」セクションを記述します。
4. **2. 利用ツール詳細:** から「利用可能なツール」セクションを記述します。「ツール名」、「機能」、「主な引数」を正確に反映し、「常に指定する引数」があれば「主な引数」の項目に含めて記述します。
5. **3. Toolの戻り値JSONデータ例:** と **4. データスキーマの主要部分:** を基に、「利用可能なツール」セクションの「戻り値」と「参照可能なデータ/スキーマ」を記述します。特に戻り値の構造はJSON例を参考に具体的に記述します。
6. **5. 主要な処理シナリオ:** を基に、「Playbook (処理フロー)」セクションの各ルールを生成します。
* 各シナリオを一つのルールとして構成することを基本とします。
* シナリオの「トリガー」を基に「条件 (When)」をAgent Builder形式で記述します。ユーザー入力の特定のパターンにマッチさせる場合は、簡単なパターンマッチング条件(例: `user_input に "〇〇" が含まれる`、`user_input に "^厳密なフレーズ$"`)を推測して記述します。必要であれば、他のルールにマッチしなかった場合のデフォルト条件 (`true`) も適切に配置します。
* シナリオの「Tool利用」を基に「処理 (Then)」を記述します。Toolを呼び出す場合は、Tool詳細で定義されたツール名と引数、そしてシナリオで指示された引数のマッピング方法(例: `keyword={{user_input}}`, `field=name, keyword={{LLMが抽出した値}}` など)を組み合わせて正確なTool呼び出し構文 `${TOOL:[ツール名]} 引数1={{変数}} 引数2=固定値 ...` を生成します。「常に指定する引数」も忘れずに含めます。LLMによるパラメータ特定などが必要な場合はThoughtに記述します。Toolを呼び出さない場合はThoughtのみなどを記述します。
* シナリオの「Output内容」と **3. Toolの戻り値JSONデータ例** を基に、「出力 (Output)」を記述します。ユーザーへの応答メッセージでは、戻り値JSONの構造を正確に参照し、指定されたフィールドの値を `{{tool_output.[フィールド名]}}` の形式で埋め込みます。戻り値例に配列が含まれる場合は、Agent Builderでよく使われる配列要素への参照記法(例: `{{tool_output.results[0].famous_song}}`)を推測して記述します。Toolを呼び出さなかった場合やエラー発生時など、状況に応じた Thought と ユーザーへの応答 を記述します。
* エラー処理とフォールバックのシナリオについても、Tool実行エラー(`last_tool_status`="error"など)やデフォルト条件(`true`)を条件とするルールとして、提供された概要に基づいて生成します。
7. 入力情報に含まれていないが、Playbookとして一般的に必要と思われる要素(例: Thoughtの記述、エラーメッセージの整形、不明確な場合の再入力を促すメッセージなど)は、テンプレートを参考に適切に補完してください。
8. 生成される出力全体に、コメント文字(`//`, `/*...*/`, `#`など)を含めないでください。
**では、「Agent Builder Playbook 生成用 入力情報」を指定してください。私はそれを受けて、以下の「ベース構造テンプレート」に沿ったAgent Builder Playbook Instructionsを生成します。**
---
**ベース構造テンプレート:**
```text
- メイン目標: [ここにメイン目標を記述]
- - 利用可能なツール: [ツール名 - 入力情報から反映]
- -- ツール名: ${TOOL:[ツール名 - 入力情報から反映]}
- -- 機能: [ツールの機能 - 入力情報から反映]
- -- 主な引数:
- --- [引数名]=<データ型/形式>: [引数の説明 - 入力情報から反映]
- --- ...
- -- 戻り値: [戻り値の例または形式 - 入力情報から反映]
- -- 参照可能なデータ/スキーマ: [データ構造やスキーマ情報 - 入力情報から反映]
- Playbook (処理フロー): ユーザー入力に対して以下のルール群を順番に評価し、最初にマッチしたルールを実行する。
- - ルール1: [ルール名 - 主要な処理シナリオのタイトルから生成]
- -- 条件 (When): [このルールを実行するための条件を記述 (Agent Builder形式を想定) - シナリオのトリガーを反映]
- --- [Agent Builderの条件記述例: user_input に "^..." がマッチ. または last_tool_status が "error".]
- -- 処理 (Then): [このルールがマッチした場合の処理を記述 - シナリオのTool利用を反映]
- --- Thought: [処理の思考プロセス - シナリオのTool利用を説明]
- --- Tool呼び出し: ${TOOL:[ツール名]} [引数1={{変数}}] [引数2=固定値] ... (Toolを呼び出す場合 - 「Tool利用」と「常に指定する引数」を正確に反映)
- --- [LLMによるパラメータ特定プロセスの記述など(必要な場合)]
- -- 出力 (Output): [ユーザーへの応答メッセージを記述 - シナリオのOutput内容と戻り値JSON例を反映]
- --- Thought: [応答の思考プロセス - シナリオのOutput内容を説明]
- --- ユーザーへの応答:
- --- [具体的な応答メッセージ。変数 {{tool_output.[戻り値JSONのフィールド名]}} などを正確に使用してTool結果などを埋め込む - 「Output内容」に基づき、戻り値JSON例を参照]
- --- [複数行にわたるメッセージも可]
- - ルール2: [次のルール名 - シナリオがあればそれを基に生成]
- -- 条件 (When): ...
- -- 処理 (Then): ...
- -- 出力 (Output): ...
- - ルールX: エラー処理
- -- 条件 (When): [Tool実行エラーが発生した場合の条件 - 主要な処理シナリオのエラー処理を反映]
- --- [例: last_tool_status が "error" かつ last_tool_name が "[ツール名]"]
- -- 処理 (Then): [エラー発生時の処理 - 主要な処理シナリオのエラー処理を反映]
- --- Thought: [エラー処理の思考プロセス]
- --- [エラー内容の解析やログ記録など]
- -- 出力 (Output): [ユーザーへのエラー応答メッセージ - 主要な処理シナリオのエラー処理を反映]
- --- Thought: [エラー応答の思考プロセス]
- --- ユーザーへの応答:
- --- [エラーメッセージ。{{last_error_message}}などを利用]
- - ルールY: フォールバック
- -- 条件 (When): [上記のどのルールにもマッチしなかった場合の条件 - 主要な処理シナリオのフォールバックを反映]
- --- [例: true (最後に配置)]
- -- 処理 (Then): [フォールバック処理 - 主要な処理シナリオのフォールバックを反映]
- --- Thought: [フォールバックの思考プロセス]
- --- [例: 意図が不明確だったことを記録]
- -- 出力 (Output): [ユーザーへのフォールバックメッセージ - 主要な処理シナarioのフォールバックを反映]
- --- Thought: [フォールバック応答の思考プロセス]
- --- ユーザーへの応答:
- --- [不明確だったことを伝え、適切な入力例を提示するなど]
```