IDチームの前田です。最近はNeo65というカスタムキーボードを組み立てて利用しており、カスタム幅が広くTocky寄りのCreemyなしっとりコトコトとした上質な打鍵音が心地良くて仕事が捗ります。
ここから本題。
今回は社内Slackで運用していたAI Chatbotが特定の人にしか返事をしなくなってしまった話と、原因解決(アプリエラーログ分析)にAIを活用した話です。
3行まとめ
- 社内Slackで運用していたAI Chatbotアプリが特定の人にしか返事をしなくなった
- アプリ不具合調査に生成AIを活用したら、人間が調査するよりも早く原因箇所の特定が完了
- 社内Azure OpenAI環境を整備し、エラーログ調査業務に積極的に活用していきたい
前提情報
- seratch/ChatGPT-in-Slack をForkし、Azureインフラ(Azure OpenAI + Azure Functions + Azure Blob Storage)で動くよう改修したAI ChatbotをSlackにインストールして運用している
- AWSでいうとAzure FunctionsはAWS Lambda、Azure Blob StorageはAmazon S3に相当するサービスです
- 当社だとAzureを利用しているお客様が多いので、Azureで動くものを運用してます
AI Chatbotのインフラ構成
- Azure FunctionsでAI Chatbotが稼働
- Azure Blob Storageにアプリのデータを格納
- Azure OpenAIでAI Chatbotの回答を生成
発生した事象
ある日突然、AI Chatbotが特定の人にしか返事をしなくなり、他の人がAI Chatbotにメンションを飛ばしても返事をしなくなる。
私とAI Chatbotとの会話スレッドに途中から参加してきても無視。
Slackアプリの設定、AI Chatbotの設定を見直していると、返事をする人が変わってしまう。
これは一体…。
原因の調査と特定
Slackの設定なのか、アプリの不具合なのかどこで不具合が発生しているのか不明だったので、とりあえずアプリのエラーを確認すべく、Azure Functionsのログを確認から調査を開始。
最近話題になっていたログ解析ツール tailspin を利用してログを確認。
実際にアプリログをtailspinで表示した感じ。ログにシンタックスハイライトが効いたり、キーワード抽出してくれたりなかなか見やすい。ただ今回は複数イベントが同じタイムスタンプで大量のログが出力されており、tailspin + 目grepではかなり厳しい状況。
tailspinで見やすくなってもログ流量が多く、正常にリクエストが処理されている場合と、エラーになっている場合の違いがよく分からないので、
試しにアプリログをOpenAI ChatGPT(設定でオプトアウト済)を利用して調査をお願い。アプリログを渡し、プロンプトエンジニアリングを駆使し処理が成功するユーザと、失敗するユーザのSlack ID毎でログ分析を依頼。
Azure Blob Storageへのアクセスで404が発生しているとのことで、どのタイミングでAzure Blob Storageにアクセスしているか、404になっているリソースの調査を続けて依頼。
ものの数分で原因箇所の特定が完了。
Azure Blob Storageの中身を確認すると、どうやらSlackの権限を保存したファイル参照で404が発生している模様。
原因の修正
原因箇所の特定が出来れば、あとはAzure Blob Storageへのファイル保存と参照の処理をしているアプリコードを確認するだけなので、 GitHub Copilotとともに不具合を修正。
AI Chatbotがちゃんとすべての人に返事をするようになり、スカイネット爆誕を回避。
所感
- 筆者はエラーログから原因箇所特定などを得意としていましたが、生成AIにお願いしたら段違いの速度と精度
- 今回はOpenAI ChatGPTを利用しましたが、業務用ツールはAzure OpenAIで構築しているので、雑にログを投げて、解析してくれるような仕組みをAzure上に早く作らないとなーと痛感
エラーログの調査に生成AIを活用していきましょう!!