LoginSignup
2
1
生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

[Dify]ChatFlowでIterationノードを使って論文翻訳作成してみた

Last updated at Posted at 2024-06-12

はじめに

論文読む時には何だかんだ翻訳が欲しくなりますよね。翻訳と要約がセットでいい感じに論文が読めるようになると思います。
今回はDifyで要約を作るためのChatFlowを作成したいと思います。

使用しているバージョンは以下になります。
Dify:0.6.9

全体像

まずは全体像です。

  1. ざっくりURLから論文の内容をJinaReaderで取得します.
  2. そしてLLMの入力トークンに収まるように文章を分割します。
  3. 分割した内容をLLMに翻訳させる処理をIterationで回します。
  4. 最後に文章をくっつけて翻訳文の完成です。
  5. JinaReaderで取得している論文の内容をLLMで要約させて完成です。

文章マージのノードを入れていますが、今回は入れているだけで何かに使っているわけではありません。誰かが文章マージどうするんだ?ってなった時のための備忘録で今回は入れています。

image.png

作成はChatFlowなので気をつけてください!
スクリーンショット 2024-06-12 23.57.47.png

では各々のノードでどんな入力、出力を定義しているかみていきましょう。

開始ノード

開始ノードでは入力を定義しています。JinaReaderに入れるためのURLを入力にしましょう。
image.png

JinaReaderノード

開始ノードで入力したURLをJinaReaderノードの入力変数にしましょう。
image.png

文章分割ノード

JinaReaderノードの出力である論文の内容を分割していきましょう。今回は5000字ごとに区切っていきます。
Iterationノードは入力としてArray[String]しか受け取らないので、気をつけて出力を定義しましょう。

image.png

コードはこちら


def main(sentence: str) -> dict:
    chunk_size = 5000
    chunks = []
    start = 0

    while start < len(sentence):
        end = start + chunk_size
        chunk = sentence[start:end]

        chunks.append(chunk)
        start = end

    return {
        "result": chunks,
    }

イテレーションノード

再度言いますが、Iterationノードは入力としてArray[String]しか受け取らないです。
ちゃんと前のノードで出力が定義できていなかったら、Iterationノードの入力変数に出てこないので注意しましょう。

image.png

翻訳用LLMノード

Iterationノードでは翻訳LLMを実行します。IterationのItemを入力にして翻訳させてください。プロンプトも載せておきますが適当ですのでちゃんと自分で考えてください。

プロンプト 次の内容を日本語に翻訳して。翻訳する時には以下の点に注意して下さい。 - その時に無駄な文字、タイトル、図表のキャプションは主力しないで無視すること - 引用文献一覧に関しては翻訳しないこと {{#context#}}

image.png

続いて翻訳するたびに画面に出力したいのでここで一旦出力のノードを作成。
image.png

文章マージノード

Iterationノードの出力もまた配列なので、マージしてあげないといけません。
今回はこのノードの出力はどこかに使うわけではありませんが、使いたい人もいると思うので載せておきます。
image.png

コードはこちら



def main(arg1: list[str]) -> dict:
    concatenated_result = ''.join(arg1)  # arg1のすべての要素を連結
    return {
        "result": concatenated_result,
    }


要約用LLMノード

最後に要約も出してあげましょう。私はやはり要約欲しいです。
任意で入れてあげてください。

プロンプト 以下の内容を要約して

{{#context#}}

image.png
出力ノードを最後に追加して終了!!!
image.png

出力結果

一部分スクショ載せますが、めっちゃいい感じです。タイトルまで翻訳されたのは変なのでプロンプトで制御するといいと思います。

スクリーンショット 2024-06-12 18.22.57.png

最後に

今回は翻訳だけですが、チャットの内容によって翻訳だったり、詳しい解説をするようにさせたり、色々とカスタマイズすると便利そうです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1