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/03/28

AI Agent開発日記 2025/03/28

2025 3/28
AI_Agent Agent開発
2025年3月28日
目次

この記事について

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

やりたいこと

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

前回の調査日記

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

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

  • 試したこと
    • Agent BuilderのツールであるOpenAPIのyaml形式のスキーマを設定して動作を見る前に、jupyterでスキーマを試し、様子を見る。
  • 結果
    • 下記形式のコードを使ってjupyterからelasticsearchへの検索が成功した。
    • スキーマを用いてagentbuilderのtoolでも試してみる。

コード

import yaml
from elasticsearch import Elasticsearch

elasticsearch_schema = """
openapi: 3.0.0
info:
  title: Elasticsearch Search API
  version: v1
servers:
  - url: 'https://your-elasticsearch-endpoint.example.com'  # Elasticsearch のエンドポイントに合わせる
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  # Elasticsearch の検索結果の構造を定義することも可能 (省略)
        '400':
          description: Bad Request. Invalid query parameters.
        '500':
          description: Internal Server Error. Elasticsearch error.
"""

# OpenAPI Specification を YAML として読み込む
spec_es = yaml.safe_load(elasticsearch_schema)

# サーバーURLを取得
server_url_es = spec_es['servers'][0]['url']

# Elasticsearch クライアントを初期化
es = Elasticsearch(server_url_es)

def execute_elasticsearch_search(index_name, query_string=None, query_dsl=None):
    """
    OpenAPI スキーマに基づいて Elasticsearch の検索を実行する関数

    Args:
        index_name (str): Elasticsearch のインデックス名
        query_string (str, optional): Lucene クエリ文字列 (q パラメータ). Defaults to None.
        query_dsl (dict, optional): Query DSL (JSON 形式) (query パラメータ). Defaults to None.

    Returns:
        dict: Elasticsearch の検索結果 (成功時)
        None: エラーが発生した場合
    """
    params = {}
    if query_string:
        params['q'] = query_string
    if query_dsl:
        params['query'] = query_dsl

    res = es.search(index=index_name, query=params.get('query'), q=params.get('q'))
    return res


if __name__ == "__main__":
    index_name = "your_index_name" # 検索対象のインデックス名
    query_string = "occupation.name:デザイナー" # Lucene クエリ文字列での検索 (q パラメータ)
    query_dsl = {"match": {"occupation.name": "デザイナー"}} # Query DSL での検索 (query パラメータ)

    search_result = execute_elasticsearch_search(index_name, query_string=query_string) # または query_dsl=query_dsl を使う

    if search_result:
        print(f"検索結果 (インデックス: {index_name}, クエリ: {query_string if query_string else query_dsl}):")
        print(f"該当ドキュメント数: {search_result['hits']['total']['value']}")
        for hit in search_result['hits']['hits']:
            print(f"ID: {hit['_id']}, Source: {hit['_source']}") # ドキュメント全体を出力するように変更
    else:
        print(f"検索に失敗しました。")
AI_Agent Agent開発
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
カテゴリー
人気記事
  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • 【食べログスクレイピング】Struccleで飲食店データを全件収集し、法人リスト作成
  • 【ホットペッパービューティースクレイピング】Struccleでヘアサロンデータを全件収集
  • Struccle、DataStructor活用企業様の紹介
  • 【料金事例】営業コンサル企業が営業リスト収集のためSPEEDAから営業リスト収集
新着記事
  • 【データ活用】グーネット×SUUMOをスクレイピングして複合分析!
  • 【データ活用】食べログ×SUUMOをスクレイピングして複合分析!新規出店のための知見と将来性を見極める
  • 【業界初】月50万件のデータ収集が完全無料!アプリ不要のWeb完結型スクレイピングツール「Struccle」が2025年10月4日より提供開始
目次
目次