FLINTERS BLOG
🤖

今年作って一番便利だったAIツール

に公開

こんにちは。FLINTERSの河内です。
この記事はアドベントカレンダー2日目の記事です。

ここ数年ずーっと言っている気がしますが、最近AIの発展は目覚ましいですね。
私としては、エンジニアリングツールボックスに AI/Agent を忍ばせておいて、いつでもさっと使えるようにするというのが一つの目標なのですが、Claude code を始めとしたコーディングエージェントがあればだいたいなんでもできるようになって来ています。

とはいえ、大きな処理をコーディングエージェントで一括処理しようとしても途中でコンテキストが溢れたり、処理に抜けが生じたりすることもあるので、自分で様々なプログラムを作ることもまだまだ有用だと思います。

今年の秋に外部サービス監視Agentというものを作って使っているので、どんな感じのものか紹介したいと思います。この子、今年手元でガチャガチャ作った中では一番便利に実用できています。

問題設定

我々が手掛けているシステムは多くの外部サービスに依存しています。AWS, Google Cloud, SendGrid, Auth0 など。
これらの外部サービスは日々アップデートを繰り返してます。アップデートの内容によってはこちら側でも手を動かす必要があります。たとえば、機能が廃止されたり、機能に変更があったり、インシデントがあった場合などです。情報をキャッチアップしそこねると、我々のサービス提供に支障が生じます。

サービス提供に問題があってはいけないので、各外部サービスの情報をいろいろなところからかき集めて、対応必要性を定期的に判断・整理しています。このプロセスを外部サービス監視と呼んでいます。
外部サービス監視には以下の課題が存在していました。

玉石混交の情報が大量にある

たとえば Google Cloud の変更点は https://docs.cloud.google.com/release-notes で提供されています。これを見ると毎日と言っていいほど何かしらの変更が起きていることがわかります。単純に量が多いのです。
更に、これらのうち実際に手を動かす必要があるものは、ごくわずかです。
必ずしも何かの対応をしなくても我々のサービス提供に支障はでないものには次のようなものがあります。

  • 新しい機能が追加されたという情報
  • 我々が利用していない製品や機能に関する情報

新しい機能が追加されたという情報はシンプルにスキップできるのですが、特定の変更が我々に影響するかの判断は大きなシステムだとかなり大変です。これ使ってたかな…🤔 を調べるのにコードの海を泳ぐ必要があります。正直疲れます。

情報提供手段が複数ある

多くの情報はウェブサイトに公開されます。
しかし、メールでしかこない連絡や、情報アクセスするためにログインが必要なものなど、様々な手段で連絡がくるので、いろいろなところにログインして情報を集めて回る必要があります。アクセスすべきサイトや、検索のための条件は文書化してあるのですが、文書を見ながらサイトを延々と巡回をするのはクリエイティビティに乏しく眠くなってしまいます。

退屈なことはAIにやらせよう

認証情報を扱う必要があったり、各サービスについて順次同じ処理を繰り返す必要があったので、AIにプロンプトで一気にという形ではなく、大枠をプログラム (Python)で書いて、その中でAI Agent (Claude Agent SDK)、LLM (Gemini) を動かす形にしました。

手順は以下の通りです。


手順 by Gemini

  1. 情報収集
    • 様々なソースから情報を集める
      • Webサイト: 設定した情報提供URLをキーワードを元に URL contextGrounding with Google Search を使って情報収集。
      • メール: Gmail API を用いてメールにアクセス。事前設定した検索ワードでフィルタリングして得られたメールを Gemini で分類。サービスの更新情報のみを取り出す。
      • AWS personal health dashboard: boto3 でアクセス。
      • etc.
  2. 重複排除
    • 情報収集では様々なソースから情報を集めているため情報が重複する。Gemini で各情報を embedding し類似度を算出。閾値を超えて似ているものについては Gemini に食わせて同じ情報かどうか判定する。同じ情報だと判定された場合は、代表的な情報のみを次の処理に回す。
  3. 影響判断
    • 各更新情報について、Agent SDK を用いて影響を判断する。Agent SDK には我々のサービスのソースコードにアクセスできるようにしておくことで、できるだけ正確に判断可能な状態を作っている。
    • 出力は分類(action required / info / other) 、分類の理由、分類の確信度。
  4. 対応チケット作成
    • action required と分類されたものについてチケットシステムを検索。Agent SDK で検索することにより、キーワードを柔軟に変えながらチケットを見つけることができる。チケットがまだなければ作成する。
  5. レポート
    • 人間が読みやすい形に処理結果をまとめる。
    • 分類の確信度が低いものは特に入念なチェックが必要とマーク

ここまでをプログラムで自動実行しその結果を人間が最終的にチェックすることで、大幅に負担を減らし、人間らしさを保ちやすいようになりました。

学び

  • 自分たちのシステムについて製品とインフラが全てコード化されており、設計や運用についてドキュメント化されていれば、現状AIでもほぼ正しい分類で整理できる(体感ほぼ100%)
  • コード化・ドキュメント化することの重要性が以前より上がっているとも言える。
  • やればできる、できるのだが人間には辛い仕事に AI がハマると Quality of Work が向上し、幸せな気持ちになれるのでどんどんやろう
FLINTERS BLOG
FLINTERS BLOG

Discussion