diff --git a/docs.json b/docs.json index b3571fce..1df82dae 100644 --- a/docs.json +++ b/docs.json @@ -840,11 +840,11 @@ "ja/use-dify/nodes/trigger/webhook-trigger" ] }, + "ja/use-dify/nodes/agent", "ja/use-dify/nodes/llm", "ja/use-dify/nodes/knowledge-retrieval", "ja/use-dify/nodes/answer", "ja/use-dify/nodes/output", - "ja/use-dify/nodes/agent", "ja/use-dify/nodes/question-classifier", "ja/use-dify/nodes/ifelse", "ja/use-dify/nodes/human-input", @@ -857,7 +857,9 @@ "ja/use-dify/nodes/variable-assigner", "ja/use-dify/nodes/parameter-extractor", "ja/use-dify/nodes/http-request", + "ja/use-dify/nodes/command", "ja/use-dify/nodes/list-operator", + "ja/use-dify/nodes/upload-file-to-sandbox", "ja/use-dify/nodes/tools" ] }, @@ -865,13 +867,16 @@ "group": "ビルド", "expanded": false, "pages": [ - "ja/use-dify/build/shortcut-key", - "ja/use-dify/build/goto-anything", + "ja/use-dify/build/runtime", "ja/use-dify/build/orchestrate-node", + "ja/use-dify/build/file-system", + "ja/use-dify/build/collaboration", + "ja/use-dify/build/goto-anything", "ja/use-dify/build/predefined-error-handling-logic", "ja/use-dify/build/mcp", "ja/use-dify/build/version-control", - "ja/use-dify/build/additional-features" + "ja/use-dify/build/additional-features", + "ja/use-dify/build/shortcut-key" ] }, { @@ -901,7 +906,8 @@ ] }, "ja/use-dify/publish/publish-mcp", - "ja/use-dify/publish/developing-with-apis" + "ja/use-dify/publish/developing-with-apis", + "ja/use-dify/publish/publish-to-marketplace" ] }, { @@ -994,6 +1000,7 @@ "ja/use-dify/workspace/readme", "ja/use-dify/workspace/model-providers", "ja/use-dify/workspace/plugins", + "ja/use-dify/workspace/tools", "ja/use-dify/workspace/app-management", "ja/use-dify/workspace/team-members-management", "ja/use-dify/workspace/personal-account-management", diff --git a/ja/use-dify/build/collaboration.mdx b/ja/use-dify/build/collaboration.mdx new file mode 100644 index 00000000..627142ec --- /dev/null +++ b/ja/use-dify/build/collaboration.mdx @@ -0,0 +1,20 @@ +--- +title: ワークスペースメンバーとの共同作業 +sidebarTitle: コラボレーション +icon: "users" +--- + + ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/build/collaboration)を参照してください。 + +編集権限以上を持つワークスペースメンバーは、同じワークフローを同時に編集できます。キャンバスを右クリックして**コメントを追加**を選択し、アイデアを共有できます。 + +より素早く複数のコメントを追加するには、`C` キーを押してコメントモードに入ります。コメント内で他のメンバーを `@` メンションすると、メールで通知されます。 + + + セルフホスト環境では、コラボレーション機能はデフォルトで無効です。有効にするには、以下の環境変数を設定してください: + + - `ENABLE_COLLABORATION_MODE` = `true` + - `SERVER_WORKER_CLASS` = `geventwebsocket.gunicorn.workers.GeventWebSocketWorker` + + カスタムドメインでデプロイする場合は、`NEXT_PUBLIC_SOCKET_URL` に WebSocket サーバーの URL も設定してください。 + diff --git a/ja/use-dify/build/file-system.mdx b/ja/use-dify/build/file-system.mdx new file mode 100644 index 00000000..25be4211 --- /dev/null +++ b/ja/use-dify/build/file-system.mdx @@ -0,0 +1,110 @@ +--- +title: ファイルシステム +icon: "folder-tree" +keyword: skills, skill +--- + + ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/build/file-system)を参照してください。 + +[サンドボックスランタイム](/ja/use-dify/build/runtime#サンドボックスランタイム)を使用する各アプリケーションには、LLM が必要に応じてファイルの読み取り、書き込み、処理を行えるファイルシステムがあります。 + +ファイルシステムには2種類のファイルが含まれます: + +- **リソース**:Skill など、アップロードまたは作成された永続ファイル。 + +- **アーティファクト**:LLM が各実行時に生成する一時ファイル。 + +ファイルシステム + +## リソース + +リソースはワークフロー用に作成またはインポートしたファイルです。LLM は読み取りのみ可能で、変更はできません。リソースは実行間で永続し、アプリのエクスポート時に含まれます。 + +### Skill + +[Skill](https://agentskills.io/home) は、指示、ナレッジ、スクリプト、その他の参考資料を特定のタスク用にバンドルします——一度定義すれば、ワークフロー間で再利用できます。 + +たとえば、マーケティングコピーの生成のたびにスタイルガイドラインを繰り返し記述してブランド素材をアップロードする代わりに、すべてを含む `marketing-copy` Skill を作成し、必要なときに参照するだけで済みます。 + +Skill は詳細な SOP(標準作業手順書)、LLM は能力のある新入社員と考えてください。新入社員は汎用的な能力を持っていますが、会社固有のプロセスは知りません。Skill は必要なすべて——手順、参考資料、使用するツール——を提供し、期待通りにタスクを完了できるようにします。 + +#### Skill の作成またはインポート + +他で使用していた Skill のインポート、用意された Skill テンプレートの利用、またはファイルシステムでのカスタム Skill の直接作成が可能です。 + +すべての Skill には `SKILL.md` ファイルが必要です。このファイルでタスクの内容、Skill の使用タイミング、実行手順を定義します。 + +`SKILL.md` 内では、利用可能なリソース(スクリプト、テンプレート、コンテキスト資料、[Dify ツール](/ja/use-dify/workspace/tools))を参照し、いつどのように使用するかを指定できます。 + +Skill + +#### プロンプトでの Skill の参照 + +プロンプトエディターで `/` を入力し、**ファイル**タブから Skill フォルダーを選択します。 + +LLM は最初に Skill のフロントマター(名前、説明、メタデータ)を読み取り、必要な場合にのみ全内容を読み込みます。これによりトークンが節約され、複数の Skill を使用する場合に特に効率的です。 + +## アーティファクト + +アーティファクトは LLM が実行中に生成するファイル——レポート、画像、その他の出力です。LLM はアーティファクトに対して完全な読み書き権限を持ちます。 + +**Skills** タブまたはキャンバス下部の**変数検査**パネルでアーティファクトのプレビューとダウンロードができます。 + +### アーティファクトのライフサイクル + +アーティファクトはテスト環境と本番環境で異なるライフサイクルを持ちます。アプリのエクスポート時にはアーティファクトは含まれません。 + + + + アーティファクトはテスト実行間で保持されます。クリアするには、**変数検査**パネルの**すべてリセット**をクリックします。 + + + アーティファクトは各実行にスコープされ、実行完了時に自動的にクリアされます。 + + + + + **アーティファクト**の下に `.bashrc` や `.profile` などのシステムファイルが表示されることがあります。これらはサンドボックス環境の一部であり、実行間で保持されます。 + + +### エンドユーザーへのアーティファクトの出力 + +アーティファクトはサンドボックス環境に保存されており、エンドユーザーに直接公開できません。出力するには、別の Agent ノードを通じて抽出する必要があります: + +1. ファイルを生成するノードの下流に Agent ノードを追加します。 + +2. **Agent モード**をオフにし、**構造化出力**を有効にします。 + +3. ファイル型の構造化出力変数を追加します。 + +4. **対話履歴の追加**から上流 Agent ノードの対話履歴をインポートします。これにより LLM がファイルパスを特定できます。 + +5. ユーザーメッセージで、モデルにファイルの抽出と出力を指示します(例:「生成された PDF ファイルを出力してください」)。 + +6. 回答ノードまたは出力ノードで、Agent ノードのファイル出力変数を参照します。 + +## サポートされるファイルタイプと操作 + +ファイルシステム内のすべてのファイルはダウンロード可能です。一部はプレビューや編集も可能です。 + + + + + リソースのみ編集可能です。 + + - **テキスト**: TXT, MD, MDX, HTML, HTM, XML, CSV + - **コード**: Python, JavaScript, JSON, YAML および [Monaco Editor](https://microsoft.github.io/monaco-editor/) がサポートするすべての言語 + - **設定**: PROPERTIES, VTT + + + - **ドキュメント**: PDF, DOCX, DOC, XLSX, XLS, PPTX, PPT, EPUB + - **画像**: JPG, JPEG, PNG, GIF, WEBP, SVG + - **データ**: CSV, TSV, SQLite (.sqlite, .db) - テーブルプレビューのみ + - **メール**: EML, MSG + + + - **音声**: MP3, M4A, WAV, WEBM, AMR + - **動画**: MP4, MOV, MPEG, MPGA + - **その他**: カスタムファイル拡張子 + + diff --git a/ja/use-dify/build/runtime.mdx b/ja/use-dify/build/runtime.mdx new file mode 100644 index 00000000..36c02a75 --- /dev/null +++ b/ja/use-dify/build/runtime.mdx @@ -0,0 +1,72 @@ +--- +title: ランタイム +icon: "cube" +--- + + ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/build/runtime)を参照してください。 + +ランタイムはワークフローが実行される環境で、LLM がアクセス・実行できる範囲を定めます。 + +Dify は2種類のランタイム環境を提供しています:**サンドボックスランタイム**と**クラシックランタイム**。それぞれ異なるユースケースに最適化されています。 + +## 概要 + + + + + **適用シーン:** LLM が自律的に問題を解決する必要がある複雑なタスク。より強力ですが、速度は遅くトークン消費も多くなります。 + + + サンドボックスランタイムでは、LLM が隔離環境で**コマンドラインを実行**できます。ターミナルでコマンドを使ってできることは、すべて LLM にもできます: + + - **スクリプトやプログラムの実行** - コードを実行してデータを処理し、出力を生成し、あらゆる計算を行う + + - **必要なツールのインストール** - pip やその他のパッケージマネージャーを使ってライブラリやツールをオンデマンドでダウンロード + + - **外部リソースへのアクセス** - URL からファイルを取得、リポジトリのクローン、外部ソースからのデータ取得 + + - **ファイルの操作** - [ファイルシステム](/ja/use-dify/build/file-system)内のリソース([Skill](/ja/use-dify/build/file-system#skill) など)にアクセスし、さまざまな形式のファイルを処理し、スクリプトやツールを使ってマルチモーダルなアーティファクトを生成 + + + サンドボックスランタイムでは、Agent ノードがクラシックランタイムにおける LLM ノードと Agent ノードの両方の役割を兼ねます。 + + これらの高度な機能が不要な簡単なタスクには、**[Agent モード](/ja/use-dify/nodes/agent#コマンド実行の有効化(agent-モード))** をオフにすることで、より高速なレスポンスと低いトークンコストを実現できます。 + + + **LLM が真の Agent になります**。モデルが十分に強力なツール呼び出しと推論能力を持っている限り、どのコマンドを実行すべきかを自律的に判断し、タスクを完了できます。 + + LLM の能力が強力になったからこそ、サンドボックスでの実行が必要です。隔離環境は LLM に十分な自由度を与えつつ、安全な運用を保証します。 + + + デフォルトのサンドボックスプロバイダー: + + - Dify Cloud は E2B を使用。 + + - セルフホスト環境は SSH VM を使用。 + + **設定** > **サンドボックスプロバイダー**で他のプロバイダーを選択・設定できます。 + + + + + + + **適用シーン:** シンプルで迅速なタスク。機能は限定的ですが、より高速で効率的です。 + + + クラシックランタイムでは、LLM が最も得意とすることを行います:情報の分析、テキストの生成、問題の推論、そして事前設定されたツールの自律的な活用によるタスクの完了です。 + + 特定のツールキットを渡すイメージです——タスクは遂行できますが、**提供されたツールの範囲に限定されます**。 + + + + +## 比較表 + +| 項目 | サンドボックスランタイム | クラシックランタイム | +|:------------------------------|:-------------------------------------|:------------------------------------| +| **適用シーン** | 複雑な自律的問題解決 | シンプルで明確なタスク | +| **LLM の自律度** | 必要なコマンドを自由に実行 | 設定されたツールを使用 | +| **ファイルシステム** | ✅ | ❌ | +| **Skill** | ✅ | ❌ | +| **アプリのエクスポート形式** | `.zip`(DSL + リソースファイル) | `.yml`(DSL ファイル) | diff --git a/ja/use-dify/nodes/agent.mdx b/ja/use-dify/nodes/agent.mdx index 7bdcfc3e..d3378fac 100644 --- a/ja/use-dify/nodes/agent.mdx +++ b/ja/use-dify/nodes/agent.mdx @@ -1,118 +1,382 @@ --- -title: "エージェント" -description: "複雑なタスク実行のためにLLMにツールの自律制御を与える" +title: "Agent" +description: "LLM に複雑なタスクを自律的に完了させる" icon: "robot" --- ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/nodes/agent)を参照してください。 - -エージェントノードは、LLMにツールの自律的な制御権を与え、どのツールをいつ使用するかを反復的に決定できるようにします。すべてのステップを事前に計画する代わりに、エージェントは問題を動的に推論し、複雑なタスクを完了するために必要に応じてツールを呼び出します。 - - - Agent node interface - - -## エージェント戦略 - -エージェント戦略は、エージェントの思考と行動を定義します。モデルの能力とタスク要件に最も適したアプローチを選択してください。 - - - Agent strategies selection - - - - 大規模言語モデルのネイティブな関数呼び出し機能を使用して、toolsパラメータを通じてツール定義を直接渡します。大規模言語モデルは、組み込まれたメカニズムを使用して、いつどのようにツールを呼び出すかを決定します。 - - GPT-4、Claude 3.5、および関数呼び出しサポートが堅牢な他のモデルに最適です。 + + + [サンドボックスランタイム](/ja/use-dify/build/runtime#サンドボックスランタイム)では、Agent ノードは LLM に自律的なコマンドライン実行能力を与えます。ツールの呼び出し、スクリプトの実行、外部リソースへのアクセス、[ファイルシステム](/ja/use-dify/build/file-system)の操作、マルチモーダル出力の生成が可能です。 + + これにはトレードオフがあります:レスポンス時間が長くなり、トークン消費も増えます。シンプルなタスクをより速く効率的に処理するには、**[Agent モード](#コマンド実行の有効化(agent-モード))** をオフにしてこれらの機能を無効にできます。 + + ## モデルの選択 + + 設定済みのプロバイダーからタスクに最適なモデルを選択します。 + + 選択後、モデルパラメータを調整してレスポンスの生成方法を制御できます。利用可能なパラメータとプリセットはモデルによって異なります。 + + ## プロンプトの作成 + + モデルに入力の処理方法とレスポンスの生成方法を指示します。`/` を入力して変数やファイルシステム内のリソースを挿入したり、`@` を入力して [Dify ツール](/ja/use-dify/workspace/tools)を参照したりできます。 + + どこから始めればよいかわからない場合や、既存のプロンプトを改善したい場合は、AI アシスト付きプロンプトジェネレーターをお試しください。 + + + + プロンプトジェネレーターアイコン + + + プロンプトジェネレーターインターフェース + + + + ### 指示とメッセージの指定 + + システム指示を定義し、**メッセージを追加**をクリックしてユーザー/アシスタントメッセージを追加します。すべて順番にプロンプトとしてモデルに送信されます。 + + モデルと直接会話するイメージです: + + - **システム指示**はモデルのレスポンスルールを設定します——役割、トーン、行動ガイドライン。 + + - **ユーザーメッセージ**はモデルに送信する内容——質問、リクエスト、タスク。 + + - **アシスタントメッセージ**はモデルのレスポンスです。 + + ### 入力とルールの分離 + + システム指示で役割とルールを定義し、ユーザーメッセージで実際のタスク入力を渡します。例: + + ```bash wrap + # システム指示 + あなたは子ども向けの物語作家です。ユーザーの入力に基づいて物語を書いてください。簡単な言葉と温かいトーンを使ってください。 + + # ユーザーメッセージ + ウサギと恥ずかしがり屋のハリネズミが友達になる、おやすみ前のお話を書いてください。 + ``` + + すべてをシステム指示にまとめる方が簡単に見えるかもしれませんが、役割定義とタスク入力を分離することで、モデルにとってより明確な構造になります。 + + ### 対話履歴のシミュレーション + + アシスタントメッセージがモデルのレスポンスなら、なぜ手動で追加するのか疑問に思うかもしれません。 + + ユーザーメッセージとアシスタントメッセージを交互に追加することで、プロンプト内に対話履歴をシミュレーションできます。モデルはこれらを過去のやり取りとして扱い、動作の誘導に役立ちます。 + + ### 上流 LLM からの対話履歴のインポート + + **対話履歴の追加**をクリックして、上流の Agent ノードから対話履歴をインポートします。これによりモデルは上流で何が起こったかを把握し、そのノードが中断したところから続けることができます。 + + 対話履歴には**ユーザー**メッセージ、**アシスタント**メッセージ、**ツール**メッセージが含まれます。Agent ノードの `context` 出力変数で確認できます。 + + + システム指示はノード固有のため含まれません。 + + + 複数の Agent ノードを連結する場合に有用です: + + - 対話履歴をインポートしない場合、下流ノードは上流ノードの最終出力のみを受け取り、それがどのように導き出されたかはわかりません。 + + - 対話履歴をインポートすると、プロセス全体が見えます:ユーザーが何を質問したか、どのツールが呼び出されたか、どのような結果が返されたか、モデルがどのように推論したか。 + + **自動追加されるユーザーメッセージで新しいタスクを指定してください。** インポートされた履歴は現在のノードのメッセージの前に追加されるため、モデルはこれを1つの連続した会話として認識します。インポートされた履歴は通常アシスタントメッセージで終わるため、モデルは次に何をすべきかを知るためのフォローアップユーザーメッセージが必要です。 + + + + 2つの Agent ノードが順番に実行されるとします:Agent A はデータを分析してチャート画像を生成し、サンドボックスの出力フォルダーに保存します。Agent B はこれらのチャートを含む最終レポートを作成します。 + + Agent B が Agent A の最終テキスト出力のみを受け取る場合、分析結論はわかりますが、どのファイルが生成されどこに保存されているかはわかりません。 + + Agent A の対話履歴をインポートすることで、Agent B はツールメッセージから正確なファイルパスを確認でき、チャートをレポートに埋め込むことができます。 + + Agent A の対話履歴インポート後に Agent B が受け取る完全なメッセージシーケンス: + + ```bash wrap + # Agent B のシステム指示 + 1. System: "あなたはレポートデザイナーです。ビジュアルを埋め込んだプロフェッショナルなレポートを作成してください。" + + # Agent A から + 2. User: "Q3 の売上データを分析し、可視化を作成してください。" + + # Agent A から + 3. Tool: [bash] 棒グラフを作成:/output/q3_sales_by_region.png + 4. Tool: [bash] トレンドラインを作成:/output/q3_monthly_trend.png + + # Agent A から + 5. Assistant: "Q3 の売上データを分析し、2つのチャートを作成しました..." + + # Agent B のユーザーメッセージ + 6. User: "生成されたチャートを含む PDF レポートを作成してください。" + ``` + + Agent A の対話履歴をインポートすることで、Agent B はどのファイルが存在し、どこにあるかを正確に把握し、レポートに直接埋め込むことができます。 + + + + + + 例 1 の続きとして、生成された PDF レポートをエンドユーザーに提供したいとします。アーティファクトはエンドユーザーに直接公開できないため、3つ目の Agent ノードでファイルを抽出する必要があります。 + + Agent C の設定: + + - **Agent モード**:オフ + + - **構造化出力**:有効にし、ファイル型の出力変数を追加 + + - **対話履歴**:Agent B からインポート + + - **ユーザーメッセージ**:「生成された PDF を出力してください。」 + + Agent B の対話履歴インポート後に Agent C が受け取る完全なメッセージシーケンス: + ```bash wrap + # Agent C のシステム指示(省略可) + 1. System:(なし) + + # Agent A からのユーザーメッセージとツールメッセージ(簡潔にするため省略) + 2. ... + + # Agent B から + 3. User: "生成されたチャートを含む PDF レポートを作成してください。" + + # Agent B から + 4. Tool: [bash] レポートを作成:/output/q3_sales_report.pdf + + # Agent B から + 5. Assistant: "チャートを埋め込んだ PDF レポートを作成しました..." + + # Agent C のユーザーメッセージ + 6. User: "生成された PDF を出力してください。" + ``` + + Agent C はインポートされた対話履歴からファイルパスを特定し、ファイル変数として出力します。その後、回答ノードまたは出力ノードでこの変数を参照し、ファイルをエンドユーザーに提供できます。 + + + + ### Jinja2 を使った動的プロンプトの作成 + + [Jinja2](https://jinja.palletsprojects.com/en/stable/) テンプレートを使って、プロンプトに条件分岐、ループ、その他のロジックを追加できます。例えば、変数の値に応じて指示をカスタマイズできます。 + + + ```jinja2 wrap + あなたは + {% if user_level == "beginner" %}忍耐強く親切な + {% elif user_level == "intermediate" %}プロフェッショナルで効率的な + {% else %}シニアエキスパートレベルの + {% endif %} アシスタントです。 + + {% if user_level == "beginner" %} + わかりやすい言葉で説明してください。必要に応じて例を示してください。専門用語は避けてください。 + {% elif user_level == "intermediate" %} 一部の専門用語を使用できますが、適切な説明を付けてください。実践的なアドバイスとベストプラクティスを提供してください。 + {% else %} 技術的な詳細に踏み込み、専門用語を使用してください。高度なユースケースと最適化ソリューションに焦点を当ててください。 + {% endif %} + ``` + + + デフォルトでは、すべての可能な指示をモデルに送信し、条件を説明し、どれに従うかをモデルに判断させる必要がありますが、この方法は必ずしも信頼できるとは限りません。 + + Jinja2 テンプレートを使えば、定義された条件に合致する指示のみが送信されるため、動作が予測可能になり、トークンの使用量も削減されます。 + + ## コマンド実行の有効化(Agent モード) + + **Agent モード**をオンにすると、モデルが組み込みの bash ツールを使ってサンドボックスランタイムでコマンドラインを実行できるようになります。 + + これはすべての高度な機能の基盤です:モデルが他のツールを呼び出す、ファイル操作を行う、スクリプトを実行する、外部リソースにアクセスする——これらすべては bash ツールを呼び出して基盤となるコマンドラインを実行することで行われます。 + + これらの機能が不要なシンプルなタスクでは、**Agent モード**をオフにすることで、より高速なレスポンスと低いトークンコストを実現できます。 + + **最大イテレーション回数の調整** + + **高度な設定**の**最大イテレーション回数**は、モデルが1つのリクエストに対して推論-行動サイクル(思考、ツール呼び出し、結果処理)を繰り返す回数を制限します。 + + 複数のツール呼び出しを必要とする複雑なマルチステップタスクでは、この値を増やしてください。値が大きいほどレイテンシとトークンコストが増加します。 + + ## 対話メモリの有効化(チャットフローのみ) + + + メモリはこのノード内でのみ有効です。異なる会話間では保持されません。 + + + **メモリ**を有効にすると最近の対話が保持され、LLM がフォローアップの質問に一貫して回答できるようになります。 + + 現在のユーザークエリとアップロードされたファイルを渡すためのユーザーメッセージが自動的に追加されます。これはメモリが最近のユーザー-アシスタント間のやり取りを保存することで機能するためです。ユーザークエリがユーザーメッセージを通じて渡されないと、ユーザー側で記録するものがなくなります。 + + **ウィンドウサイズ**は保持する最近のやり取り数を制御します。例えば `5` は、直近の5組のユーザークエリと LLM レスポンスを保持します。 + + ## コンテキストの追加 + + **高度な設定** > **コンテキスト**で、LLM に追加の参照情報を提供し、ハルシネーションを減らしてレスポンスの精度を向上させます。 + + 一般的なパターン:ナレッジ検索ノードから[検索結果を渡す](/ja/use-dify/nodes/knowledge-retrieval#llm-ノードとの連携)ことで、検索拡張生成(RAG)を実現します。 + + ## マルチモーダル入力の処理 + + マルチモーダル対応モデルに画像、音声、動画、ドキュメントを処理させるには、以下のいずれかの方法を選択します: + + - プロンプトでファイル変数を直接参照する。 + + - **高度な設定**で **Vision** を有効にし、ファイル変数を選択する。 + + **解像度**は画像処理の詳細レベルのみを制御します: + + - **高**:複雑な画像でより高精度だが、より多くのトークンを使用 + + - **低**:シンプルな画像でより高速、より少ないトークンで処理 + + マルチモーダル機能を持たないモデルの場合は、[サンドボックスへのファイルアップロード](/ja/use-dify/nodes/upload-file-to-sandbox)ノードでファイルをサンドボックスにアップロードします。Agent ノードがコマンドラインを実行してツールのインストールやスクリプトの実行を行い、モデルがネイティブに処理できないファイル形式も処理できます。 + + ## 思考プロセスとツール呼び出しをレスポンスから分離 + + モデルの思考プロセスやツール呼び出しを含まないクリーンなレスポンスを取得するには、`generations.content` 出力変数を使用します。 + + `generations` 変数自体にはすべての中間ステップと最終レスポンスが含まれます。 + + ## 構造化出力の強制 + + 指示で出力形式を記述しても、一貫性のない結果が生じることがあります。より信頼性の高いフォーマットを実現するには、構造化出力を有効にして定義済みの JSON スキーマを強制します。 + + + ネイティブ JSON をサポートしないモデルの場合、Dify はスキーマをプロンプトに含めますが、厳密な遵守は保証されません。 + + + 構造化出力 + + 1. **出力変数**の横で**構造化**をオンにします。出力変数リストの末尾に `structured_output` 変数が表示されます。 + + 2. **設定**をクリックし、以下のいずれかの方法で出力スキーマを定義します。 + + - **ビジュアルエディター**:ノーコードインターフェースでシンプルな構造を定義。対応する JSON スキーマが自動生成されます。 + + - **JSON Schema**:ネストされたオブジェクト、配列、バリデーションルールを含む複雑な構造のスキーマを直接記述。 + + - **AI 生成**:自然言語でニーズを記述し、AI にスキーマを生成させる。 + + - **JSON インポート**:既存の JSON オブジェクトを貼り付けて、対応するスキーマを自動生成。 + + + ファイル型の構造化出力変数を使用して、サンドボックスからアーティファクトを抽出し、エンドユーザーに提供できます。詳細は[エンドユーザーへのアーティファクトの出力](/ja/use-dify/build/file-system#エンドユーザーへのアーティファクトの出力)を参照してください。 + + + ## エラー処理 + + 一時的な問題(ネットワークの不具合など)に対する自動リトライ、またはエラーが続く場合にワークフローの実行を継続するための代替エラー処理戦略を設定します。 + + エラー処理 + - - - 明示的な推論ステップを通じて大規模言語モデルを導く構造化されたプロンプトを使用します。透明な行動→観察**サイクルに従います。 - - ネイティブな関数呼び出し機能を持たないモデルや、明示的な推論トレースが必要な場合によく機能します。 + + + クラシックランタイムでは、Agent ノードは LLM にツールの自律的な制御権を与え、どのツールをいつ使用するかを反復的に判断できるようにします。Agent はすべてのステップを事前に計画するのではなく、問題を動的に推論し、必要に応じてツールを呼び出して複雑なタスクを完了します。 + + + Agent node interface + + + ## Agent 戦略 + + Agent 戦略は Agent の思考と行動の方法を定義します。モデルの能力とタスクの要件に最も適したアプローチを選択してください。 + + + Agent strategies selection + + + + + LLM のネイティブな Function Calling 機能を使用し、tools パラメータを通じてツール定義を直接渡します。LLM は組み込みメカニズムを使って、いつどのようにツールを呼び出すかを判断します。 + + GPT-4、Claude 3.5 など、強力な Function Calling サポートを持つモデルに最適です。 + + + + 構造化されたプロンプトを使い、LLM を明示的な推論ステップに導きます。**思考 → 行動 → 観察**のサイクルに従い、透明な意思決定を行います。 + + ネイティブな Function Calling 機能を持たないモデルや、明示的な推論トレースが必要な場合に適しています。 + + + + + **マーケットプレイス → Agent 戦略**から追加の戦略をインストールするか、[コミュニティリポジトリ](https://github.com/langgenius/dify-plugins)にカスタム戦略を提供してください。 + + + + Function calling setup + + + ## 設定 + + ### モデル選択 + + 選択した Agent 戦略をサポートする LLM を選択します。より高性能なモデルは複雑な推論をより良く処理しますが、イテレーションあたりのコストが高くなります。Function Calling 戦略を使用する場合は、モデルが Function Calling をサポートしていることを確認してください。 + + ### ツール設定 + + Agent がアクセスできるツールを設定します。各ツールには以下が必要です: + + **認証** - ワークスペースで設定された外部サービスの API キーと認証情報 + + **説明** - ツールの機能と使用タイミングの明確な説明(これが Agent の意思決定を導きます) + + **パラメータ** - 適切なバリデーションを伴う必須およびオプションの入力 + + ### 指示とコンテキスト + + 自然言語の指示で Agent の役割、目標、コンテキストを定義します。上流のワークフローノードから変数を参照するには Jinja2 構文を使用します。 + + **クエリ**は Agent が処理すべきユーザー入力またはタスクを指定します。以前のワークフローノードからの動的コンテンツを使用できます。 + + + Agent configuration interface + + + ### 実行制御 + + **最大イテレーション回数**は無限ループを防ぐための安全上限を設定します。タスクの複雑さに応じて設定してください——シンプルなタスクは3〜5回、複雑な調査は10〜15回が目安です。 + + **メモリ**は TokenBufferMemory を使って Agent が記憶する過去のメッセージ数を制御します。メモリウィンドウを大きくするとコンテキストが増えますが、トークンコストも増加します。これにより、ユーザーが以前のアクションを参照できる会話の連続性が実現します。 + + ### ツールパラメータの自動生成 + + ツールには**自動生成**または**手動入力**として設定されたパラメータがあります。自動生成パラメータ(`auto: false`)は Agent が自動的に設定し、手動入力パラメータはツールの永続設定の一部となる明示的な値が必要です。 + + - - - **マーケットプレイス → エージェント戦略**から追加戦略をインストールするか、[コミュニティリポジトリ](https://github.com/langgenius/dify-plugins)にカスタム戦略を貢献してください。 - - - - Function calling setup - - -## 設定 - -### モデル選択 - -選択したエージェント戦略をサポートする大規模言語モデルを選択してください。より高性能なモデルは複雑な推論をより良く処理しますが、反復あたりのコストが高くなります。その戦略を使用する場合は、モデルが関数呼び出しをサポートしていることを確認してください。 - -### ツール設定 - -エージェントがアクセスできるツールを設定します。各ツールには以下が必要です: - -**認証** - ワークスペースで設定された外部サービス用のAPIキーと認証情報 - -**説明** - ツールの機能と使用タイミングの明確な説明(これがエージェントの意思決定を導きます) - -**パラメータ** - 適切な検証を伴うツールが受け入れる必須およびオプションの入力 - -### 指示とコンテキスト - -自然言語の指示を使用してエージェントの役割、目標、コンテキストを定義します。上流のワークフローノードから変数を参照するには、Jinja2構文を使用します。 - -**クエリ**は、エージェントが作業すべきユーザー入力またはタスクを指定します。これは以前のワークフローノードからの動的コンテンツにすることができます。 - - - Agent configuration interface - - -### 実行制御 - -**最大反復数**は、無限ループを防ぐための安全制限を設定します。タスクの複雑さに基づいて設定してください - 単純なタスクには3-5回の反復が必要ですが、複雑な調査には10-15回必要な場合があります。 - -**メモリ**は、TokenBufferMemoryを使用してエージェントが記憶する過去のメッセージ数を制御します。より大きなメモリウィンドウはより多くのコンテキストを提供しますが、トークンコストが増加します。これにより、ユーザーが以前のアクションを参照できる会話の継続性が可能になります。 - -### ツールパラメータ自動生成 - -ツールには**自動生成**または**手動入力**として設定されたパラメータがあります。自動生成パラメータ(`auto: false`)はエージェントによって自動的に設定され、手動入力パラメータはツールの永続的な設定の一部となる明示的な値が必要です。 - -