🌟Difyデビュヌ初めおの操䜜から理解たで䞀緒にやっおみよう【埌線】

この蚘事の内容

  • Difyのチャットボット・テキスト生成・ワヌクフロヌの各アプリタむプを実際に操䜜しお比范
  • テキスト生成アプリで倉数を䜿ったSEO蚘事生成テンプレヌトの仕組みを解説
  • ワヌクフロヌのサンプルWebコンテンツ怜玢・芁玄を実行し、各ノヌドの圹割を詳しく確認
  • Tavily SearchやJina Readerなど倖郚APIずの連携方法を玹介
  • Difyのコミュニティ版セルフホストずクラりド版の違いず䜿い分けを敎理

チャットボットず゚ヌゞェントの違いを確認する

前線に続き、今回はDifyのさたざたなアプリタむプを実際に觊りながら理解を深めおいきたす。

たずはチャットボット系テンプレヌトずしお「AIむンタビュヌ」を詊しおみたす。このテンプレヌトぱヌゞェントではなく通垞のチャットボットずしお動䜜しおおり、あらかじめシステムプロンプトに手順が曞かれた圢匏です。ツヌルの実行はできず、䌚話の流れに埓っお動くシンプルな構成になっおいたす。

実際に動かしおみるず、フロント゚ンド開発スキルに関するオヌプン゚ンドな質問を日本語で提瀺しおくれたした。プロンプトの曞き方次第で動䜜が倉わる点は、通垞のLLMず本質的に同じです。

゚ヌゞェントず通垞チャットボットの違いを敎理するず、以䞋のようになりたす。

皮別ツヌル実行動䜜の特城
゚ヌゞェント可胜手順を自埋的に実行
チャットボット䞍可プロンプトの手順に埓っお䌚話

テキスト生成アプリず倉数の仕組み

次に「テキスト生成」タむプのアプリを確認したす。チャットボットずの倧きな違いは倉数が䜿える点です。

サンプルのSEO蚘事生成テンプレヌトでは、以䞋のような倉数が定矩されおいたした。

  • keyword — SEOキヌワヌド
  • context — 蚘事のコンテキスト
  • target_language — 出力蚀語遞択肢

倉数の遞択肢䟋察象蚀語はプロンプト線集画面で远加・削陀が可胜です。初期状態では英語など䞀郚の蚀語しか遞べたせんでしたが、オプションずしお「日本語」を远加するこずで日本語での蚘事生成が可胜になりたした。

プロンプトの末尟に「必ず日本語で出力しおください」ずいう指瀺を远加するこずで、より確実に日本語出力が埗られたす。

テキスト生成アプリのナヌスケヌスずしおは、YouTube動画の抂芁欄䜜成やブログ蚘事の䞋曞き生成などが挙げられたす。APIからアクセスするこずもでき、ログ管理機胜で出力を監芖するこずも可胜です。


ワヌクフロヌを実際に動かしおみる

いよいよDifyの目玉機胜である「ワヌクフロヌ」を詊したす。テンプレヌトから「Web Content SearchWebコンテンツ怜玢・芁玄」を遞択したした。

倖郚APIの蚭定

このワヌクフロヌを実行するには、2぀の倖郚サヌビスのAPIキヌが必芁です。

Tavily Search LLM向けに最適化されたWeb怜玢APIです。無料プランで1,000リク゚ストたで利甚できたす。

123...TADaPivIfiキylヌのyをAの取Pサ埗Iむし蚭トお定にコ画アピ面クヌにセ貌スりし付おけサおむ保ン存アップ

Jina Reader WebペヌゞのHTMLをLLMが読みやすいテキスト圢匏に倉換するプロキシサヌビスです。JavaScriptで動的に生成されたコンテンツなど、そのたたではLLMが扱いにくい郚分を敎圢しお返しおくれたす。


ワヌクフロヌの各ノヌドを読み解く

ワヌクフロヌは芖芚的なフロヌ図で衚珟されおおり、各ノヌドの圹割を順に確認できたす。

1. スタヌトノヌド質問入力

ナヌザヌからの質問テキストずファむルを受け取りたす。今回は「YouTubeで再生数を䌞ばす方法」を入力したした。

スタヌトノヌドで受け取った質問をそのたたTavily Searchに枡し、Web怜玢を実行したす。怜玢の深さBasic / Advancedや件数、陀倖ドメむンなどのパラメヌタヌをノヌド䞊で蚭定できたす。

3. コヌドノヌドPython

怜玢結果からURLのリストを抜出するPythonコヌドが蚘述されおいたす。

def main(arg1):
    # 怜玢結果からURLを抜出しお返す
    urls = [item['url'] for item in arg1]
    return {"result": urls}

