[Dify]論文PDFのURLを入力すると要約してくれるワークフローを作成する。


## はじめに
Difyで論文PDFを要約するワークフローを作成しようと思います。
Difyを一度でも触ったことがある人に向けて書きますので、特に前置きなどなく淡々と説明だけしていこうと思います。

## ワークフローを作成する。
ワークフローを作成すると以下のようにノードが作成され、次のノードの選択を迫られる。
この時にJinaReaderを選択する。
JinaReaderを使うとURLの内容から中身のテキストを取得できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/5ceef28e-26bd-a1bb-f607-2634d7f8b6f8.png)

## 開始での入力フィールドを用意

JinaReaderが設定できたら、入力フィールドを用意する。変数名は**URL**を入力するとラベル名などは自動で埋まる。
最大長はマックスである256にしておこう。URLは意外と長いものが多い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/db4d9c44-e732-f8ef-e114-81dde2933633.png)


## JinaReaderが受け入れる入力変数を設定

JinaReaderが受け入れる入力変数を設定する。これがないとJinaReaderが入力で何を受け取るか理解してくれない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/d54ccf10-2d92-c84d-c935-d3a4fcef4669.png)

入力変数の設定ができたら、ノードの右上にある＋ボタンを押そう。

## LLMを設定する。

JinaReaderで解釈した内容をLLMで要約させるためにLLMを設定しよう。
今回のモデルはGemini1.5 Flashにする。なんでもいいが速いのでこれにしている。実際に私が使用しているのはGPT4-oだ。
コンテキストを設定する。JinaReaderの出力をコンテキストに設定しよう。
最後にプロンプトを設定しよう。私は落合陽一先生の論文要約フォーマットが好きなのでそれを用意した。
<details><summary>プロンプト</summary>
Summarize the following research paper. 
- What is it about?
Provide an overview of the paper and its purpose.

- How does it improve upon prior research?
Explain how this research enhances or improves upon previous studies.
- What is the core technology or method?
Describe the main technology or method introduced or improved in the paper.
- How was its effectiveness tested?
Detail the methods used to test the effectiveness of the new or improved technology/method.
- Are there any points of discussion?
Highlight any discussion points, such as limitations, implications, or controversies.
-What is the next paper to read?
Suggest the next paper to read from the cited references, providing the citation number and paper title.


Please make it Japanese.

{{#context#}}

</details>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/dd4764bb-2c2b-2f20-7ee3-faa20bcb80d9.png)



## ワークフローの終了を定義する。

最後にワークフローの終了を定義しよう。特に説明することはないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/d3523f0d-2478-118e-a9cb-32ddd2976407.png)


## 出力結果

みんなご存知　Attention Is All You Need　を要約してみましょう。
https://arxiv.org/pdf/1706.03762

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376115/7af4658a-0feb-5373-1896-6a63461241a2.png)

### 結果

> アテンション・イズ・オール・ユー・ニード：論文サマリー
> 概要
> この論文は、Transformerと呼ばれる新しいニューラルネットワークアーキテクチャを提案し、従来のリカレントニュ> ーラルネットワーク（RNN）や畳み込みニューラルネットワーク（CNN）に代わる、アテンションメカニズムのみを用いた> シーケンス変換モデルを提案しています。論文の目的は、より並列化可能で、トレーニング時間が大幅に短縮され> た、高品質なシーケンス変換モデルを開発することです。
> 
> 従来研究の改善点
> Transformerは、RNNやCNNに比べて、並列化が容易でトレーニング時間が短縮されるという利点を持ちます。ま> た、機械翻訳タスクにおいて、従来の最先端モデルを凌駕する性能を達成しています。
> 
> 論文の中心技術
> Transformerの中心技術は、マルチヘッドアテンションメカニズムです。これは、入力シーケンス内の任意の2つ> の位置間の依存関係を、一定の計算量で学習することを可能にするメカニズムです。また、位置エンコーディングを> 用いることで、RNNやCNNのようにリカレントな計算を行うことなく、シーケンス内の位置情報をモデルに提供します。
> 
> 効果検証方法
> 論文では、機械翻訳タスク（WMT 2014 英語-ドイツ語、WMT 2014 英語-フランス語）と英語の句構造解析タスクで、Transformerの性能を検証しています。機械翻訳タスクでは、BLEUスコアを用いて翻訳品質を評価し、句構造解析タスクでは、F1スコアを用いて解析精度を評価しています。
> 
> 議論点
論文では、Transformerの性能に影響を与える様々な要素について検討しています。例えば、アテンションヘッドの数、アテンションキーのサイズ、ドロップアウト率、位置エンコーディングの種類などです。また、Transformerが画像や音声などのテキスト以外のモダリティにも適用できる可能性について言及しています。
> 
> 次に読むべき論文
> 論文の参考文献から、次の論文を読むことをお勧めします。
> 
> [18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Ko-ray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2 , 2017.
この論文は、ByteNetという、線形時間で動作するニューラル機械翻訳モデルを提案しています。Transformerと同様に、RNNやCNNに比べて並列化が容易という利点があります。Transformerの性能と比較することで、アテンションメカニズムの有効性をより深く理解することができます。

## 最後に

Difyは便利なんですが、あたらしくまだあんまり情報がないのでこれからどんどん投稿できればと思います。
Xやってるので気になる方はフォローお願いします。
https://x.com/hudebakonosoto