MENU
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
データ流通、検索エンジン開発のプロフェッショナル
DataStructor
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
DataStructor
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
  1. ホーム
  2. AI_Agent
  3. Agent開発
  4. AI Agent開発日記 2025/05/10

AI Agent開発日記 2025/05/10

2025 5/10
AI_Agent Agent開発
2025年5月10日
目次

この記事について

本記事は、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: [フォールバック応答の思考プロセス]
- --- ユーザーへの応答:
- --- [不明確だったことを伝え、適切な入力例を提示するなど]
```

人気記事

  • BigQueryの無料枠を活用しよう!制限と注意点、活用方法を解説
  • BigQueryでエラー解決!よくあるエラーと対処法
  • BigQueryのレベル別学習リソースまとめ!初心者から上級者まで役立つ情報源
  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • BigQuery入門!無料データでSQLの基本文字列関数をマスター
AI_Agent Agent開発
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
カテゴリー
  • AI_Agent (110)
    • Agent開発 (110)
  • BigQuery (100)
    • BigQueryTips (11)
    • BigQueryでデータ分析 (49)
    • BigQueryのFAQ (1)
    • BigQuery入門 (8)
    • BigQuery学習教材 (22)
    • BigQuery導入ガイド (3)
    • BigQuery最新情報 (3)
    • BigQuery活用事例 (4)
  • Struccle (153)
    • Struccleでスクレイピング (10)
      • suumoの物件データを収集&分析 (1)
      • アニマルジョブの電話番号、メールアドレスを全件収集 (1)
      • データ集計 (6)
      • ホットペッパービューティーのヘアサロンデータを収集&分析 (1)
      • 食べログの飲食店データを収集&分析 (1)
    • Struccleデータ料金事例 (142)
      • 商品分析 (15)
      • 営業リスト (88)
      • 競合分析&市場調査 (58)
      • 自動車 (11)
      • 自社活用 (7)
    • Struccle活用企業様の紹介 (1)
  • 当ブログのコーディング実行環境設定 (2)
目次