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/04/04

AI Agent開発日記 2025/04/04

2025 4/04
AI_Agent Agent開発
2025年4月4日
目次

この記事について

本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。

やりたいこと

Agent Builder を用いたデータストア参照型対話エージェントの作成において、
データストアのファイル数が増加することで回答率が低下する問題への対処を進める。

前回の調査日記

あわせて読みたい
AI Agent開発日記 2025/04/03 この記事について 本記事は、Agent Builder を使用したデータストア参照型対話エージェントの作成に関する調査記録です。 やりたいこと Agent Builder を用いたデータス...

Agent BuilderのツールであるOpenAPIのスキーマを適切に設定し、Cloud RunにデプロイしたElasticsearchで検索できるか調べる。

  • やりたいこと
    • データ内容を物件データに変更して、正しく回答されるのか検証する
  • 試したこと
    • 以下準備をし、agentに質問。
      • 下記コードで、適当な物件データ作成してelasticsearchに追加
      •  物件検索用にplaybookのInstructionsを調整
  • 結果
    • 「property」インデックスで「location:仙台」の物件を尋ねると通常は回答されるが、まれに値が含まれずに回答されることがある。これはおそらくPlaybookの問題であり、現在改善中。
    • 「property」インデックスで「location:仙台」と「nearest_station:三宮駅」など複数の条件を指定して検索すると、回答が得られなくなってしまう。PythonのElasticsearchでは「most」機能を使うことで複数条件の検索が可能だったため、エージェントがこの「most」機能を使用できていないことが原因と考えられ、現在改善中。

適当な物件データを作成してelasticsearchに追加するコード

from elasticsearch import Elasticsearch
from time import sleep

es = Elasticsearch(
    http_auth=('user-name', 'pass'),
    hosts=['https://url.run.app']
)

index_name = "property"

# サンプル用の物件データ生成
import random

locations = ['東京', '大阪', '名古屋', '札幌', '福岡', '横浜', '京都', '神戸', '仙台', '広島']
types = ['マンション', '一戸建て', 'アパート', 'タウンハウス', 'シェアハウス', '分譲賃貸']
statuses = ['空室', '入居中', 'リフォーム中', '商談中']
stations = ['新宿駅', '渋谷駅', '梅田駅', '名古屋駅', '博多駅', '池袋駅', '東京駅', 'なんば駅', '天神駅', '三宮駅']

def generate_property(i):
    return {
        "index": {"_index": index_name}
    }, {
        "property_id": i,
        "location": random.choice(locations),
        "type": random.choice(types),
        "status": random.choice(statuses),
        "nearest_station": random.choice(stations),
        "price": random.randint(50000, 300000),
        "area_sqm": round(random.uniform(20.0, 100.0), 1)
    }

# 100件作成して20件ずつ送信
chunk_size = 20
for i in range(0, 100, chunk_size):
    bulk_data = []
    for j in range(i, i + chunk_size):
        meta, doc = generate_property(j)
        bulk_data.append(meta)
        bulk_data.append(doc)

    res = es.bulk(operations=bulk_data)
    print(f"Inserted {i + chunk_size} 件まで完了: {res['errors'] = }")
    sleep(1)  # 負荷軽減のため少し待つ

物件検索用playbook Instructions

- **フィールド指定検索(インデックス名 + フィールド名:キーワード)**  
    - 形式: 「[インデックス名] インデックスで [フィールド名]:[検索キーワード] を検索して」  
    - 処理:  
        - 指定フィールドを ${TOOL:toolname} で検索し、結果を物件情報として整形して表示する。  
    - 出力フォーマット:  
        - 「[インデックス名] インデックスで [検索条件] を検索した結果、[件数] 件の物件が見つかりました。  
            - 物件ID: [property_id]  
            - 物件名: [property_name]  
            - 所在地: [location.address]  
            - 賃料: [rent] 円  
        - 他に条件があれば教えてください。」
- **インデックス全体の検索**  
    - 形式: 「[インデックス名] インデックス全体を検索して」  
    - 処理:  
        - インデックス内のすべての物件データを ${TOOL:toolname} で検索し、上位物件を抜粋して表示する。  
    - 出力フォーマット:  
        - 「[インデックス名] インデックス全体を検索した結果、[件数] 件の物件が見つかりました。  
        - 上位3件を表示:  
            - 物件ID: [property_id]  
            - 物件名: [property_name]  
            - 所在地: [location.address]  
            - 賃料: [rent] 円  
        - 全件表示が必要な場合は、お知らせください。」
- **検索エラーが発生した場合**  
    - 形式: 「Elasticsearch でエラーが発生した場合」  
    - 処理:  
        - エラー内容を解析し、ユーザーにとってわかりやすい形で解決策を提示する。  
    - 出力フォーマット:  
        - 「検索中にエラーが発生しました。[エラー内容]」  
        - 「もう一度検索するか、内容をご確認ください。それでも解決しない場合は、管理者にご連絡ください。」
- **Elasticsearchツールの指定が必要な場合**  
    - 形式: 「明確な検索指示がない、または検索フォーマットが不適切な場合」  
    - 処理:  
        - 適切な検索例を提示して、ユーザーに再入力を促す。  
    - 出力フォーマット:  
        - 「検索の指定方法が不明確です。次のように入力してください:  
            - property-index インデックスで location.city:札幌 を検索して  
            - rent-index インデックスで rent:10万円以下 を検索して  
        - もう一度ご入力をお願いします。」

人気記事

  • 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)
目次