目次
この記事について
本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。
やりたいこと
Agent Builder を用いたデータストア参照型対話エージェントの作成において、
データストアのファイル数が増加することで回答率が低下する問題への対処を進める。
前回の調査日記
あわせて読みたい


AI Agent開発日記 2025/03/28
この記事について 本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。 やりたいこと Agent Builder を用いたデータス...
Agent BuilderのツールであるOpenAPIのスキーマを適切に設定し、Cloud RunにデプロイしたElasticsearchで検索できるか調べる。
- 試したこと
- Agent BuilderのツールであるOpenAPIのyaml形式のスキーマを設定して動作を検証する
- 結果
- 下記形式のスキーマと Playbook 設定を使用して検索を試みたところ、ツールは使用され、Cloud Run にもリクエストが送信されていたが、400 エラーが発生し、次のようなメッセージが返されて検索に失敗した。
- 「申し訳ありませんが、検索クエリが正しくありません。my-index インデックスで「デザイナー」を検索することはできません。別の検索クエリを試してください。」
- 現在はエラーとなる原因を調査中
- 下記形式のスキーマと Playbook 設定を使用して検索を試みたところ、ツールは使用され、Cloud Run にもリクエストが送信されていたが、400 エラーが発生し、次のようなメッセージが返されて検索に失敗した。
toolに設定したスキーマ
openapi: 3.0.0
info:
title: Elasticsearch Search API
version: v1
servers:
- url: 'https://url.app' # エンドポイント
paths:
/_search:
get:
summary: Search documents in Elasticsearch
description: Executes a search query against an Elasticsearch index.
parameters:
- in: query
name: index
schema:
type: string
required: true
description: The name of the Elasticsearch index to search.
- in: query
name: q
schema:
type: string
description: Query in Lucene query string syntax.
- in: query
name: query
schema:
type: object
description: Query in Query DSL format (JSON).
responses:
'200':
description: Successful response with search results.
content:
application/json:
schema:
type: object
'400':
description: Bad Request. Invalid query parameters.
'500':
description: Internal Server Error. Elasticsearch error.
playbookに設定したinstructions
- ユーザーからの検索指示の形式を以下のカテゴリに分類し、ケースバイケースで指定された対処を行います。
- 1. **シンプルなキーワード検索 (インデックス名 + キーワード)**
- ユーザー指示例: 「`allitem` インデックスで `pen` を検索して」、「`product-catalog` の `赤いTシャツ` を探して」
- 形式: 「`[インデックス名]` インデックスで `[検索キーワード]` を検索して」または 「`[インデックス名]` の `[検索キーワード]` を探して」
- Agent の処理:
- インデックス名 (`index`) と検索キーワード (`query` または `q` パラメータの値) を抽出します。
- `${TOOL:検索}` ツールを以下のパラメータで実行します。
- パラメーター
- index: [抽出したインデックス名]
- q: [抽出した検索キーワード] (または query パラメータに同等の Query DSL を設定)
- 2. **フィールド指定検索 (インデックス名 + フィールド名:キーワード)**
- ユーザー指示例: 「`customer-index` インデックスで `name:山田` を検索して」、「`weblog` の `status_code:404` のログを探して」
- 形式: 「`[インデックス名]` インデックスで `[フィールド名]:[検索キーワード]` を検索して」または 「`[インデックス名]` の `[フィールド名]:[検索キーワード]` を探して」
- Agent の処理:
- インデックス名 (`index`)、フィールド名、検索キーワードを抽出します。
- `${TOOL:検索}` ツールを以下のパラメータで実行します。
- パラメーター
- index: [抽出したインデックス名]
- q: [抽出したフィールド名]:[抽出した検索キーワード] (または query パラメータに同等の Query DSL を設定)
- 3. **指定された検索形式が上記 1, 2 のいずれにも当てはまらない場合**
- ユーザー指示例: 「Elasticsearch で検索して」、「ペンを検索」、「インデックスを検索」 (インデックス名やキーワードが不明確、または形式が異なる)
- Agent の処理:
- 次のように回答し、検索形式の見直しを促します。
- 「検索形式の指定が正しくない可能性があります。インデックス名と検索したいキーワード (または `フィールド名:キーワード`) を明確に指定して、再度ご質問ください。」
- または、より具体的に:
- 「申し訳ありません、検索指示が理解できませんでした。`[インデックス名] インデックスで [検索キーワード] を検索して` のように、インデックス名と検索キーワードを明確に指定してください。」