Dify
日本語
日本語
  • 入門
    • Difyへようこそ
      • 特性と技術仕様
      • モデルプロバイダーリスト
    • クラウドサービス
    • コミュニティ版
      • Docker Compose デプロイ
      • ローカルソースコードで起動
      • aaPanelでのデプロイ方法
      • フロントエンドDockerコンテナを単独起動
      • 環境変数の説明
      • よくある質問
    • Dify Premium
    • Dify 教育版
  • マニュアル
    • モデル
      • 新しいプロバイダーの追加
      • 事前定義されたモデルの追加
      • カスタムモデルの追加
      • インタフェース
      • 配置ルール
      • 負荷分散
    • アプリ・オーケストレーション
      • アプリの作成
      • チャットボット
        • 複数モデルのデバッグ
      • エージェント
      • ツールキット
        • コンテンツモデレーション
    • ワークフロー
      • キーコンセプト
      • 変数
      • ノードの説明
        • 開始
        • 終了
        • 回答
        • LLM
        • 知識検索
        • 質問分類
        • 条件分岐
        • コード実行
        • テンプレート
        • テキスト抽出ツール
        • リスト処理
        • 変数集約
        • 変数代入
        • 反復処理(イテレーション)
        • パラメータ抽出
        • HTTPリクエスト
        • エージェント
        • ツール
        • 繰り返し処理(ループ)
      • ショートカットキー
      • オーケストレートノード
      • ファイルアップロード
      • エラー処理
        • 事前定義されたエラー処理ロジック
        • エラータイプの概要
      • 追加機能
      • プレビューとデバッグ
        • プレビューと実行
        • ステップ実行
        • 対話/実行ログ
        • チェックリスト
        • 実行履歴
      • アプリケーション公開
      • JSON形式での出力
      • 変更通知:画像アップロード機能がファイルアップロード機能に統合されました
    • ナレッジベース
      • ナレッジベース作成
        • 1. オンラインデータソースの活用
          • 1.1 Notion からデータをインポート
          • 1.2 Webサイトからデータをインポート
        • 2. チャンクモードの指定
        • 3. インデックス方式と検索オプションの設定
      • ナレッジベースの管理
        • ナレッジベース内ドキュメントの管理
        • APIを活用したナレッジベースのメンテナンス
      • メタデータ
      • アプリ内でのナレッジベース統合
      • リコールテスト/引用帰属
      • ナレッジベースの要求頻度制限
      • 外部ナレッジベースとの接続
      • 外部ナレッジベースAPI
    • ツール
      • クイック統合ツール
      • 高度統合ツール
      • ツールの設定
        • Google
        • Bing
        • SearchApi
        • StableDiffusion
        • Perplexity Search
        • AlphaVantage 株式分析
        • Dall-e
        • Youtube
        • Serper
        • SearXNG
        • SiliconFlow(Flux AI サポート)
        • ComfyUI
    • アプリ公開
      • シングルページWebアプリとして公開
        • Web アプリの設定
        • テキスト生成アプリ
        • 対話型アプリ
      • Webサイトへの埋め込み
      • API基づく開発
      • フロントエンドテンプレートに基づいた再開発
    • アノテーション
      • ログとアノテーション
      • アノテーション返信
    • モニタリング
      • データ分析
      • 外部Opsツール統合
        • LangSmithを統合
        • LangFuseを統合
        • Opikを統合
    • 拡張
      • API 拡張
        • Cloudflare Workers を使用した API ツールのデプロイ
        • コンテンツモデレーション
      • コード拡張
        • 外部データツール
        • コンテンツモデレーション
    • コラボレーション
      • 発見
      • メンバーの招待と管理
    • 管理
      • アプリの管理
      • チームメンバーの管理
      • 個人アカウントの管理
      • サブスクリプション管理
      • バージョン管理
  • ハンドオン工房
    • 初級編
      • ゼロからAI画像生成アプリの構築方法
      • AIエージェントの実践:個人のオンライン旅行アシスタントの構築方法
    • 中級編
      • チャットストリームエージェントを使用した Twitter アカウントの分析方法
      • ファイルアップロードを使用した記事理解アシスタントの構築方法
  • コミュニティ
    • サポートの求め
    • 貢献者ガイド
    • ドキュメントへの貢献
  • プラグイン
    • 機能紹介
    • クイックスタート
      • プラグインのインストールと活用
      • プラグイン開発の入門
        • 開発環境のセットアップ
        • ツール型プラグイン
        • モデル型プラグイン
          • モデルプロバイダーの構築
          • 定義済みモデルの組み込み
          • カスタムモデルの組み込み
        • エージェント戦略プラグイン
        • 拡張機能型プラグイン
        • バンドル
      • プラグインのデバッグ方法
    • プラグイン管理方法
    • スキーマ仕様
      • Manifest(マニフェスト)
      • Endpoint(エンドポイント)
      • Tool(ツール)
      • Agent(エージェント)
      • Model(モデル)
        • モデル設計規則
        • モデルスキーマ
      • 一般的な標準仕様
      • 永続化されたストレージ
      • Difyサービスの逆呼び出し
        • アプリ
        • モデル
        • ツール
        • ノード
    • ベストプラクティス
      • Slack Bot プラグインの開発
      • Dify MCP プラグインガイド:ワンクリックで Zapier に接続してメールを自動送信
    • プラグインの公開
      • プラグインの自動公開
      • Difyマーケットプレイスへの公開
        • プラグイン開発者ガイドライン
        • プラグインのプライバシー保護に関するガイドライン
      • 個人GitHubリポジトリへの公開
      • ローカルでの公開と共有
      • 第三者署名検証のためにプラグインに署名する
    • よくある質問
  • 開発
    • バックエンド
      • DifySandbox
        • 貢献ガイド
    • モデルの統合
      • Hugging Faceのオープンソースモデルを統合
      • Replicateのオープンソースモデルを統合
      • Xinferenceでデプロイしたローカルモデルを統合
      • OpenLLMでデプロイしたローカルモデルを統合
      • LocalAIでデプロイしたローカルモデルを統合
      • Ollamaでデプロイしたローカルモデルを統合
      • LiteLLM Proxyを使用してモデルを統合する
      • GPUStackとの統合によるローカルモデルのデプロイ
      • AWS Bedrock上のモデル(DeepSeek)の接続
    • 移行
      • コミュニティ版を v1.0.0 に移行する
  • もっと読む
    • 活用事例
      • DeepSeek & Dify連携ガイド:多段階推論を活用したAIアプリケーション構築
      • Ollama + DeepSeek + Dify のプライベートデプロイ:あなた自身のAIアシスタントの構築方法
      • あなた専用のQAチャットボットのトレーニング方法
      • コードなしでMidjourney プロンプトボットを作成する方法
      • Notion AI アシスタントを構築する
      • 数分で業務データを持つ公式サイトのAIチャットボットを作成する方法
      • DifyチャットボットをWixサイトに統合する方法
      • AWS Bedrockのナレッジベースに統合する方法
      • Difyで大規模言語モデルの「競技場」を体験する方法:DeepSeek R1 VS o1 を例に
      • Difyスケジューラーの構築
      • DifyクラウドでAI Thesis Slack Botを構築
    • さらに読む
      • LLMOpsとは何ですか?
      • 配列変数とは何ですか?
      • 検索拡張生成(RAG)
        • ハイブリッド検索
        • Rerank
        • リトリーバルモード
      • プロンプトエンジニアリング
      • DifyでJSONスキーマ出力を使用する方法
    • FAQ
      • ローカルデプロイに関するFAQ
      • LLM設定と使用に関するFAQ
      • プラグイン
  • ポリシー
    • オープンソースライセンス
    • ユーザ規約
      • 利用規約
      • プライバシーポリシー
      • 合規性レポートの入手方法