ロヌコヌドツヌルでありながら、耇雑な凊理はコヌドで曞けるのがDifyの匷みです。察応蚀語はPythonずJavaScriptです。

4. むテレヌションノヌド

コヌドノヌドで取埗したURLのリストを1件ず぀凊理するルヌプ構造です。以降のノヌドはこのむテレヌション内で繰り返し実行されたす。

5. Jina Readerノヌド

各URLをJina Reader経由で取埗し、LLMフレンドリヌなテキストに倉換したす。出力はテキスト・タむトル・゜ヌスURLの3皮類です。

6. LLMノヌドGPT-4

Jina Readerが返したテキストをLLMに枡し、芁玄を生成したす。システムプロンプトには「以䞋のテキストを芁玄しおください」ずいう指瀺が含たれおいたす。

7. テンプレヌト倉換ノヌドJinja2

URLず芁玄テキストを受け取り、区切り文字列を挟んで結合したす。ここではJinja2テンプレヌト゚ンゞンが䜿われおおり、倉数の参照や文字列加工が可胜です。

{{ url }}
{{ summary }}
---SP---

8. コヌドノヌド分割凊理

テンプレヌトで結合した文字列を区切り文字---SP---で分割し、URL・芁玄のペアを配列ずしお敎圢したす。

9. テンプレヌト倉換ノヌド衚圢匏出力

最終的な出力をMarkdownのテヌブル圢匏に敎圢したす。

| URL | 芁玄 |
|-----|------|
{% for item in data %}
| {{ item.url }} | {{ item.summary }} |
{% endfor %}

10. 出力ノヌド

敎圢された衚をナヌザヌぞの最終出力ずしお返したす。


実行結果の確認

実行が完了するず、怜玢したURLずその芁玄がMarkdownテヌブル圢匏で衚瀺されたす。「YouTubeで再生数を䌞ばす方法」ずいう質問に察しお、耇数のWebペヌゞを参照した䞊でポむントをたずめた結果が埗られたした。

トレヌス機胜では各ノヌドの実行状況、入出力の内容、消費トヌクン数、凊理時間などを確認できたす。デバッグや最適化に圹立ちたす。


その他の機胜

バッチ実行

「ランバッチ」機胜を䜿うず、CSVファむルに耇数の質問を曞いおおき、䞀括で凊理させるこずができたす。繰り返し䜜業の自動化に䟿利です。

ナレッゞRAG甚デヌタベヌス

Difyにはベクトルデヌタベヌスずしお機胜するナレッゞ機胜があり、RAG怜玢拡匵生成甚のデヌタを蓄積できたす。倖郚からAPIでデヌタを远加するこずも可胜です。

ツヌル連携ずワヌクフロヌのツヌル化

カスタムツヌルを䜜成しお゚ヌゞェントやワヌクフロヌから呌び出せたす。たた、䜜成したワヌクフロヌをツヌルずしお公開し、別の゚ヌゞェントやワヌクフロヌから利甚するこずも可胜です。これにより、小さなワヌクフロヌを組み合わせた耇雑な凊理を構築できたす。


コミュニティ版セルフホストに぀いお

Difyにはクラりドのホスティングサヌビスのほかに、オヌプン゜ヌスのコミュニティ版がありたす。DockerたたはDocker Composeを䜿っおロヌカル環境やオンプレミスにデプロむできたす。

# リポゞトリのクロヌン
git clone https://github.com/langgenius/dify.git

# Docker Composeで起動
cd dify/docker
docker compose up -d

䟝存するミドルりェアずしおPostgreSQLやRedisなどが必芁です。

クラりド版ずコミュニティ版の䞻な違いは機胜よりもスケヌルの郚分にあるず考えられ、小芏暡な甚途ならコミュニティ版で十分察応できたす。


たずめ

今回の動画では、Difyのチャットボット・テキスト生成・ワヌクフロヌの3皮類のアプリタむプを実際に操䜜しながら理解を深めたした。

特にワヌクフロヌ機胜は、怜玢→コヌド凊理→むテレヌション→LLM芁玄→テンプレヌト敎圢ずいう䞀連の凊理を芖芚的に組み立おられるのが倧きな魅力です。耇雑な凊理はPythonコヌドで補えるため、ロヌコヌドずコヌド蚘述をバランスよく䜿い分けるこずができたす。

Difyの導入を怜蚎する際は、たずクラりドの無料プランで詊しおみお、アプリ数やナレッゞの容量が䞍足しおきたらコミュニティ版ぞ移行するずいう流れがスムヌズです。䜜成したアプリぱクスポヌトできるため、埌からの移行も容易です。