Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話

 Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話

2026/3/12 AI Agent Builders Meetup #2 にて発表
https://aibuilders.connpass.com/event/385164/

デモ動画のリンク
https://youtu.be/75EQTa9SxWI

Avatar for RisaTube

RisaTube

March 12, 2026
Tweet

More Decks by RisaTube

Other Decks in Technology

Transcript

  1. 1

  2. 2

  3. 4 4 問い合わせ 取得 従業員 構成図 ユーザーの問い合わせに対し Google Calendar を呼び出し

    ⾃律的に対応するエージェント Gemini Enterprise Vertex AI Agent Engine Google Calendar カレンダー エージェント OAuth 2.0 認可
  4. 5 5 問い合わせ 取得 従業員 構成図 ユーザーの問い合わせに対し Google Calendar を呼び出し

    ⾃律的に対応するエージェント Gemini Enterprise Vertex AI Agent Engine Google Calendar ADK AIエージェント構築‧デプロイ⽤の オープンソースフレームワーク Google Cloud の エージェント実⾏基盤
  5. 6 6 旧称:Google Agentspace 組織内に分散しているデータを横断し、 情報発⾒を⼿助けしてくれる⽣成 AI サービス。 以下の 3つの機能を備えます。

    1. Google 品質の横断検索 2. AI エージェントのプラットフォーム 3. NotebookLM Enterprise Gemini Enterprise
  6. 8 8 ADK - agent.py root_agent =Agent( name="calendar_agent", model=LiteLlm( "vertex_ai/gemini-3-flash-preview",

    vertex_location="global" ), description="⼊⼒情報を解析して Google Calendar にイベントを登録するエージェント", instruction=PROMPT, tools=[ tools.read_todo_file, tools.create_calendar_event, tools.list_calendar_events, tools.update_calendar_event, tools.delete_calendar_event, ], )
  7. 9 9 あなたは議事録や⽂字起こしからTodoを抽出して Google Calendar に登録するアシスタントです。 以下の⼿順で作業してください。 1. ユーザーから議事録を受け取る。 -

    ファイルパスが渡された場合は read_todo_file ツールでファイルを読み込む。 2. テキスト内容を解析し、議事録からTodoとそれに関係する情報を抽出する: - ⽇付‧時刻(今年は2026年。⽉/⽇ の形式なら 2026年として解釈する) - イベントタイトル - 説明(あれば) - 終⽇イベントかどうか 3. 抽出した各イベントについて create_calendar_event ツールを呼び出して登録する。 - ⽇時は ISO 8601 形式にする(例: 2026-02-20T14:00:00) - 終⽇イベントの場合は⽇付のみ(例: 2026-03-01)、end_datetime は翌⽇にする - 時間の指定がない場合は終⽇イベントとして扱う - 終了時刻の指定がない場合は開始から1時間後を終了時刻とする - タイムゾーンは Asia/Tokyo 4. Todo テキストに参加者(メールアドレス)の記載があれば attendees に指定する。 ユーザーが参加者を指定した場合は、そのメールアドレスを追加する。 5. 登録結果をユーザーに報告する。 注意事項: - すべての⽇時は⽇本時間 (JST, Asia/Tokyo) を基準とする。 時刻の指定がある場合は⽇本時間として解釈すること。 - テキストは⾃由形式。「2/20 14:00 美容院」のようなフォーマットもあれば、 ⽂章形式の場合もある。柔軟に解析すること。 - ⽇付が曖昧な場合は確認を求める。 プロンプトで作業の流れを指⽰
  8. 10

  9. 11 11 from google.adk.tools import ToolContext from google.oauth2.credentials import Credentials

    def get_calendar_service(tool_context: ToolContext): # 1. 管理画面で設定した認証 IDを取得 auth_id = os.getenv("AUTH_ID") # 2. ToolContext.state からトークンを取得 access_token = tool_context.state.get(auth_id) if not access_token: raise ValueError("認証トークンが取得できません ") # 3. トークンでカレンダーサービスを生成 creds = Credentials(token=access_token) return build("calendar", "v3", credentials=creds) Google Workspace の API を実⾏  Tool_context.stateを活⽤し トークンの保存や セッションの管理を⾏う
  10. 14 14 Agent Engine - リージョン指定のワナ Agent Engine us-central1 など

    Gemini 3 モデル グローバルリージョン リージョンが異なるため対策が必要
  11. 15 15 解決策:モデル呼び出しをLiteLLM経由にする root_agent =Agent( name="calendar_agent", model=LiteLlm( "vertex_ai/gemini-3-flash-preview", vertex_location="global" ),

    description="議事録を解析して Google Calendar にイベントを登録するエージェント", instruction=PROMPT, tools=[ tools.read_todo_file, tools.create_calendar_event, tools.list_calendar_events, tools.update_calendar_event, tools.delete_calendar_event, ], ) https://github.com/google/adk-python/issues/3628#issuecomment-3818012146
  12. 16

  13. 17 17 問い合わせ 取得 従業員 構成図 ユーザーの問い合わせに対し Google Calendar を呼び出し

    ⾃律的に対応するエージェント Gemini Enterprise Vertex AI Agent Engine Google Calendar カレンダー エージェント OAuth 2.0 認可
  14. 20