Powered by GitBook
On this page
  • 定義
  • シナリオ
  • 設定方法
  • 特殊変数の説明
  • 高級機能
  • 活用事例
  1. マニュアル
  2. ワークフロー
  3. ノードの説明

LLM

Previous回答Next知識検索

Last updated 1 month ago

定義

大規模言語モデルを活用して質問に回答したり、自然言語を処理したりします。


シナリオ

LLM は チャットフロー/ワークフロー の中心的なノードであり、大規模言語モデルの会話/生成/分類/処理などの能力を活用して、多様なタスクを提示されたプロンプトに基づいて処理し、ワークフローのさまざまな段階で使用することができます。

  • 意図識別:カスタマーサービスの対話シナリオにおいて、ユーザーの質問を意図識別および分類し、異なるフローに誘導します。

  • テキスト生成:記事生成シナリオにおいて、テーマやキーワードに基づいて適切なテキスト内容を生成するノードとして機能します。

  • 内容分類:メールのバッチ処理シナリオにおいて、メールの種類を自動的に分類します(例:問い合わせ/苦情/スパム)。

  • テキスト変換:テキスト翻訳シナリオにおいて、ユーザーが提供したテキスト内容を指定された言語に翻訳します。

  • コード生成:プログラミング支援シナリオにおいて、ユーザーの要求に基づいて指定のビジネスコードやテストケースを生成します。

  • RAG:ナレッジベースの質問応答シナリオにおいて、検索した関連知識とユーザーの質問を再構成して回答します。

  • 画像理解:ビジョン能力を持つマルチモーダルモデルを使用し、画像内の情報を理解して質問に回答します。

  • ファイル分析:ファイルを処理する場合、LLMsを活用して、ファイルに含まれている情報を認識し、それを分析することができます。

