Morikatron Engineer Blog

モリカトロン開発者ブログ

Chat-GPTによる論文要約Slack Botの作成

こんにちは。モリカトロン AI エンジニアの山田です。
今回Chat-GPTで論文を要約するSlack Botを作成し、1ヶ月ほど運用したところ社内で好評だったので紹介をします。

1. はじめに

1.1 背景

AI 分野の研究が急速に進化しており、その論文を読んで理解することが日々の業務に欠かせないエンジニアが増えています。しかし、多くの論文を効率的に読み解くのは容易ではありません。
そこで、Chat-GPT を用いた論文要約機能を開発し、Slack 上で手軽に利用できるようにしました。

1.2 Chat-GPT による論文要約機能の概要

このブログでは、Chat-GPT を用いて開発した論文要約 Slack アプリの概要と主な機能を紹介します。また、実際に使用できるように実行方法についても言及します。

2. 主な機能

以下の 5 つの機能を提供しています。

2.1 自動投稿

毎日 8 時ごろに最近の AI 分野の要約を 3 件投稿します。投稿する論文は新しいものの中から被引用数が高い論文を選んでいます。
この機能によりチームメンバーが研究の最新動向をキャッチアップできるようになります。

2.2 URLから論文の要約

ボットが arXiv の URL を受け取ると、その論文の要約を出力します。
興味深い論文が見つかったときに、URLをコピペすればすぐに要約を確認できます。

2.3 クエリによる論文検索 & 要約

ボットが「文」を受け取ると、その文からarXivの検索用にクエリを作成します。このクエリ作成もChat-GPTに任せています。
これにより特定のキーワードやトピックに関連する論文を探し、要約を取得することができます。

2.4 要約先言語の多言語対応

2.2や2.3の要約先の言語をユーザーそれぞれで設定できます。
例えば英語のままで要約して欲しい場合は英語に、母国語が中国語なら中国語に、という設定が出来ます。

2.5 コメント

文頭にシャープ(#)がある文をボットが受け取った場合は、それを無視します。
要約に対するコメントや意見を付け加えたいときにこの機能が利用できます。

3. 実行方法

ここでは、実際の実行方法を載せていきます。
コード全文は下記リンク先に置いてあるので良ければご覧ください。

github.com

3.1 SlackのSIGNING_SECRET, BOT_TOKEN, CHANNEL_TOKENの設定

Slackのアプリケーションの作成方法はGeneralTalker APIを使ったSlack botの作り方 - Morikatron Engineer Blogをご覧ください。
少し古い記事なのでSlack側の多少の変更はありますが、基本的には上記ブログの方法で可能だと思います。
またManifestでSlackアプリを作成することも出来ます。 モリカトロンで作成した今回のアプリのManifestはこちらになりますので、参考にして頂ければと思います。

display_information:
  name: arxiv_summary
  description: bot for summarize arxiv paper
  background_color: "#084d1d"
features:
  bot_user:
    display_name: arxiv_summary
    always_online: false
oauth_config:
  scopes:
    bot:
      - channels:history
      - chat:write
      - chat:write.customize
      - im:history
      - im:read
      - im:write
      - users:read
      - files:read
      - files:write
settings:
  event_subscriptions:
    request_url: http://hogehoge.ngrok-free.app/slack/events
    bot_events:
      - message.channels
      - message.im
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false

取得したトークン等を設定していきます。(slack_bot.py 34行目〜36行目▼)

SLACK_SIGNING_SECRET = "YOUR_SLACK_SIGNING_SECRET"
SLACK_BOT_TOKEN = "YOUR_SLACK_BOT_TOKEN"
SLACK_CHANNEL = "YOUR_SLACK_CHANNEL"

3.2 OpenAI APIキーの設定

まずOpenAIのAPIキーを取得しましょう。こちらは様々なブログで解説されているので、割愛します。
取得したAPIキーを以下に設定してください。(slack_bot.py 40行目▼)

OPENAI_API_KEY = "YOUR_OPENAI_API_KEY"

3.3 ngrokの起動

まだngrokのアカウントを作成していない方はこちらを参考にして作成してください。
https://parashuto.com/rriver/tools/secure-tunneling-service-ngrok

ngrokを起動します。

$ ngrok http 3000

http://hogehoge.ngrok-free.appのようなURLが表示されるのでコピーしてSlackのEventSubscriptionsページのRequest URLのところにペーストしてください。
その際、後ろに/slack/eventsを付けてhttp://hogehoge.ngrok-free.app/slack/eventsとする必要があります。
またhttpsだと上手く動作しないため、httpの方をお使いください。

3.4 slack_bot.pyの実行

slack_bot.pyを実行してください。
3.3で説明したngrokを起動するのとは別のターミナルで実行してください。

$ slack_bot.py

以上で論文要約Slack Botが起動するはずです。

4. まとめ

4.1 本機能の利点と応用

このアプリケーションは、エンジニアが論文を効率的に読み解くことを支援し、チーム内での情報共有を促進します。また、論文要約機能は、他の分野や用途にも応用できます。

4.2 今後の展望

今後は、より多様なデータソースからの論文取得や、要約の精度向上、カスタマイズ可能な要約の長さやスタイルなど、機能の拡張を検討していきます。

また現在はAbstractを要約しているのみとなりますが、論文の本文を利用する方法も模索しようと考えています。

このブログでは、Chat-GPT を用いた論文要約機能を備えた Slack アプリの開発について説明しました。このアプリは、AI 分野の研究動向を効率的にキャッチアップし、チーム内で情報を共有するための便利なツールとなります。

もし他にも機能のアイデアなどありましたらお寄せ頂ければ嬉しいです。

5. 番外

5.1 Chat-GPTのブログへの利用

実は上の文章の7割ほどはChat-GPTに書いてもらったものです。
もちろん細かい部分は変えていますが、一から文章を考えるよりは遥かに楽に出来ました。

5.2 ブログ用に与えたプロンプト

今回のブログを書くにあたって、Chat-GPTに与えたプロンプトとしては以下のものになります。

「Chat-GPT による論文要約 Slack Botの作成」というタイトルでエンジニア向けのブログを書きます。  
作成した機能は主に  
• 毎日 8 時ごろに最近の AI 分野の要約を 3 件投稿  
• arXiv の URL を入力すると、その論文の要約を出力  
• 入力文字列によるクエリの作成 → クエリによる論文検索 & 要約  
• 要約先の言語の多言語対応  
• コメント機能( # を文頭につけることでメモ書きができる)  
の5つです。  

ブログの文章を考えてください。

6. 参考

今回このブログを書くにあたって、以下を参考にさせていただきました。ありがとうございました。