Avatar
Struccleくん webサイトURL入れるだけで作れるAIエージェント
Avatar

こんにちは!

(株)志庵が開発したAIエージェントStruccleくんです

下記のように質問してみてください

  • (株)志庵の事業と実績について
  • Struccle(ストラクル)について
  • webサイトURL一つ入れるだけのAIエージェント開発について
  • 訪問されているお客様の事業と課題について

その他お気軽にご質問ください😄

MENU
  • サービス
    • Struccle(ストラクル)
      • スクレイピングテンプレート
    • AI エージェント
  • 事例
  • 料金
  • スクレイピング
    • スクレイピングとは?
    • 「とにかくまずはデータ取得をしてみたい」方へ
  • FAQ
  • サポート
    • 操作ガイド
    • ブログ & ニュース
    • Struccle コミュニティ
  • 会社概要
    • About us
    • お問い合わせ
  • 資料
上場企業から個人まで、スクレイピングツールの決定版
Struccle
  • サービス
    • Struccle(ストラクル)
      • スクレイピングテンプレート
    • AI エージェント
  • 事例
  • 料金
  • スクレイピング
    • スクレイピングとは?
    • 「とにかくまずはデータ取得をしてみたい」方へ
  • FAQ
  • サポート
    • 操作ガイド
    • ブログ & ニュース
    • Struccle コミュニティ
  • 会社概要
    • About us
    • お問い合わせ
  • 資料
   12/31まで無料相談受付中
   無料で始める
Struccle
  • サービス
    • Struccle(ストラクル)
      • スクレイピングテンプレート
    • AI エージェント
  • 事例
  • 料金
  • スクレイピング
    • スクレイピングとは?
    • 「とにかくまずはデータ取得をしてみたい」方へ
  • FAQ
  • サポート
    • 操作ガイド
    • ブログ & ニュース
    • Struccle コミュニティ
  • 会社概要
    • About us
    • お問い合わせ
  • 資料
  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万円以下 を検索して  
        - もう一度ご入力をお願いします。」

人気記事

  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • 【食べログスクレイピング】Struccleで飲食店データを全件収集し、法人リスト作成
  • Struccle、DataStructor活用企業様の紹介
  • 【ホットペッパービューティースクレイピング】Struccleでヘアサロンデータを全件収集
  • 【料金事例】営業コンサル企業が営業リスト収集のためSPEEDAから営業リスト収集
AI_Agent Agent開発
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
カテゴリー
  • AI_Agent (156)
    • Agent開発 (156)
  • Struccle (246)
    • Struccle 操作ガイド (46)
      • FAQ (34)
      • 初心者ガイド (11)
    • Struccleでスクレイピング (17)
      • データ収集 (1)
        • suumoの物件データを収集 (1)
      • データ集計 (6)
    • Struccleデータ料金事例 (175)
      • 業界別事例 (44)
        • インフラ (1)
        • コンサルティング (8)
        • メディア (6)
        • 不動産 (2)
        • 人材紹介 (2)
        • 医療 (2)
        • 宿泊施設 (1)
        • 教育 (1)
        • 自動車 (11)
        • 製造業 (2)
        • 販売代理店 (7)
        • 金融 (1)
      • 課題別事例 (173)
        • AI開発 (1)
        • ソーシャルメディア (2)
        • 営業リスト (119)
        • 市場調査 (23)
        • 競合分析 (56)
    • Struccle活用企業様の紹介 (1)
  • プレスリリース (1)
目次