自作AI-Agentによる情報収集自動化(HARO)

小川 雄太郎(松尾研究所)が自作したAI-Agent「HARO」(HAROは愛称)。毎朝の情報収集タスクを自動化・一元化するシステム。「AI-Agentもどき」と著者自身は表現しているが、LLM(Gemini 2.0 Flash)を使って論文Abstractの翻訳などをリアルタイムに生成している点で実質的なAIエージェントとして機能する。

概要

  • 目的: 毎朝の情報収集(金融・天気・サイト最新記事・研究論文)を一画面でワンストップ確認
  • UI: ChatGPTライクなチャットUIにAgentが情報を逐次的に表示
  • 認証: Google OAuth 2.0

動作フロー

ログイン(Google OAuth 2.0)
  ↓
起動動画再生(その間に裏でRSSデータ読み込み)
  ↓
[1] 金融情報表示
    日経平均株価・為替(ドル円)・S&P 500 の前日終値と前々日比
    (プラス→青、マイナス→赤で色分け)
  ↓
[2] 天気予報表示
    今日・明日・明後日 3時間ごと(天気・気温・降水確率・降水量・風速)
  ↓
[3] 全サイト最新記事一覧(自作RSSリーダー)
    第1章で紹介した全サイトの直近記事を統一フォーマットで表示
    CTRLクリックで気になる記事を裏タブに積む
  ↓
[4] Hugging Face Daily Papers 新着論文
    各論文のAbstractを日本語に翻訳して表示
    (LLM翻訳:Gemini 2.0 Flash Experimental)

技術スタック

フロントエンド

技術用途
React.jsメインフレームワーク
Viteビルドツール(バンドラー)
Material-UI(MUI)デザインシステム・UIコンポーネントライブラリ
chat-ui-kit-reactチャットUIコンポーネント
markdown-itMarkdown → HTML 変換
Google Cloud Storage静的ホスティング(SSRではなくSPA静的配信)

描画の工夫: ストリーム処理ではなく「Markdown形式で一括取得 → markdown-it でHTMLに変換 → HTML要素を少しずつ描画(疑似ストリーム)」で実装。Tableはテーブル単位で描画。

バックエンド(全サーバーレス)

技術用途
Google Cloud Run FunctionバックエンドAPI実行環境(AWSのLambda相当)
Fetch APIフロントエンドからのAPI呼び出し(axiosではなくFetch)

API構成

機能使用API / 技術
RSS取得(サイト最新記事)RSS to Json(外部API・Freeプラン)※CORSを回避するためサーバー経由
金融情報自作API(Python yfinance パッケージ)on Cloud Run Function
天気予報OpenWeatherMap「5 Day / 3 Hour Forecast」(無料)
論文Abstract日本語翻訳Gemini 2.0 Flash Experimental via Google Cloud Vertex AI

デザイン生成

  • 静止画デザイン: GPT-4 で生成
  • 起動時動画: 静止画をベースに Sora で生成

設計上の考え方

RSSをフロントエンド直接取得できない理由

JavaScript(ブラウザ)から直接RSSフィードのURLをFetchするとCORSエラーが発生する。対策として「RSS to Json」外部APIをサーバー(Cloud Run Function)経由で呼び出すことで、フロントエンドだけでRSSリーダー機能を実装できる。

金融情報APIを自作した理由

日経平均・ドル円・S&P 500 の3つを同時に無料で取得できる外部APIが見つからなかったため、Python の yfinance パッケージを使った自作APIを Cloud Run Function で構築した。

なぜAI-Agent(もどき)と呼ぶか

チャットUI上でAgentが情報を提示するインターフェースを持ち、LLMによる翻訳タスクをこなしているが、複雑な多段階推論や自律的なツール呼び出しチェーンは持たない。著者は謙遜して「もどき」と表現している。

意義

毎日・毎朝のように実施する情報収集・確認タスクを、可能な限り自分好みにカスタマイズしておく行為は、職業人生という数年から数十年レベルで考えたときに、非常に大きな効率化に繋がる。

日常反復タスクへのAI-Agent活用の実例として、LLMを使った業務改善の具体的なアーキテクチャパターンを示している。

関連