Dify 三昧:DifyでAI開発を始めよう3 – LLM の設定(1)

はじめに

こんにちは、ディーネットのよろず請負の深見です。

先日、6月25日~26日の2日間は、AWS Summit Japan で幕張メッセまで足を運んでいました。

一日目はセッションの聴講に専念し、二日目は半分を当社のブースで応対し、残り半分は各社のブースを見て回りました。Dify の開発元である LangGenius 社の日本法人もブース出展していたので、そちらに立ち寄って貴重なお話を伺うことができました。

私事になりますが、今年も 2025 Japan All AWS Certifications Engineers の認定をいただきました。サミット内での表彰イベントも見学してきました。この認定は昨年に続いて2年目となります。詳しくは、AWS JAPAN APN ブログをご参照ください。
https://aws.amazon.com/jp/blogs/psa/

さて、前回に引き続き、今回は Dify のお話をしていきます。前半ではバージョンアップのトピックスを、後半は Dify の核となる LLM の設定関連について詳しく解説します。

Difyとは?

初めての方向けに簡単に。
Dify(ディファイ)は、LLM(大規模言語モデル)を活用したAIアプリケーションを、プログラミング知識なしで簡単に構築できるオープンソースのプラットフォームです。チャットボット、ワークフロー自動化、知識ベース検索など、様々なAIアプリケーションをドラッグ&ドロップの直感的な操作で開発できる点が大きな特徴です。

Difyのトピックス

ここ最近も継続的に Dify のバージョンアップが行われています。

OSS(オープンソースソフトウェア)版の Dify は、活発な開発により機能追加が継続的に行われているため、使い勝手が着実に向上しています。(時には、小さな不具合が発生することもありますが...)

2025年6月末の時点では、v1.5.0 がリリースされています。

Dify v1.4.2 のリリース内容

Dify v1.4.2は使いやすさの向上、機能の改善、安定性の強化を含む包括的なアップデートです。主要な変更点をまとめました。

新機能と改善点

