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

AI Agent開発日記 2025/06/06

2025 6/06
AI_Agent Agent開発
2025年6月6日

やりたいこと

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

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

前回の調査日記

あわせて読みたい
AI Agent開発日記 2025/06/05 やりたいこと データを読み込むだけで、以下が自動で行われる仕組みを構築したい。 読み込んだデータがElasticsearchに自動登録される データと指示内容がGeminiに渡さ...
目次

Agentbuilderの既存playbookを編集するpythonコードを作成する

  • やりたいこと
    • 下記の Python クライアントライブラリドキュメントを参考にして、既存playbookを編集するpythonコードを作成したい
  • 現状
    • ツールの参照設定がない状態の Playbook に対して編集できるコードは作成済み。
    • ただし、Playbook にツールの参照設定がある場合、事前に Web UI でその参照を削除しないと 400 エラーが発生するという問題があるため、解決したい。
      • 現在、以下の対応方法を調査中:
        • Playbook からツールの参照設定を解除するコードの実装
        • Playbook に特定のツールを参照させるコードの実装

参考ドキュメント

あわせて読みたい

現状のコード

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# --- 設定情報(適宜置き換えてください) ---
PROJECT_ID = 'your-gcp-project-id'
LOCATION_ID = 'your-agent-location-id'  # 例: 'global', 'us-central1'
AGENT_ID = 'your-agent-id'
PLAYBOOK_ID = 'your-playbook-id'

NEW_DISPLAY_NAME = 'Updated Playbook Name'
NEW_GOAL = """
このプレイブックの目的は、APIを使って表示名、ゴール、Instructionsを更新することです。
"""
NEW_INSTRUCTIONS = """
これはAPIで更新された新しいInstructionsです。
- 手順 A
- 手順 B
"""

def update_dialogflow_cx_playbook_fields(
    project_id: str,
    location_id: str,
    agent_id: str,
    playbook_id: str,
    new_display_name: str = None,
    new_goal: str = None,
    new_instructions: str = None
):
    """
    指定された Dialogflow CX プレイブックのフィールドを更新します。

    Args:
        project_id: Google Cloud プロジェクト ID
        location_id: Dialogflow CX エージェントのロケーション ID
        agent_id: Dialogflow CX エージェント ID
        playbook_id: 更新対象のプレイブック ID
        new_display_name: 新しい表示名(省略可)
        new_goal: 新しいゴール(省略可)
        new_instructions: 新しい Instructions テキスト(省略可)
    """
    try:
        credentials, _ = google.auth.default()
        dialogflow_service = build('dialogflow', 'v3beta1', credentials=credentials)

        playbook_name = f'projects/{project_id}/locations/{location_id}/agents/{agent_id}/playbooks/{playbook_id}'

        update_body = {}
        update_mask_parts = []

        if new_display_name is not None:
            update_body['displayName'] = new_display_name
            update_mask_parts.append('displayName')

        if new_goal is not None:
            update_body['goal'] = new_goal
            update_mask_parts.append('goal')

        if new_instructions is not None:
            update_body['instruction'] = {
                'steps': [
                    {'text': new_instructions}
                ]
            }
            update_mask_parts.append('instruction.steps')

        if not update_mask_parts:
            print("更新するフィールドが指定されていません。")
            return

        update_mask = ','.join(update_mask_parts)

        print(f"Updating playbook: {playbook_name}")

        request = dialogflow_service.projects().locations().agents().playbooks().patch(
            name=playbook_name,
            updateMask=update_mask,
            body=update_body
        )

        response = request.execute()
        print("プレイブックの更新に成功しました。")
        print(f"新しい表示名: {response.get('displayName', 'N/A')}")
        print(f"新しいゴール: {response.get('goal', 'N/A')}")
    except HttpError as e:
        print(f"API エラー: {e}")
        print(f"ステータスコード: {e.resp.status}")
        print(f"理由: {e.resp.reason}")
        if e.content:
            print(f"詳細: {e.content.decode()}")
    except Exception as e:
        print(f"その他のエラーが発生しました: {e}")

if __name__ == '__main__':
    update_dialogflow_cx_playbook_fields(
        project_id=PROJECT_ID,
        location_id=LOCATION_ID,
        agent_id=AGENT_ID,
        playbook_id=PLAYBOOK_ID,
        new_display_name=NEW_DISPLAY_NAME,
        new_goal=NEW_GOAL,
        new_instructions=NEW_INSTRUCTIONS
    )

人気記事

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