適切なモデルを選択し、プロンプトを記述することで、チャットフロー/ワークフロー で強力で信頼性の高いソリューションを構築できます。


設定方法

エディットページで、前のノードの末尾を右クリックするか、+ボタンを軽くタップして新しいノードを追加し、LLMを選択します。

設定手順:

  1. モデルパラメータの設定:モデルパラメータは、生成される結果を調整するために使用されます。これには、温度、TopP、最大トークン数、応答形式などが含まれます。選択肢を簡素化するために、3つの事前設定されたパラメータ(クリエイティブ、バランス、精密)が用意されています。これらのパラメータに不慣れな場合は、デフォルト設定を選択することをお勧めします。画像解析機能を利用したい場合は、視覚能力を持つモデルを選んでください。

  2. プロンプトの作成:LLMノードには使いやすいプロンプト編集ページがあり、チャットモデルまたはコンプリートモデルを選択することで異なるプロンプト編集構造が表示されます。チャットモデル(Chat model)を選択した場合、システムプロンプト(SYSTEM)、ユーザー(USER)、アシスタント(ASSISTANT)の3つのセクションをカスタマイズできます。

システムプロンプト(SYSTEM)を作成する際にアイデアが浮かばない場合は、プロンプトジェネレーター機能を使用して、実際のビジネスシナリオに適したプロンプトを迅速に生成することができます。

