toyoshiの日記

株式会社トクイテンを有名にするための日記です

AIにニュースの収集を任せている方法(GPT-4からSlack投稿)

キーワードベースで情報収集をしているという下記の記事を読みました。私も似たようなことをしているのですがキーワードは使わない方法でニュースの収集をしていて、そのほうがLLMを活用できていると思うのでその方法を紹介します。

forest.watch.impress.co.jp

キーワードではなく自分の目的や関心を伝える

以前私が手動でやっていたのはRSSリーダーにサイトを登録して、記事のタイトルと概要を読んで気になる記事を開いて読むということでした。こういうときに人間はキーワード検索をしていません。何をしているかというと自分の目的や関心があって、それに関連する記事をピックアップするということです。それと同じようなことをさせようというのが今回紹介する方法です。

ポイントは今回の場合は私の所属する会社について情報をプロンプトで与え、それに関連するニュースが何かをLLMに考えさせることです。

今回のプロンプト

あなたはトクイテン社の情報収集係です。トクイテン社はロボットとAIで自動化をしながらミニトマト有機栽培をしている日本のスタートアップです。次の記事のリストから24時間以内に作成されており、かつトクイテン社に関係ありそうなニュースを選んで、そのURLのリストを作成してください。

このように「XXのキーワードを抜粋して」と指示しないことで、プロンプト中のキーワード+それに関するニュースということで人間がピックアップするのと近いことができます。

なお、最初は会社のミッション・ビジョンを入力していましたが話題が広がりすぎたため変更しました。

以下にコードの抜粋を掲載します。

# Define RSS feed URL
rss_urls = [
        "https://www.hortidaily.com/rss.xml/",
        "https://www.freshplaza.com/asia/rss.xml/",
        ]

for rss_url in rss_urls:
    # Parse RSS feed
    feed = myclass.parse(rss_url) #
    articles_str = 必要な情報だけにする関数(feed) #ここでfeedがJSONになってるので[件名,URL,概要]だけを取り出してリストを文字列に変換します。APIに文字数制限がなければRSSを単にテキストとして全文渡すのですが・・・

    prompt = "あなたはトクイテン社の情報収集係です。トクイテン社はロボットとAIで自動化をしながらミニトマトの有機栽培をしている日本のスタートアップです。次の記事のリストから24時間以内に作成されており、かつトクイテン社に関係ありそうなニュースを選んで、そのURLのリストを作成してください。---- \n" + articles_str + "\n----\n"
    message = openai_api(prompt)
    urls = 文字列からURLだけを正規表現で取得してリストにする関数(message)

    #抽出したURLを順番に処理する。
    for url in urls:
        text = extract_text_from_url(url) #追記:この関数で記事本文を取得しています。
        prompt = "次の記事を読み込んで要約を日本語で作ってください。また最後にトクイテン社にこのニュースがどのように役に立つかコメント(AIより一言)ください。次の書式に従ってください。\n\n 日本語の記事名 \n 要約 \n AIより一言---- \n" + text + "\n----\n"
        message = openai_api(prompt)

        #Slackに投稿する
        post_to_slack('#agtech-news', text)

このコードを1日1回動作するように設定をして、会社のSlackの #agtech-news というニュース用のチャンネルに投稿しています。

工夫しているのはニュースの取捨選択には1回のAPIコールで済ませていることです。正確にやるなら1URLずつ渡すのがいいのでしょうが時間がかかるしお金もかかるのでこのような方式にしています。URLのリストは文字列として返してもらい正規表現で取り出しています。この辺りJSONで返すAPIを使うと本当はいいのでしょう。

出力例

プロンプトには「トマト」のキーワードがあるので当然トマトの記事はとってきてくれます

トマトは直接関係ないが、施設園芸(ハウス栽培)で間接的に関係のあるニュース

プロンプトにはないが最新の農業についての情報をとってきてくれている。AIからARへの連想でしょうか。

プロンプトに入れている「トマト」などのキーワード以外にも、有機栽培などのキーワードから持続可能な農業についてのニュースをピックアップしてくれてることがわかります。

いいところ

  • キーワードより守備範囲が広い
  • デメリットでもあるが最適化みたいなことはされないのでニュースが偏っていかない。AIが「いいね」や閲覧履歴に基づいて最適化し始めると同じようなニュースばかり見ることになる
  • チューニングが自然言語でできる
  • 英語だけでなく他の言語の記事もとにかく日本語にしてくれる

まとめ

以前はRSSリーダーで読んで、気になる記事を社内に共有という感じだったのですがそれが任せられるようになりました。最初は拾ってくるニュースの範囲が広かったりしたので気になるニュースがあれば除外するようにプロンプトを調整していっています。

ニュースの取りこぼしなどもあると思いますが「まあいっか」と思えるかどうかがAIに仕事を任せるポイントだと思います。

最初は私もキーワードで命令をしていました