Slide 1

Slide 1 text

2年でここまで成長! AWSで育てたAI Slack botの軌跡 2025-06-25 AWS Summit Japan 2025 AWS Community Builder 岩本隆史

Slide 2

Slide 2 text

自己紹介 岩本 隆史 (@iwamot) AWS Community Builder (Cloud Operations) ENECHANGE株式会社 VPoT

Slide 3

Slide 3 text

社内AI Slack bot、AWSでどう育てた? 2023/5 - 試験運用を開始 ~ 2025/6 - MCPを導入

Slide 4

Slide 4 text

2023/5 - 試験運用を開始 2023/3 - OpenAIがChatGPT APIを公開 2023/4 - 他社のAI Slack bot事例が社内で話題に

Slide 5

Slide 5 text

ChatGPT-in-Slackを選択 https://github.com/seratch/ChatGPT-in-Slack GPTモデルと簡単に会話できるSlack bot 当時Slack、現OpenAIの瀬良さんが開発

Slide 6

Slide 6 text

Amazon EC2でシンプルに起動 export SLACK_APP_TOKEN=xapp-1-... export SLACK_BOT_TOKEN=xoxb-... export OPENAI_API_KEY=sk-... python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python main.py インターネットに接続できれば、どこでも動く

Slide 7

Slide 7 text

2023/6 - 本格運用を開始

Slide 8

Slide 8 text

Amazon ECS/AWS Fargateに移行 運用負荷を下げる意図 Amazon API Gateway/AWS Lambdaも試したが、当時は厳しかった GPTの回答が遅く、タイムアウトが頻発

Slide 9

Slide 9 text

Terraformモジュールを整備 chatgpt-in-slack - デプロイや実行に必要なリソース chatgpt-in-slack-shutdown-at-night - 夜間停止処理に必要なリソース Application Auto ScalingでECSタスクを0に(毎日22時)

Slide 10

Slide 10 text

3つのbotを構築 gpt-4 gpt-3.5-turbo - gpt-4がレートリミットに達したら使う想定(後日削除) ステージング - 日中の開発に利用。夜間は停止

Slide 11

Slide 11 text

ログは2箇所に保存 Amazon S3 - 将来的な集計処理を想定 詳細非公開のストレージ - 情報漏洩など事故発生時の調査用 限られた社員のみアクセス可能

Slide 12

Slide 12 text

2023/7 - KPIの可視化を開始 ユーザーごとの会話数の例 2023/6 - 経営層から「導入効果を可視化したい」との声

Slide 13

Slide 13 text

Amazon Athenaでログを集計 KPI = アクティブユーザー数、会話数 AWS Glueでテーブルを作成(パーティション射影で処理を高速化) 結果は毎月Slackで共有。数分で終わるので手動でOK

Slide 14

Slide 14 text

2023/8 - function callingを導入 2023/6 - OpenAIがfunction callingを発表

Slide 15

Slide 15 text

ChatGPT-in-Slackにpull requestを作成 → マージ https://github.com/seratch/ChatGPT-in-Slack/pull/52

Slide 16

Slide 16 text

関数ファイルを作成 → S3に保存 画像生成、QRコード生成、音声読み上げ 音声読み上げには、Amazon Pollyを利用 appイメージに追加(ビルド時にS3からダウンロード)

Slide 17

Slide 17 text

2024/6 - Claudeの利用を開始 2023/9 - Amazon Bedrockが一般公開 2024/3 - AnthropicがClaude 3 Sonnetを公開。Bedrockでも利用可能に 2024/6 - Claude 3.5 Sonnet公開。Bedrockでも利用可能に

Slide 18

Slide 18 text

ChatGPT-in-SlackはGPTのみ対応 瀬良さんに、GPT以外のモデルへの対応予定を問い合わせ 「対応予定はない」との回答

Slide 19

Slide 19 text

forkして、LiteLLMを組み込み https://github.com/BerriAI/litellm GPTと同じI/Fで、100以上のLLMが使える(もちろんClaudeも) OpenAIライブラリに依存している箇所を置き換え

Slide 20

Slide 20 text

Collmbo(コロンボ)と名づけて公開 https://github.com/iwamot/collmbo 「co-working LLM bot」(ともに働くLLM bot)

Slide 21

Slide 21 text

Bedrock/Claude 3.5 Sonnetの利用を開始 モデル名に bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0 を指定 前月公開の gpt-4o と合わせ、2つのbotが使える状態に

Slide 22

Slide 22 text

2025/6 - MCPを導入 2024/11 - AnthropicがMCP (Model Context Protocol) を公開 2025/5 - AWSがStrands Agentsを公開 (https://strandsagents.com/)

Slide 23

Slide 23 text

Strands AgentsをCollmboに組み込み AWS社内でも使われている、オープンソースのAIエージェントSDK list_tools_sync() や call_tool_sync() を含む Collmboを非同期 (async) 化することなく、簡単に組み込めた

Slide 24

Slide 24 text

MCPサーバー用のコンテナをECSタスクに追加 mcp-proxyを立てて「stdio → Streamable HTTP」変換 https://github.com/sparfenyuk/mcp-proxy 今後、Streamable HTTPが主流になりそうと予想

Slide 25

Slide 25 text

3つのMCPサーバーを設定 Fetch MCP Server - 外部サイト参照 https://github.com/modelcontextprotocol/servers/tree/main/src/fetch AWS Documentation MCP Server - AWSドキュメント参照 https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/ Terraform MCP Server - Terraformドキュメント参照 https://github.com/hashicorp/terraform-mcp-server

Slide 26

Slide 26 text

Amazon GuardDutyによる監視 外部サイト参照を許可 → 不審なアクティビティを検出したい ランタイムモニタリングを有効化 ECSクラスターに GuardDutyManaged = true タグを設定

Slide 27

Slide 27 text

KPIも着実に成長 (2023/6 → 2025/5) アクティブユーザー数 - 1.6倍 会話数 - 2.8倍 がんばってよかった

Slide 28

Slide 28 text

軌跡はまだまだ続く MCPサーバーの追加(認証にも対応) モデルのフォールバック(1つのbot内で) ...

Slide 29

Slide 29 text

️ 最後に、あらためて思ったこと

Slide 30

Slide 30 text

AWS大好き ビルディングブロックが豊富で、ワークロードを育てやすい 便利なOSSにも感謝 AWS Summit、全力で楽しみましょう!