プロンプトエディターでは、“/” または “{” を入力することで 変数挿入メニューを呼び出し、特殊変数ブロックや 上流ノードの変数をプロンプトに挿入してコンテキスト内容として使用できます。

  1. 上級的な設定:メモリ機能をオンにしたり、メモリウィンドウを設定したり、ビジョン機能を有効にしたり、Jinja-2テンプレート言語を使ってより複雑なプロンプトを作成したりできます。


特殊変数の説明

コンテキスト変数

画像変数

視覚機能を備えたLLMでは、ユーザーがアップロードした画像を変数を介して解析することが可能です。ビジョン機能をオンにした後、画像ファイルを読み込むための変数を指定し、設定を完了させてください。

ファイル変数

会話履歴

会話履歴変数の使用は広範ではなく、チャットフロー 内でテキスト補完モデルを選択した場合にのみ使用できます。

モデルパラメーター

モデルのパラメータはモデルの出力に影響を与えます。異なるモデルには異なるパラメータがあります。以下の図はgpt-4のパラメータリストです。

主要なパラメータ用語は以下のように説明されています:

Temperature(温度): 通常は0-1の値で、ランダム性を制御します。温度が0に近いほど、結果はより確定的で繰り返しになり、温度が1に近いほど、結果はよりランダムになります。

Top P: 結果の多様性を制御します。モデルは確率に基づいて候補語から選択し、累積確率が設定された閾値Pを超えないようにします。

Presence Penalty(存在ペナルティ): 既に生成された内容にペナルティを課すことにより、同じエンティティや情報の繰り返し生成を減少させるために使用されます。パラメータ値が増加するにつれて、既に生成された内容に対して後続の生成でより大きなペナルティが課され、内容の繰り返しの可能性が低くなります。

Frequency Penalty(頻度ペナルティ): 頻繁に出現する単語やフレーズにペナルティを課し、これらの単語の生成確率を低下させます。パラメータ値が増加すると、頻繁に出現する単語やフレーズにより大きなペナルティが課されます。パラメータ値が高いほど、これらの単語の出現頻度が減少し、テキストの語彙の多様性が増加します。

これらのパラメータが何であるか理解できない場合は、プリセットを読み込んで、「クリエイティブ」、「バランス」、「正確」の3つのプリセットから選択することができます。


高級機能

記憶:記憶をオンにすると、問題分類器の各入力に対話履歴が含まれ、LLM が文脈を理解しやすくなり、対話の理解能力が向上します。

記憶ウィンドウ:記憶ウィンドウが閉じている場合、システムはモデルのコンテキストウィンドウに基づいて対話履歴の伝達数を動的にフィルタリングします。開いている場合、ユーザーは対話履歴の伝達数を正確に制御できます(対数)。

対話役割名の設定:モデルのトレーニング段階の違いにより、異なるモデルは役割名のプロンプト遵守度が異なります(例:Human/Assistant、Human/AI、人間/助手など)。複数のモデルに対応するために、システムは対話役割名の設定を提供しており、対話役割名を変更すると会話履歴の役割プレフィックスも変更されます。

失敗後の再試行:ノードで起きる例外的な状況の中には、そのノードをもう一度試すだけで対応できるものがあります。エラーが発生した際に自動的に再試行をする機能が有効になっていれば、事前に設定された方針に従って再試行が行われます。再試行の最大回数や再試行間の時間を調整することで、再試行の方針を設定することが可能です。

  • 再試行は最大で10回まで可能です

  • 再試行の間隔は最長で5秒まで設定できます

構造化された出力: LLM が返すデータ形式の可用性、安定性、予測可能性を高め、エラー処理や形式変換の手間を削減します。

JSONスキーマエディタ

LLMノードのJSONスキーマエディタを使用すると、LLM が返すデータ構造を定義し、出力の解析性、再利用性、制御性を保証できます。ビジュアル編集モードによる直感的な編集、コード編集モードによる詳細な調整により、様々な複雑度のニーズに対応できます。

ノードレベルの機能であるJSONスキーマは、すべてのモデルの構造化出力の定義と制約に利用できます。

  • 構造化出力をネイティブでサポートするモデル: JSONスキーマを使用して構造化変数を直接定義できます。

  • 構造化出力をサポートしていないモデル: システムはJSONスキーマをプロンプトとして使用します。構造に基づいたコンテンツ生成をモデルに促せますが、出力の正しい解析は保証されません。

JSONスキーマエディタの開き方

LLMノードの出力変数をクリックし、構造化スイッチの設定を開くと、JSONスキーマエディタが表示されます。JSONスキーマエディタはビジュアル編集ウィンドウとコード編集ウィンドウを備え、シームレスに切り替えられます。

ビジュアル編集

使用シーン

  • ネスト構造を含まない、いくつかの単純なフィールドを定義する場合。

  • JSONスキーマの構文に慣れていない場合、コードを書かずに、直感的なインターフェースでドラッグアンドドロップしてフィールドを追加できます。

  • フィールド構造を素早く繰り返し変更したい場合。JSONコードを毎回変更する必要はありません。

フィールドの追加

構造化出力枠内でフィールドを追加ボタンをクリックし、フィールドのパラメータを設定します。

  • *(必須)*フィールド名

  • *(必須)*フィールドタイプ: string、number、object、arrayなどのフィールドタイプをサポートしています。

    オブジェクトまたは配列フィールドには、子フィールドを追加できます。

  • 説明: LLMがフィールドの意味を理解し、出力精度を向上させます。

  • 必須: オンにすると、LLMはこのフィールド値を必ず返します。

  • 列挙型: フィールド値の選択範囲を制限するために使用します。モデルは、あらかじめ設定された列挙値のみを返します。たとえば、red、green、blue のみを許可する場合は、次のようになります。

{
  "type": "string",
  "enum": ["red", "green", "blue"]
}

このルールでは、入力値は red、green、blue のいずれかでなければなりません。

フィールドの編集・削除

  • フィールドの編集:フィールドカードにマウスオーバーして、「編集」アイコンをクリックし、フィールドのタイプ、説明、デフォルト値などの項目を変更します。

  • フィールドの削除:フィールドカードにマウスオーバーして、「削除」アイコンをクリックすると、フィールドがリストから削除されます。

    オブジェクトまたは配列フィールドを削除すると、そのすべての子フィールドも削除されます。

JSONデータのインポート

  1. 「JSONをインポート」ボタンをクリックし、表示されるダイアログボックスにJSONデータを貼り付けるか、アップロードします。例(JSONデータ):

{
 "comment": "This is great!",
 "rating": 5
}
  1. 「送信」ボタンをクリックすると、システムがJSONデータを自動的に解析し、JSONスキーマに変換します。

AIでJSONスキーマを生成する

  1. 「AI生成」アイコンをクリックし、モデル(GPT-4など)を選択します。入力ボックスにJSONスキーマの説明を入力します。例:

「ユーザー名、年齢、および趣味を含むJSONスキーマが必要です。」

  1. 「生成」をクリックすると、システムが自動的にJSONスキーマを生成します。

{
  "type": "object",
  "properties": {
    "username": {
      "type": "string"
    },
    "age": {
      "type": "number"
    },
    "interests": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "username",
    "age",
    "interests"
  ]
}

コードエディタ

使用シーン

  • 複雑なデータ構造で、ネストされたオブジェクトや配列をサポートする必要がある場合(例:注文詳細、商品一覧など)。

  • 既存のJSONスキーマ(または API レスポンス例)を直接貼り付けて手動で調整したい場合。

  • pattern(正規表現)や oneOf(複数タイプ)などの高度なスキーマ機能を使用したい場合。

  • LLMで作成したスキーマを元に、フィールドのタイプや構造をビジネスニーズに合わせて変更したい場合。

フィールドの追加

  1. コードエディタを開きます。

  2. 「フィールドを追加」をクリックし、フィールドを入力します。例:

{
  "name": "username",
  "type": "string",
  "description": "user's name",
  "required": true
}
  1. 「保存」をクリックすると、システムがJSONスキーマを自動的に検証し、保存します。

フィールドの編集・削除:JSONコードボックスで、フィールドのタイプ、説明、デフォルト値などの項目を直接編集・削除し、「保存」をクリックします。

JSONデータのインポート

  1. 「JSONをインポート」ボタンをクリックし、表示されるダイアログボックスにJSONデータを貼り付けるか、アップロードします。例(JSONデータ):

{
 "comment": "This is great!",
 "rating": 5
}
  1. 「送信」ボタンをクリックすると、システムがJSONデータを自動的に解析し、JSONスキーマに変換します。

AIでJSONスキーマを生成する

  1. 「AI生成」アイコンをクリックし、モデル(GPT-4など)を選択します。入力ボックスにJSONスキーマの説明を入力します。例:

「ユーザー名、年齢、および趣味を含むJSONスキーマが必要です。」

  1. 「生成」をクリックすると、システムが自動的にJSONスキーマを生成します。

{
  "type": "object",
  "properties": {
    "username": {
      "type": "string"
    },
    "age": {
      "type": "number"
    },
    "interests": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "username",
    "age",
    "interests"
  ]
}

活用事例

  • ナレッジベースの内容を検索する

  1. LLMノードの上流に知識検索ノードを追加します;

  2. 知識検索ノードの 出力変数 result をLLMノードの コンテキスト変数 に入力します;

  3. コンテキスト変数 をアプリケーションのプロンプトに挿入し、LLMがナレッジベース内のテキスト内容を読み取れるようにします。

通常のノードの変数もコンテキスト変数に入力可能ですが、例えば開始ノードの文字列型変数など、引用と帰属 機能は機能しません。

  • ドキュメントファイルの取り込み

ワークフローアプリケーションでドキュメントの内容を取り込むことを可能にする場合、例えばChatPDFアプリケーションを開発する際には、以下の手順を踏んでください:

  • 「スタート」ノードへファイル変数を設定する;

  • LLMノードの前段階にドキュメント抽出ノードを設置し、ファイル変数を入力として利用する;

  • 抽出ノードからの出力変数 text をLLMノードへの入力プロンプトとして設定する。

  • エラー処理

情報処理中に、LLMノードでは入力テキストがトークンの制限を超えたり、必要なパラメータが欠けているなどのエラーに遭遇することがあります。開発者は以下の手順に従い、エラー処理の枝を設定してノードエラーが発生した際の対処方針を構築することで、フローの中断を避けることができます:

  1. LLMノードで「エラー処理」を有効化する

  2. エラー処理戦略を選択して設定する

  • 構造化出力

以下の動画を通じて、構造化出力機能を使用して顧客情報を収集する方法を理解することができます:

モデルの選択:Difyでは、OpenAIのGPTシリーズ、AnthropicのClaudeシリーズ、GoogleのGeminiシリーズなど、世界中で広く使用されているさまざまなモデルをしています。モデルの選択は、推論能力、コスト、応答速度、コンテキストウィンドウのサイズなどの要因に基づいて行います。使用するシーンやタスクの種類に応じて、適切なモデルを選ぶことが重要です。

Difyを初めて使用する場合は、LLMノードでモデルを選択する前に、システム設定 - モデルプロバイダでを事前に行う必要があります。

コンテキストの入力(オプション):コンテキストとは、LLMに提供される背景情報のことを指します。通常は、の出力変数を記入するために使用されます。

コンテキスト変数とは、LLMが背景情報を得るために利用する特殊な変数のことです。これは主に、情報検索の場面で役立ちます。詳細はをご覧ください。

画像アップロード機能

多くのLLMは、の例にもあるように、ファイルの内容を直接扱える機能を提供しています。これにより、プロンプトにファイル変数を用いることが可能となります。しかし、開発者がファイル変数を使用する際には、事前にそのLLMが対応しているファイル形式を、公式サイトで確認することが重要です。これは、予期せぬ問題を避けるためです。

チャットフローやワークフローアプリケーションでファイルアップロード機能を組み込む方法については、をご覧ください。

テキスト補完モデル(例:gpt-3.5-turbo-Instruct)内でチャット型アプリケーションの対話記憶を実現するために、Dify は元の内で会話履歴変数を設計しました。この変数は チャットフロー の LLM ノード内でも使用され、プロンプト内に AI とユーザーの対話履歴を挿入して、LLM が対話の文脈を理解するのを助けます。

Jinja-2 テンプレート:LLM のプロンプトエディター内で Jinja-2 テンプレート言語をサポートしており、Jinja2 の強力な Python テンプレート言語を使用して軽量なデータ変換やロジック処理を実現できます。詳細はを参照してください。

エラー処理:異なるエラー対応戦略を提供し、現在のノードが失敗してもメインプロセスを止めずにエラー通知を行うか、バックアップ経路を使ってタスクを継続できるようにします。詳細は、をご覧ください。

JSON Schema Editor
Visual Editor
JSON Schema

ワークフローアプリケーションがの内容を検索できるようにしたい場合、例えばインテリジェントカスタマーサービスアプリケーションを構築する場合は、以下の手順を参考にしてください。

の出力変数 result には引用情報も含まれており、 機能を使用して情報の出所を確認できます。

さらなる情報は、を参照してください。

入力システムプロンプト

エラー処理の詳細は、をご覧ください。

サポート
モデルの設定
知識検索
知識検索のセクション
Claude 3.5 Sonnet
ファイルアップロードガイド
プロンプト専門モード(廃止)
公式ドキュメント
エラー処理
「ナレッジベース」
知識検索ノード
引用と帰属
ファイルアップロード
エラー処理
LLM ノード
LLM ノード設定 - モデル選択
プロンプトの作成
プロンプトジェネレーター
変数挿入メニューを呼び出す
会話履歴変数の挿入
コンテキスト変数
入力システムプロンプト