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

connpass LT会検索エージェントを作ってみた話

connpass LT会検索エージェントを作ってみた話

Avatar for Yosuke Suzuki

Yosuke Suzuki

August 12, 2026

More Decks by Yosuke Suzuki

Other Decks in Technology

Transcript

  1. 作ったもの ◆Connpassのイベントを定期通知してくれるSlack App <ツール概要> ◆AI がイベントを検索して要約 ・日時・場所・参加者数・URL をまとめて整理 ◆毎朝の自動配信 ・毎朝

    JST 9:00 に Slack へダイジェストが届く ◆メンションで対話検索 ・その場で検索し、スレッドで会話を継続 ◆複数キーワード対応 ・興味のある分野をカンマ区切りで指定
  2. 使用した主な技術 ◆Amazon Bedrock AgentCore ・エージェントのマネージド実行環境 ◆Strands Agents SDK ・エージェント構築フレームワーク ◆connpass

    API v2 ・イベント検索。API キーは事前申請が必要 ◆SSM Parameter Store ・認証情報を SecureString で保管 ◆AWS CDK ・インフラのコード管理とデプロイ connpassのAPI利用について: https://help.connpass.com/api/
  3. システム構成 (毎朝の自動配信フロー) ① EventBridge ② Scheduler Lambda ③ AgentCore Runtime

    毎朝 JST 9:00 に起動 「検索中…」を先に投稿 Strands Agent を呼び出す ⑥ Slack に投稿 ⑤ Agent が要約 ④ connpass API v2 chat.update で差し替え Slack mrkdwn 形式で整形 キーワードでイベント検索
  4. システム構成 (対話的な検索フロー) ① Slack でメンション ② API Gateway ③ slack-verify

    @bot に話しかける Slack イベントを受け取る 署名を検証し即 200 OK ⑥ スレッドに返信 ⑤ slack-process ④ SQS chat.postMessage AgentCore で検索・要約 非同期でキューに積む
  5. 実装のポイントとハマりポイント ◆エージェント定義はシンプル • モデル・プロンプト・ツールを渡すだけ • 軽量で安価な nova-2-lite でコスト重視(安さは正義) ◆出力を Slack

    mrkdwn で指定 • 後加工なしで Block Kit にそのまま流せる ◆Connpass APIのレート制限への対策 • connpass API v2 は 1 リクエスト/秒 • 2 秒スロットル + 指数バックオフの二段構え
  6. 実装のポイントとハマりポイント ◆エージェント定義はシンプル • モデル・プロンプト・ツールを渡すだけ • 軽量で安価な nova-2-lite でコスト重視(安さは正義) ◆出力を Slack

    mrkdwn で指定 • 後加工なしで Block Kit にそのまま流せる ◆Connpass APIのレート制限への対策 • connpass API v2 は 1 リクエスト/秒 • 2 秒スロットル + 指数バックオフの二段構え ◆ハマり: SSM 動的参照が使えない • Runtime 側のコードで SSM から取得 → 素直にAgentCore Identity使えばよかった • →既存で動かしていたシステムの移行のため使える部分を流用した(SSM)
  7. まとめ ◆毎朝 Slack に勉強会情報が届くようになった • イベントの見逃しが減り、気になればその場で深掘りできる • AgentCore + Strands

    Agents SDK + CDK で実装はシンプル ◆今後の課題 ①: せっかくなので もっとAgentCore に寄せたい! • Slack トークンを AgentCore Identity で管理。Runtime 経由なら追加費用なし • AgentCore Gateway で Lambda を MCP ツール化 ◆今後の課題 ②: Slack App 側の改良 • Block Kit で出力の視認性を上げる • DM ならメンション不要に。message.im の購読と im:history で実現