Difyで使える実装Tips集

はじめに

デジタルヒューマンとDify.ai(オープンソース版を含む)との接続で利用可能な機能について記載しています。

多言語対応

Difyの多言語対応は、Chatflowの初期パラメータを設定することで実現できます。

 

設定手順

Notion image
 
  1. DifyのChatflowで初期パラメータlangを設定します。langパラメータをChatflowの入力フィールドに設定すると、音声認識時に検出された言語コードがデジタルヒューマン プラットフォームから自動的に渡されます。
 
 
Notion image
 
 
  1. LLMのプロンプトでlangパラメータを挿入することで、応答する言語を制御できます。
 
 

instructions生成

 

デジタルヒューマンのコンポーネントを制御するために、LLMにinstructions構文を生成させ、これをフロントエンドへデータとして渡して処理を行います。

 

instructinos構文とは

 

LLMに特定の文字列を出力させることで、Difyプロファイルでinstructionsとして解釈できる構文を生成できます。

@{instructions-start}<instructions-json>@{instructions-end}

<instructions-json>に実際のJSONを生成させるように指示します。

 

instructions構文の制約条件

 
  1. ストリーミング接続を使用している場合、構文内で区切り文字列を使うことはできません。区切り文字列を生成すると、その時点で発話要求が実行されてしまうため、区切り文字を含まないようにプロンプトで適切に制御する必要があります
  1. 構文の開始(@{instructions-start})と構文の終了(@{instructions-end})は、必ず正確にこれらの文字列を使用して生成してください。
  1. <instructions-json>が有効なJSONとして解析できない場合、画面表示は行われません。
⚠️

その他の推奨事項

・画面表示の構文は、発話内容の生成が完了した後、最後に出力してください。

 

instructionsでできること

  • 画面に情報やコンテンツを表示する
  • カスタムメタデータを追加・変更する
 

コンテンツレンダリングエリアへの画面表示

 

プロンプト例

# 応答出力のルール 
- あなたは、画面に付属の情報を表示出すことができます。解答内容では表示したかのような回答をしてください。また、画面表示のルールを遵守してください。

## 画面表示のルール
- あなたは、画面表示構文を出力することで、あなたの発話内容に合わせて、画面に付属の情報を出すことができます。
- 画面表示構文は必ず一番最後に出力してください。
- 画面表示構文は、'@{instructions-start}'と宣言し、jsonを記載し、'@{instructions-end}'で閉じる以下の文字列です。
'@{instructions-start}<json>@{instructions-end}'
- 画面表示構文の<json>は以下の二通りで、画面表示をおこなう場合は1、画面表示を行わない場合は2を使用してください。
    1. { "instructions":{ "displayHtml":{"html":<ここに表示したいHTMLを書く> } } }
    2. { "instructions":{ "hideContent":true } }
- htmlには、制約があり[。,!,?]は内部で使用することは禁止されています。これらを生成すると、ユーザーに甚大な不利益を与えるので注意してください。

----- 以下は使用時に合わせて書き換えてください -----

- htmlでは、<context>で提供されるURLを<iframe>を使用して表示してください。また、何らかの理由によりiframeが表示できない場合も考えられるため、<a target='_blank'>を使用したリンクも作成してください。
- 画面表示例 : @{instructions-start}{ "instructions":{ "displayHtml":{"html":"<iframe src='https://www.example.com/' width='100%' height='500px'></iframe><a href='https://www.example.com/' target='_blank'>表示されない場合はこちら</a>" } } }@{instructions-end}
 

AI生成された文章

はい。たとえばこのような表示ができますよ。

@{instructions-start}
{
  "instructions": {
    "displayHtml": {
      "html": "<a href='https://www.example.com/' target='_blank'>画面表示例</a>"
    }
  }
}
@{instructions-end}
 

生成された場合のコンテンツ表示

Notion image
 

カスタムメタデータの追加・更新

 
プロンプト例
# テスト
テストを行っていると言われた場合には、最後に必ず以下を出力してください。
@{instructions-start}
{"instructions": {"customMetadata":{"test":"true"}}}
@{instructions-end}

LLMで生成された文章

こんにちは<uneeq:action_wavehello />!テスト中なんですね。それでは、指定のある文章を生成しますね。

@{instructions-start}
{"instructions": {"customMetadata":{"test":"true"}}}
@{instructions-end}
 

生成された場合のカスタムデータ

Notion image
 
 

フロントエンドからカスタムメタデータの受け渡し

フロントエンドのuneeqOptions.customMetadataで設定したパラメータ、もしくはuneeqInstance.customPromptMetadata()を使用して登録したカスタムデータをDifyで利用できます。

  1. フロントエンドでカスタムデータを登録する方法は2つあります: ・uneeqOptions.customMetadataにパラメータを設定 ・uneeqInstance.customPromptMetadata()を使用して登録
    1. Notion image
      Notion image
       
 
  1. DifyのChatBotのStartノードで、カスタムメタデータのパラメータ名と一致する入力フィールドを設定します。
    1. Notion image
 
  1. 設定したカスタムメタデータを活用する。カスタムメタデータの受け渡しの設定が完了したら、変数として利用することで柔軟な制御が可能になります。
 
 
お役に立ちましたか?
😞
😐
🤩

最終更新日 July 30, 2025