ChatGPTやGeminiのWeb検索で最新ニュース分析、それをすべて自動化した話
はじめに
ChatGPTやGeminiには、Webをリアルタイムに検索して回答を生成する機能が搭載されています。
以前までのLLMは、学習データのカットオフがあり、最新の情報を反映できませんでしたが、これらの機能により、最新のニュースや情報をリアルタイムで取得し、分析・要約することが可能になりました。
この機能を使えば、最新のニュースを自分向けに分析・要約させる、といった使い方が簡単にできてしまいます。
LLMで最新のニュースをWeb検索して分析・要約する方法(というかプロンプト)
例えば、ChatGPTにこんな風にお願いしてみたとします。モデルは「GPT-4o」を選択し、Web検索を有効化した状態で実行します。
あなたは一流のデータアナリストです。
最新のニュースを分析し、私にとって重要な情報を提供してください。
### 依頼概要
昨日から今日にかけての最新ニュースを5件選び、以下の依頼内容に基づき、私の情報を踏まえて、分析結果を出力してください。
### 依頼内容:
各ニュース1つ1つに対して以下を実行して下さい。
1. 最新のニュースの重要な点を簡潔に要約してください。
2. 最新ニュースに対する私の業務に対するポジティブな影響を評価してください。
3. 最新ニュースに対する私の業務に対するネガティブな影響を評価してください。
4. 3ヶ月以内を目安とした具体的なアクションを提案してください。
5. 3ヶ月〜1年を目安とした具体的なアクションを提案してください。
### 私の情報:
ITベンチャー企業でデータ分析やソフトウェア開発の仕事をしています。私は30代です。
すると、LLMは最新の情報を収集し、以下のような回答を返してくれます。
LLMの回答例
以下は、7月22日(昨日)〜23日(本日)に確認された最新ニュース5件の分析です。ITベンチャー企業でのデータ分析・ソフトウェア開発に携わるあなたにとって特に意義のある視点に基づいて整理しました。
---
## 1. Amazon、上海AI研究所を閉鎖へ
**要約**
Amazonが上海にあるAI研究ラボを閉鎖する計画を発表 ([Reuters][1])。世界展開する中で、中国拠点の再編を進めているものと見られる。
**ポジティブ影響**
* グローバルなAI研究戦略が再構築される中で、コスト効率や重点技術選定に関する示唆が得られる。
* 日本・東京を拠点とするあなたの会社でも、特定地域に集中せず戦略的分散化を検討する好機。
**ネガティブ影響**
* 中国市場との協業機会が減少し、グローバルなデータセット・提携機会の喪失につながる可能性。
* 特にAI関連プロジェクトにおいて、中国リソース減少が制約になり得る。
**3ヶ月以内アクション**
* 中国・他アジア拠点との戦略的パートナーシップの棚卸しと評価。
* 自社のリソース配置・技術開発体制の見直し。国内外のバランス再構築を図る研修/会議開催。
**3ヶ月〜1年アクション**
* 特化できる領域(例:自然言語処理、エッジAI)に集中したR\&D戦略の策定。
* アジア域内で信頼できる連携先(台湾、韓国、シンガポール等)との共同開発基盤構築。
(長いので割愛)
---
[1]: https://www.reuters.com/technology/?utm_source=chatgpt.com "Tech News | Today's Latest Technology News | Reuters"
(長いので割愛)
このように、自分用にカスタマイズされた情報が、ほんの数十秒で手に入ります。ちゃんと本当に存在する最新のニュースに対して実行できています。
これを「毎日」「自動で」やってほしい
これだけでも十分に便利ですが、人間(特にエンジニア?)は欲深いもので、毎日自動でこの分析を受け取りたいと思ってしまいました。「便利だけどいっそのこと、勝手にニュースを取得して勝手に分析して毎朝メールで届けてくれたらより便利だな…」と。
「shisapost」を開発
そこで試しに開発してみました。shisapost というサービス名をつけています。示唆(shisa)をポスト(post)する、という意味を込めています。
このサービスは、毎朝、最新ニュースの取得・分析・要約をすべて完了させ、あなたのメールボックスに届ける、というものです。
まさに、先ほどのChatGPTによる分析を自動で行うシステムです。
shisapostのシステムアーキテクチャ
アーキテクチャはAWSのマネージドサービスや既存の便利サービス(Stripeなど)を組み合わせた典型的なサーバーレス構成を採用しています。以下の図が、shisapostのシステムアーキテクチャです。
当初は、コスト効率や運用負荷低減を重視し、できるだけシンプルな構成で構築していこう、という方針で進めましたが、結果的にはなかなか複雑なシステムになってしまいました…。突き詰めればもっとシンプルにできたかもしれませんが、3人で空き時間にちょこちょこ開発するために各要素を分解していたので、これで良いという判断です。
1. ユーザー登録
ユーザー登録は、Googleフォームを使って行います。ユーザーがフォームに入力した情報は、Google Apps Script (GAS) を使って処理され、Stripeの決済リンク付きのメールがユーザーに送信されます。
2. 支払情報登録
ユーザーがStripeの決済リンクからクレジットカードを登録すると、StripeのWebhookがshisapostのLambdaを叩きます。このLambdaは分析用のLambdaを実行します(その際にユーザー情報を渡します。図には表現できていませんがスプレッドシートのユーザー情報を見に行っています)。そして、分析用Lambdaから初回のshisapostレポートが配信される仕組みです。
3. ニュース取得実行
毎朝7時に、EventBridge がトリガーとなり、ニュース取得Lambdaが実行されます。
ニュースの取得方法として、Webクローリングができれば楽でしたが、ニュースサイトのクローリングは多くのリスクと問題があるため、今回は採用しませんでした。例えば以下のような問題があります。
- サイトへの負荷: 無秩序なクローリングは対象サイトのサーバーに過剰な負荷をかけ、業務妨害と見なされる可能性がある
- 規約違反のリスク: 多くのサイトでは、規約でプログラムによる自動収集を禁止しているため、法的なトラブルのリスクがある
- 構造変更への脆弱性: HTMLの構造が変わるたびにクローラーの修正が必要となり、メンテナンスコストが非常に高くなる
shisapostでは、RSSフィードを情報源として採用しています。所定のRSSフィードから最新1日以内のニュース記事を取得し、結果をS3に保存する、という流れです。
なお、RSSフィードの取得にはPythonのfeedparser
ライブラリを使っています。feedparser
はRSS/Atomフィードの解析に非常に便利で、複数のRSSフィードURLをリストとして管理し、ループ処理で並行して情報を取得できます。
4. 分析トリガ実行
毎朝8時に、EventBridge がトリガーとなり、分析トリガLambdaが実行されます。これは、分析を実行するための親Lambdaのようなものです。スプレッドシートからユーザー情報を取得し、Stripeから支払情報を取得します。両者を突き合わせて、支払い済みのユーザーに対して分析Lambdaを実行します。ユーザーごとに個別に分析Lambdaが実行されます。
5. 分析・メール送信実行
分析Lambdaは、トリガ元からユーザー情報を受け取ります。そして、S3から最新のニュース記事を取得し、その両方の情報を元にプロンプトを用意します。最初の方に記載した(ChatGPTに渡した)プロンプトをより詳細かつ構造化した形にしています。
その後は、Gemini APIを呼び出して分析を行い、結果をMarkdown形式で生成します。Geminiのモデルは、Gemini 1.5 Flashを選択しました。Gemini 2.0や2.5 proは、より高精度な分析が可能ですが、出力文字数やレスポンス時間の観点から、現時点ではFlashモデルが最適だという判断です。shisapostはあくまで「毎朝のニュース分析をメールで送ること」を目的としたサービスなので、端的な内容が必要と考え、Flashモデルを選択しています。また、Gemini 2.0や2.5 proは実行に時間がかかり、Lambdaのタイムアウト制限(最大15分)に引っかかることが多々ありました(複数のニュース1つ1つに対して分析を行うため)。
Geminiからは「要約」「ポジティブな影響」「ネガティブな影響」「具体的な示唆・アクション(短期、中期、長期)」の4つのセクションに分かれた情報がMarkdown形式で出力されます。それをjinja2
ライブラリを使ってHTMLに変換し、Amazon SESを使ってユーザーにメール送信するという流れになります。
ぜひ、あなたの「情報収集」を自動化してみてください
以上が、shisapostのシステムアーキテクチャとその実装の概要です。
これらのシステムがガィンガィンと動き、以下のようなメールがユーザーに送信されます。
味気ないテキストだと面白くないので、CSSでスタイルを当てて、見栄えを良くしています。
shisapostは自分たちの情報収集を自動化するために開発したものですが、エンジニアにとっても誰にとっても最新の情報収集が必須のこの時代、同じようなニーズを持つ方々が他にもいると思っています。
定期的な情報収集は大事だと思っているけど、毎日やるのは面倒だし、時間もかかる。そんな悩みを抱えている方にとって、shisapostは非常に便利なツールになると思います。
shisapostが、あなたの毎日のインプットを少しでも楽に、そして価値あるものに変えるお手伝いができれば、開発者としてこれ以上嬉しいことはありません!
以下のリンクから、お試しできるので、ぜひ一度使ってみてください。
(なお、AWSやGemini APIの利用料、ドメイン費用といった実費を賄うために、月額100円を設定していますが、初月は無料で使えるようにしています。コンビニコーヒー1杯分以下の投資で毎日の面倒な情報収集が不要になるなら安いんじゃないか…という想いです。)
今後の展望
shisapostはまだ始まったばかりのサービスです。今後は、以下のような機能拡張を妄想しています。
- 分析分野のカスタマイズ: 「生成AI」「サイバーセキュリティ」「モバイルアプリ開発」など、ユーザーが興味のある分野を選択できるようにする。
- 対象ニュースの拡充: まだカバーできていない分野のニュースも追加し、より多様な情報を提供する。
- レポートの多言語対応: 英語や中国語など
- 配信時間のカスタマイズ: 「朝7時に届けてほしい」「昼休みに読みたい」といったニーズへの対応。
- 1週間のまとめメール配信: 毎日のレポートに加え、週末には7日分の内容をユーザーごとにまとめたレポートを配信する。
Discussion