ユーザーインターフェースと操作性の向上

  • Webアプリ入力の強化: URLパラメータを使用して非表示フィールドを自動入力する機能を追加。これにより、外部システムからのデータ連携がスムーズになります(#20630)
  • チャットボットのカスタマイズ機能: チャット入力プレースホルダーがボット名を動的に表示するように改善。ユーザーエクスペリエンスの向上を図りました(#20473)
  • マーケットプレイスUI改善: アプリタイプの並べ替え機能向上により、目的のアプリテンプレートを素早く見つけられるようになりました(#20685)

パフォーマンスと処理能力の向上

  • ドキュメント抽出の効率化: ExcelやCSVファイルの処理速度を大幅に向上。大容量ファイルの取り扱いが快適になりました(#20625)
  • ファイルアップロードの強化: 複数の拡張子マッピングに関する問題を解決し、より多様なファイル形式に対応(#20559)

知識ベースAPI機能の強化

  • メタデータフィルタリング: より精密で柔軟なクエリ検索が可能となり、知識ベースからの情報抽出精度が向上
  • チャンクID検索: 特定のデータ範囲に絞った効率的な検索機能を追加。必要な情報により迅速にアクセス可能(#20426)
  • タグ付け機能とデータセット連携: データの分類と管理がより便利になり、大規模な知識ベースの運用が効率化(#20023)

モニタリングと統合機能

  • Weaveトレースとワンダラブル統合: 専用クラウドインスタンスによる運用モニタリングを強化。AIアプリケーションの動作状況をリアルタイムで把握可能(#20765)

セキュリティ更新

  • Flask-Corsのアップグレード: 最新バージョンへの更新により、クロスオリジンリクエストのセキュリティレベルを向上(#20577)

バグ修正と安定性向上

  • 401エラーの解決: 並列ワークフロー実行時の認証問題やバックワード呼び出しエラーを修正。複雑なワークフローでも安定動作を実現(#20321, #20347, #20374)
  • エージェントノードの改善: Python 3.11用のenum構文修正、LLM呼び出し時の長いトークン処理を改善(#20373, #20391)
  • 注釈API修正: 欠落していたend_userパラメータを復元し、ユーザー固有の動作を適切に処理(#20428)
  • Docker環境変数処理の修正: コンテナ環境での環境変数の不適切な処理を解決(#20436)
  • メモリリーク防止: Celeryワーカーのリークを修正し、長時間運用時の安定性を大幅に向上(#19268)
  • メール招待機能の改善: SMTP認証エラーを解決し、チーム招待機能が確実に動作するよう改善(#20545)
  • アプリタグの一貫性: アプリタグ更新時の不整合問題を解決(#20618)
  • マークダウンレンダリング: react-markdownでの略語表示を正しく処理し、文書表示の品質を向上(#20648)
  • エージェントモデレーション: コンテンツ審査機能を完全に復元(#20673)
  • プラグイン拡張のパフォーマンス: 応答性と処理速度を大幅に改善(#20704)
  • 質問分類器の安定性: エラーなしでの安定実行を実現(#20829)
  • Web UXの向上: シングルランモーダルの自動クローズ機能により使いやすさを向上(#20865)

Dify v1.4.3 のリリース内容

Dify v1.4.3は、使い勝手の向上と柔軟性の強化に重点を置いたアップデートです。機能の安定性を高め、ユーザー体験を向上させる様々な改善が施されています。

主な修正と改善点

LLM(大規模言語モデル)と統合機能の強化

  • LLMノードの強化: 構造化出力(JSON形式での出力など)のためのパラメータ欠落問題を修正し、LLMノードの堅牢性を向上(#20915)
  • Gemini LLMサポート: エージェントアプリでGoogle Gemini 0.2.xプラグインのサポートを追加。選択できるLLMの幅が拡大(#20794)

ユーザーインターフェースとエクスペリエンス

  • マークダウンボタンの修正: マークダウンボタンを通じたメッセージ送信機能の問題を解消(#20933)
  • 会話パネルの最適化: 会話パネルモーダルの幅調整ロジックを改善し、様々な画面サイズでの操作性を向上(#21018)

セキュリティと認証の改善

  • ログイン制限のクリア: パスワードリセット後にログイン制限が自動的にクリアされるように改善。ユーザビリティが大幅に向上(#20948)
  • リモートIP識別の修正: CloudFlareなどのCDN経由でのアクセス時のIP識別処理を適切に修正(#20846)

ドキュメントと情報管理

  • アプリ情報の強化: アプリ情報にauthor_name(作成者名)フィールドを追加。チーム開発時の管理が容易に(#20973)
  • ドキュメントリンクの改善: 多言語対応を考慮したドキュメントリンク取得方法の一般化とリンクパスのエラー修正(#20801)
  • 多言語ドキュメントサポート: 各種コンポーネントのドキュメントリンクが多言語をサポートするように更新(#21048)

技術的改善

  • ドキュメントインデックス作成: ドキュメントインデックス作成がセッションに正しく紐付けられるよう修正(#21015)
  • OceanbaseのCIテスト: Docker Composeを使用したOceanbaseのベクトルデータベーステストがCI内で実行されるように改善(#20945)
  • S3の設定強化: プラグインデーモンでAWS S3の使用を明示的に区別するためのS3_USE_AWS環境変数を追加(#20923)
  • コード最適化: Vultureツールを使用して不要なコードを削除し、コードベースをより簡潔に保守しやすく改善(#20999)
  • ワークフロー実行の改善: 次のシーケンス番号取得にmax関数を使用するよう最適化(#20966)

Dify v1.5.0 のリリース内容

Dify v1.5.0は、デバッグの簡素化と強力な統合機能により開発生産性を向上させる洗練されたアップデートです。このバージョンでは、ワークフロー開発体験が大幅に改善されています。

主要機能: ワークフローデバッグの大幅強化

ワークフローデバッグツールが完全に刷新されました:

  • 改善された視覚化インターフェース: ワークフローの動作を直感的に把握でき、問題の特定と解決が大幅に簡易化
  • デバッグ変数の永続化機能: デバッグセッション間でのデータ保持が可能となり、段階的なテストが効率的に(#20699)
  • ダッシュボード統合の強化: 統合されたダッシュボードでワークフローの一元管理が可能(#21369)
  • リアルタイム実行追跡: ダッシュボードから直接ワークフローの実行状況を監視可能

新機能と改善点

開発体験の劇的向上

  • ドラッグ&ドロップDSL: ブラウザに直接DSLファイル(Domain Specific Language:ドメイン固有言語)をドロップしてアプリを瞬時に作成可能(#20706)
  • 強化されたデフォルトテンプレート: ファイルアップロード機能(sys.files)を追加し、より強力なウェブアプリ作成が可能に(#21476)
  • フォーム属性の非表示化: UIの柔軟性と制御性を大幅に向上(#20956)

統合と拡張機能

  • MatrixOneの統合: MatrixOne VDB(ベクトルデータベース)統合による高度なデータ検索戦略のサポート(#20714)
  • Firecrawlディープサーチ: 強化された検索エンドポイントにより、ウェブクローリングでより豊富なコンテンツ発見が可能(#20521)
  • Notionページネーション: 抽出されたNotionデータのナビゲーションを大幅に改善。大量のNotionページも効率的に処理(#20919)
  • SendGrid統合: シームレスで信頼性の高いメール配信機能を追加(#21011)

改良と修正

ユーザー体験の大幅向上

  • スマートログインリダイレクト: ユーザーナビゲーションをインテリジェントな自動ログインリダイレクトで最適化(#21096)
  • 環境同期: インポート時の環境変数と会話変数の自動同期機能により、設定ミスを防止(#21215)
  • APIユーザー体験の改善: ロード状態の強化、アイコンサポート、レンダリング修正により操作性を向上(#21091, #20761)
  • レスポンシブチャート: よりスムーズで応答性の高いチャートにより分析操作を改善(#21185)

安定性とUI改善

  • 安定したマークダウン処理: クラッシュ防止とマークダウン処理の改善により、データ整合性を強化(#21258, #21309)
  • アプリアイコンピッカー: 安定した高さと折りたたみ可能なセクションによりUIを整理(#21399)
  • 即時データセット情報: ワークフローから直接、必要なデータセット情報に迅速にアクセス可能(#21413, #21406)

今回は、以上が各アップデートの主要な内容となります。継続的な機能向上により、Difyの使いやすさと安全性が着実に改善されていることが分かります。

Dify の核心:LLM のパラメータ設定について

LLM(Large Language Model:大規模言語モデル) のパラメータは、AIが生成する回答の品質や特性を調節する重要な設定です。利用する LLM ごとに固有のパラメータも存在しますが、ここではどの LLM においても共通するパラメータについて詳しく解説します。(チャットボットを例に進めます)

今回の説明では、Amazon Bedrock 経由で利用可能な Anthropic 社の Claude 4.0 Sonnet を例に取り上げます。
※ Anthropic 社の Claude 4.0 Sonnet を Dify から直接ご利用の場合は、固有のパラメータが若干異なります。

Dify-LLM-20250702-01

LLM の調整について

LLM の調整とは

LLMの調整とは、大規模言語モデルが生成するテキストの特性や品質を制御するために、各種パラメータを最適化することです。これにより、モデルの出力を特定の用途や要求に合わせて精密にカスタマイズできます。

従来、これらの調整には高度なプログラミング知識が必要でしたが、Difyでは、GUI(グラフィカルユーザーインターフェース)上で直感的にこれらのパラメータを調整できるため、技術的な専門知識がなくても効果的なAIアプリケーションを構築することが可能です。

LLM の調整の必要性

LLMの調整が必要な理由は以下の通りです:

  1. 用途の多様性: 創作活動、ビジネス文書作成、技術文書執筆など、求められる出力特性が大きく異なります
  2. 品質の一貫性: デフォルト設定では期待する品質や文体が得られない場合があります
  3. コスト効率: 適切な調整により、必要以上に長いレスポンスを避け、API使用料を最適化できます
  4. ユーザー体験: アプリケーションの特性に合わせた調整により、ユーザーにとってより価値のある体験を提供できます

LLM のパラメータ

LLM のパラメータの基本

DifyでClaude 4.0 Sonnetを使用する際の主要パラメータは以下の通りです:

  • Temperature(温度): 0.0〜1.0の範囲で出力のランダム性・創造性を制御
  • Top P: 0.0〜1.0の範囲で語彙選択の多様性を制御
  • Max Tokens: 出力される最大トークン数を指定
  • Stop Sequences: 出力を停止させる特定の文字列を指定
    ※ Stop Sequences はバージョン等によりない場合があります。

LLM の各パラメータの詳細

Temperature(温度)
Temperatureは、AIの「創造性」をコントロールする最も重要なパラメータです。

  • 0.0に近い値:より決定的で一貫した出力を生成します。事実に基づく回答や正確性が重要な場面(ビジネス文書、技術解説など)に適しています
  • 1.0に近い値:より創造的で多様な出力を生成します。創作活動やブレインストーミングに適しています
  • 推奨範囲:0.1〜0.9(極端な値は避けることを推奨)

Top P(核サンプリング)
Top Pは、AIが次の単語を選ぶ際の「語彙の多様性」を制御する高度なパラメータです。

  • 0.1:非常に保守的な語彙選択を行います(安全で予測可能な表現)
  • 0.9:多様な語彙選択を行います(豊富な表現バリエーション)
  • Temperatureと組み合わせて使用することで、より細かい出力制御が可能になります

Max Tokens
Max Tokensは、生成される文章の「長さの上限」を設定します。

  • 短い回答が欲しい場合:100〜500トークン
  • 詳細な説明が必要な場合:1000〜4000トークン
  • Claude 4 Sonnetの最大:200,000トークン

トークンとは?
トークンとは、AIが文章を処理する際の最小単位です。日本語では約1〜3文字程度に相当し、英語では単語や句読点が1トークンとして扱われます。例えば「こんにちは」は約3〜4トークンに相当します。

Stop Sequences
Stop Sequencesは、AIの出力を「特定の文字列で強制終了」させる機能です。

  • 特定の形式で出力を終了させたい場合に使用
  • 例:「---」「END」「完」「以上です」「まとめ」など
  • 複数の停止文字列を設定することも可能

LLM の各パラメータの効果的な組み合わせ

バランス型(汎用的な用途)

Temperature: 0.7
Top P: 0.9
Max Tokens: 1000

適度な創造性と安定性を両立し、多くの用途に対応可能な設定です。

高精度型(事実重視・正確性優先)

Temperature: 0.1
Top P: 0.3
Max Tokens: 500

ビジネス文書や技術文書など、正確性が最優先される場面に最適な設定です。

創造型(クリエイティブ重視)

Temperature: 0.9
Top P: 0.9
Max Tokens: 2000

小説執筆、ブレインストーミング、アイデア発想などクリエイティブな作業に最適です。

LLM のパラメータ調整のベストプラクティス

パラメータ調整の基本的なアプローチ:

  1. ベースライン設定: まずは中間的な値から開始(Temperature: 0.7, Top P: 0.9)
  2. 段階的調整: 一度に一つのパラメータを変更し、結果を注意深く確認
  3. 複数パターンでのテスト: 様々なプロンプトで動作確認を実施
  4. フィードバック収集: 実際の使用者からの評価を基に微調整
  5. 継続的改善: 使用状況の変化に応じて定期的に見直し

調整時の重要な注意点

  • 極端な値の設定は避ける:Temperature 0.0や1.0などの極端な値は予期しない動作を引き起こす可能性があります
  • パラメータ同士の相互作用を考慮する:TemperatureとTop Pは相互に影響し合うため、バランスを考慮した調整が必要です
  • 実際の使用ケースでのテストを最重視する:理論値よりも実際の動作結果を重視してください
  • 一度に多くのパラメータを変更しない:問題の原因を特定するため、段階的に調整することが重要です

用途別:最適なパラメータ設定例

小説・創作活動の場合

創造性と物語の一貫性のバランスが重要です。

推奨設定

Temperature: 0.8
Top P: 0.9
Max Tokens: 2000
Stop Sequences: ["第", "章", "---完---"]

設定の理由

  • 高めのTemperatureで創造性と独創的な表現を重視
  • 長めのMax Tokensで十分な描写と展開を確保
  • Stop Sequencesで章区切りを適切に制御し、構成を整える

ビジネス文書作成の場合

正確性と専門性、読みやすさが求められます。

推奨設定

Temperature: 0.3
Top P: 0.7  
Max Tokens: 800
Stop Sequences: ["以上", "ご不明点", "まとめ"]

設定の理由

  • 低いTemperatureで一貫性と正確性を最優先
  • 適度なTop Pで自然で読みやすい表現を維持
  • ビジネス文書に適した簡潔で要点を押さえた長さに制限

技術文書・解説記事の場合

技術的正確性と明確で分かりやすい説明が最優先となります。

推奨設定

Temperature: 0.2
Top P: 0.5
Max Tokens: 1500
Stop Sequences: ["まとめ", "参考文献", "注意事項"]

設定の理由

  • 非常に低いTemperatureで事実に基づく正確な記述を確保
  • 低いTop Pで専門用語の一貫性を保持
  • 技術的な詳細説明に必要な適度な文章量を確保

カスタマーサポート・FAQ回答の場合

迅速で正確、かつ親しみやすい回答が求められます。

推奨設定

Temperature: 0.4
Top P: 0.8
Max Tokens: 600
Stop Sequences: ["お困りの場合", "詳細については"]

設定の理由

  • 中程度のTemperatureで正確性と親しみやすさのバランスを実現
  • 適度なTop Pで自然な表現を維持
  • 簡潔で分かりやすい回答長に制限

これらの設定は出発点として参考にしていただき、実際の用途や要求に応じて細かく微調整を行うことが重要です。Difyの最大の利点は、これらの調整をリアルタイムで試行錯誤できることにあります。

パラメータ調整の実践的なコツ

A/Bテストの活用

同じプロンプトで異なるパラメータ設定を試し、出力結果を比較することで最適な設定を見つけることができます。

ログの活用

Difyのログ機能を活用して、どのパラメータ設定がどのような結果を生み出したかを記録し、改善に役立てましょう。

ユーザーフィードバックの収集

実際のユーザーからのフィードバックを収集し、それを基にパラメータを調整することで、より実用的なAIアプリケーションを構築できます。

おわりに

前編では、Difyの最新バージョンアップ情報と、LLMパラメータ設定の基礎から実践的な活用方法まで詳しく解説しました。

Difyは継続的な機能向上により、AI活用の敷居を大幅に下げており、今後もその進化に注目が集まります。特にLLMパラメータの適切な調整は、AIアプリケーションの品質を大きく左右する重要な要素です。

後編では、さらに実践的なプロンプトエンジニアリングのテクニックについて詳しく解説していきます。効果的なプロンプト設計により、より高品質なAIアプリケーションの構築方法をご紹介予定です。

本記事が、Difyを活用したAIアプリケーション開発の一助となれば幸いです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA