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


AI Agent開発日記 2025/04/04
この記事について 本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。 やりたいこと Agent Builder を用いたデータス...
Agent BuilderのツールであるOpenAPIのスキーマを適切に設定し、Cloud RunにデプロイしたElasticsearchで検索できるか調べる。
- やりたいこと
- スキーマを編集してエージェントが「most」機能を使えるようにする
- 試したこと
- スキーマとplaybookを下記のように編集
- 結果
- most機能を使って複数の条件で絞っての検索ができるようになった
- 次はElasticsearchにデータをさらに追加して動作に問題がないかチェックする。
新スキーマ
openapi: 3.0.0
info:
title: Elasticsearch Property Search API
version: v1
servers:
- url: 'https://app-elasticsearch-appyouta-837157351927.us-west1.run.app'
paths:
/_search:
post:
summary: Search properties in Elasticsearch
description: Executes a search query against an Elasticsearch index for properties.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: object
description: Query in Elasticsearch Query DSL format.
responses:
'200':
description: Successful response with search results.
content:
application/json:
schema:
type: object
properties:
took:
type: integer
description: Time taken for the query in milliseconds.
timed_out:
type: boolean
description: Indicates if the query timed out.
_shards:
type: object
properties:
total:
type: integer
successful:
type: integer
skipped:
type: integer
failed:
type: integer
hits:
type: object
properties:
total:
type: object
properties:
value:
type: integer
relation:
type: string
max_score:
type: number
hits:
type: array
items:
type: object
properties:
_index:
type: string
_type:
type: string
_id:
type: string
_score:
type: number
_source:
type: object
properties:
property_id:
type: integer # レスポンス例より integer に修正
location:
type: string # レスポンス例より string に修正
type:
type: string
status:
type: string
nearest_station:
type: string
price:
type: integer # レスポンス例より integer に修正
area_sqm:
type: number # レスポンス例より number に修正
新playbook
- **フィールド指定検索(インデックス名 + フィールド名:キーワード)**
- 形式: 「[インデックス名] インデックスで [フィールド名]:[検索キーワード] を検索して」
- 処理:
- 指定フィールドを `${TOOL:Elasticsearch指定クエリ検索}` で検索し、結果を物件情報として整形して表示する。
- 出力フォーマット:
- 「[インデックス名] インデックスで [検索条件] を検索した結果、[件数] 件の物件が見つかりました。
- 物件ID: [_id] **← `property_id` ではなく `_id` に修正**
- 物件タイプ: [type]
- 所在地: [location]
- 賃料: [price] 円 **← `rent` ではなく `price` に修正**
- 他に条件があれば教えてください。」
- **インデックス全体の検索**
- 形式: 「[インデックス名] インデックス全体を検索して」
- 処理:
- インデックス内のすべての物件データを `${TOOL:Elasticsearch指定クエリ検索}` で検索し、上位物件を抜粋して表示する。
- 出力フォーマット:
- 「[インデックス名] インデックス全体を検索した結果、[件数] 件の物件が見つかりました。
- 上位3件を表示:
- 物件ID: [_id] **← `property_id` ではなく `_id` に修正**
- 物件タイプ: [type]
- 所在地: [location]
- 賃料: [price] 円 **← `rent` ではなく `price` に修正**
- 全件表示が必要な場合は、お知らせください。」
- **検索エラーが発生した場合**
- 形式: 「Elasticsearch でエラーが発生した場合」
- 処理:
- エラー内容を解析し、ユーザーにとってわかりやすい形で解決策を提示する。
- 出力フォーマット:
- 「検索中にエラーが発生しました。[エラー内容]」
- 「もう一度検索するか、内容をご確認ください。それでも解決しない場合は、管理者にご連絡ください。」
- **Elasticsearchツールの指定が必要な場合**
- 形式: 「明確な検索指示がない、または検索フォーマットが不適切な場合」
- 処理:
- 適切な検索例を提示して、ユーザーに再入力を促す。
- 出力フォーマット:
- 「検索の指定方法が不明確です。次のように入力してください:
- `property-index` インデックスで `location:仙台` を検索して
- `property-index` インデックスで `price:20万円以下` を検索して **← `rent-index` を `property-index` に修正、`price` フィールドの例を追加**
- もう一度ご入力をお願いします。」