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

AI Agent開発日記 2025/06/05

2025 6/05
AI_Agent Agent開発
2025年6月5日

やりたいこと

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

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

前回の調査日記

dev-diary-2025-06-04https://datastructor.com/dev-diary-2025-06-04
目次

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

  • やりたいこと
    • 下記の Python クライアントライブラリドキュメントを参考にして、既存playbookを編集するpythonコードを作成したい
  • 現状
    • 現状のコードだとplaybookの名前は変更可能だが、Toolの参照設定をWeb UIで事前に削除しないと400エラーが発生するという問題があるため修正する。

参考ドキュメント

あわせて読みたい

現状のコード

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

# --- 設定情報(必要に応じて入力してください) ---
PROJECT_ID = 'your-gcp-project-id'
LOCATION_ID = 'your-location-id'  # 例: 'global' や 'us-central1'
AGENT_ID = 'your-agent-id'
PLAYBOOK_ID = 'your-playbook-id'

# --- 更新内容の例 ---
NEW_DISPLAY_NAME = 'Updated Playbook Name'
NEW_DESCRIPTION = 'Updated description for this playbook.'

def update_dialogflow_cx_playbook(project_id, location_id, agent_id, playbook_id, new_display_name=None, new_description=None):
    """
    Dialogflow CXのPlaybookを部分更新します。

    Args:
        project_id (str): GCPのプロジェクトID。
        location_id (str): Dialogflow CXエージェントのロケーション。
        agent_id (str): エージェントID。
        playbook_id (str): 更新対象のプレイブックID。
        new_display_name (str): 新しい表示名(任意)。
        new_description (str): 新しい説明文(任意)。
    """
    try:
        # 認証情報の取得
        credentials, _ = google.auth.default()

        # Dialogflow CX API v3beta1 クライアントの作成
        dialogflow_service = build('dialogflow', 'v3beta1', credentials=credentials)

        # 対象Playbookのリソース名
        playbook_name = f'projects/{project_id}/locations/{location_id}/agents/{agent_id}/playbooks/{playbook_id}'

        update_body = {}
        update_mask_parts = []

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

        if new_description:
            update_body['description'] = new_description
            update_mask_parts.append('description')

        if not update_mask_parts:
            print("更新対象のフィールドがありません。")
            return

        update_mask = ','.join(update_mask_parts)

        # PATCHリクエストの実行
        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')}")
        print(f"  説明: {response.get('description')}")

    except HttpError as e:
        print(f"HTTPエラーが発生しました: {e}")
        print(f"ステータスコード: {e.resp.status}")
        if e.content:
            print(f"エラー詳細: {e.content.decode()}")
    except Exception as e:
        print(f"予期しないエラーが発生しました: {e}")

# --- 実行例 ---
if __name__ == '__main__':
    update_dialogflow_cx_playbook(
        project_id=PROJECT_ID,
        location_id=LOCATION_ID,
        agent_id=AGENT_ID,
        playbook_id=PLAYBOOK_ID,
        new_display_name=NEW_DISPLAY_NAME,
        new_description=NEW_DESCRIPTION
    )

人気記事

  • BigQueryの無料枠を活用しよう!制限と注意点、活用方法を解説
  • BigQueryでエラー解決!よくあるエラーと対処法
  • BigQueryのレベル別学習リソースまとめ!初心者から上級者まで役立つ情報源
  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • BigQuery入門!無料データでSQLの基本文字列関数をマスター
AI_Agent Agent開発
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
カテゴリー
  • AI_Agent (112)
    • Agent開発 (112)
  • 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)
目次