完成品
完成品: https://paper-summarize.streamlit.app/
読みたい論文のarXiv IDを指定することでGPTがその論文を要約してくれます。
イントロダクション
皆さんは論文を読む際、どのような方法を使っていますか?
私は英語が苦手なので、まずはDeepLを使って和訳してもらい、アブストラクト→結論→その他の順で読んでいます。
この方法では論文の理解には問題ありませんが、1本の論文にかかる時間が多くなり、大量の論文を読む際には利用しづらいという問題があります。
何か良い方法はないかと調べた結果、「落合陽一式論文要約フォーマット」と「ChatGPTを利用した論文要約」が有望に思えました。
そこで、論文を指定するだけで、ChatGPTを使って落合陽一論文要約フォーマットに要約してくれるアプリを開発しました。
これにより、圧倒的な時間短縮が可能です!
アプリの機能と使い方
使い方は非常にシンプルです。
- arXivで読みたい論文を見つける
- arXiv IDを本アプリに張り付ける
- 「要約開始」ボタンを押下する
これだけで、落合陽一フォーマットで論文をまとめてくれます。
技術的な詳細
本アプリは大きく分けて以下の3つの技術で構成されています。
- Streamlit
- OpenAI API
- LangChain
StreamlitはWebアプリケーションのフレームワークです。
フロントエンドもバックエンドもこれ一つで実装できる優れものです。
それなりの規模のアプリの場合はJamstackのほうがいいのですが、小規模アプリであればStreamlitのほうが高速に開発できました。
今回初めてStreamlitを使いましたが、使いやすかったです。
みんな大好きなOpenAI APIはOpenAIの言語モデルを提供するWeb APIです。
本アプリでは、テキストの関連性を測定するためにEmbeddings、質疑応答をするためにgpt-3.5-turboを利用しています。
LangChainはLLMを利用したアプリの構築をサポートしてくれるライブラリです。
本アプリのほとんどの処理はLangChainにやってもらっています。
論文データのダウンロード、論文のベクトル化、要約の生成はLangChainが提供している機能を使っています。
課題と今後の展望
- プロンプトの改善
- 現状は適当に考えたプロンプトのため、改善することでもっといい感じに要約してくれそう。
- 要約結果の一覧化
- 当初は要約されたものを全て保存し、自由に検索できるようにするアプリを構想していた。
- ただ、論文を要約し、それを公開するのはどうやら著作権的に問題があることが分かったため、今回は私的利用になるようにその場限りの要約になるようにしている。
- なんとかして、一覧化をしたい
- GPT4の利用
- 精度は上がるとは思うが、金。。。
結論
満足のいくアプリが開発できた。
Streamlit結構気に入った。
7/9追記
- プロンプトを更新しました。
- 深津式プロンプトをベースにプロンプトを構築しなおしました。
- 精度は上がった気がします。
- 出力の文字数を制限する命令はしているのですが、あんまり守られず、長い出力が増えてしまいました。
- APIキーを更新しました。
- なぜか使えなくなっていたので、新しいキーに更新しました。