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/05/24

AI Agent開発日記 2025/05/24

2025 5/24
AI_Agent Agent開発
2025年5月24日
目次

この記事について

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

やりたいこと

データを読み込むだけで、以下が自動で行われる仕組みを構築したい。

  • 読み込んだデータがElasticsearchに自動登録される
  • データと指示内容がGeminiに渡され、PlaybookやTool/Schemaが自動生成される
  • 生成された内容が自動でPlaybookやToolに反映され、管理用エージェントと紐づいて構成される

前回の調査日記

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

WebUIからではなく、コードを使ってagentbuilder/agentのToolや、Playbookを作成したい

  • 現状
    • Tool を作成するコードを下記クライアントライブラリを参考にして作成し試してみたが、AttributeError が発生した為、現在修正中。

参考記事

あわせて読みたい

現状のコード

from google.cloud import dialogflowcx_v3beta1

def create_api_tool(project_id: str, location_id: str, agent_id: str,
                    tool_display_name: str, tool_description: str, openapi_yaml_string: str):
    """
    Creates an API tool in the specified Dialogflow CX agent.

    Args:
        project_id: Google Cloud project ID.
        location_id: Region ID (e.g., "global", "us-central1").
        agent_id: Dialogflow CX agent ID.
        tool_display_name: Display name for the new tool.
        tool_description: Description of the tool's purpose.
        openapi_yaml_string: OpenAPI 3.0 specification as a YAML string.
    """
    client = dialogflowcx_v3beta1.ToolsClient()

    parent = f"projects/{project_id}/locations/{location_id}/agents/{agent_id}"

    tool_config = dialogflowcx_v3beta1.types.Tool(
        display_name=tool_display_name,
        description=tool_description,
        tool_type=dialogflowcx_v3beta1.types.Tool.ToolType.OPEN_API,
        open_api_spec=dialogflowcx_v3beta1.types.Tool.OpenApiSpec(
            text_schema=openapi_yaml_string
        )
    )

    try:
        created_tool = client.create_tool(parent=parent, tool=tool_config)
        print(f"Tool created successfully: {created_tool.name}")
        print(f"Display Name: {created_tool.display_name}")
        print(f"Tool Type: {dialogflowcx_v3beta1.types.Tool.ToolType(created_tool.tool_type).name}")
        print(f"Tool ID: {created_tool.name.split('/')[-1]}")
        return created_tool
    except Exception as e:
        print(f"Error creating tool: {e}")
        return None

if __name__ == "__main__":
    # Set your own values here or load from environment/config
    PROJECT_ID = "your-project-id"
    LOCATION_ID = "your-region"  # e.g., "global"
    AGENT_ID = "your-agent-id"

    TOOL_DISPLAY_NAME = "Sample TODO API Tool"
    TOOL_DESCRIPTION = "Fetches a specific TODO item from jsonplaceholder. Created via Python."

    OPENAPI_SCHEMA = """
openapi: 3.0.0
info:
  title: JSONPlaceholder TODO API
  version: v1.0.0
  description: A simple API to get a TODO item.
servers:
  - url: https://jsonplaceholder.typicode.com
paths:
  /todos/{todoId}:
    get:
      summary: Get a single TODO item by ID
      operationId: getTodoById
      parameters:
        - name: todoId
          in: path
          required: true
          description: ID of the todo to retrieve
          schema:
            type: integer
            default: 1
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  userId:
                    type: integer
                  id:
                    type: integer
                  title:
                    type: string
                  completed:
                    type: boolean
        default:
          description: Error response
"""

    new_tool = create_api_tool(PROJECT_ID, LOCATION_ID, AGENT_ID,
                               TOOL_DISPLAY_NAME, TOOL_DESCRIPTION, OPENAPI_SCHEMA)
    if new_tool:
        print(f"Tool '{new_tool.display_name}' details: {new_tool}")

AttributeError

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[14], line 93
     52     OPENAPI_SCHEMA = """
     53 openapi: 3.0.0
     54 info:
   (...)
     90           description: Error response
     91 """
     92     # 注意: 認証、ライブラリインストール、API有効化はPlaybook作成時と同様に必要です。
---> 93     new_tool = create_api_tool(<PROJECT_ID>, <LOCATION_ID>, <AGENT_ID>,
     94                                TOOL_DISPLAY_NAME, TOOL_DESCRIPTION, OPENAPI_SCHEMA)
     95     if new_tool:
     96         print(f"Tool '{new_tool.display_name}' details: {new_tool}")

Cell In[14], line 23, in create_api_tool(project_id, location_id, agent_id, tool_display_name, tool_description, openapi_yaml_string)
     16 client = dialogflowcx_v3beta1.ToolsClient()
     18 parent = f"projects/{project_id}/locations/{location_id}/agents/{agent_id}"
     20 tool_config = dialogflowcx_v3beta1.types.Tool(
     21     display_name=tool_display_name,
     22     description=tool_description,
---> 23     tool_type=dialogflowcx_v3beta1.types.Tool.ToolType.OPEN_API,
     24     open_api_spec=dialogflowcx_v3beta1.types.Tool.OpenApiSpec(
     25         text_schema=openapi_yaml_string
     26     )
     27 )
     29 try:
     30     created_tool = client.create_tool(parent=parent, tool=tool_config)

File /opt/anaconda3/envs/ab/lib/python3.11/enum.py:786, in EnumType.__getattr__(cls, name)
    784     return cls._member_map_[name]
    785 except KeyError:
--> 786     raise AttributeError(name) from None

AttributeError: OPEN_API

人気記事

  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • 【食べログスクレイピング】Struccleで飲食店データを全件収集し、法人リスト作成
  • 【ホットペッパービューティースクレイピング】Struccleでヘアサロンデータを全件収集
  • Struccle、DataStructor活用企業様の紹介
  • 【料金事例】営業コンサル企業が営業リスト収集のため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)
目次