APIサンプルコード

circle-exclamation

1. 事前準備

  1. Dify管理画面で対象のアプリケーションを開く。

  2. 左側メニューの 「APIアクセス」 をクリック。

  3. 右上の 「APIキー」 をクリックしてキーを生成・コピーする。

2. APIの基本仕様

  • エンドポイント: POST /v1/chat-messages

  • ヘッダー:

    • Authorization: Bearer {YOUR_API_KEY}

    • Content-Type: application/json

リクエストパラメータ

パラメータ名
必須
説明

query

string

Yes

ユーザーからの入力テキスト

user

string

Yes

ユーザー識別子(開発者側で定義する一意のID)

response_mode

string

Yes

blocking(一括返信)または streaming(逐次返信)

inputs

object

Yes

プロンプト内の変数(変数がなければ空のオブジェクト{}で可)

conversation_id

string

No

会話を継続する場合に指定(初回は未指定)

3. 基本的なAPI呼び出し(Blocking)

response_mode: "blocking" は、AIの生成完了を待ってからレスポンスを一括で受け取る方式です。実装が単純で、音声合成(TTS)などと連携する場合に適しています。

3.1 cURL

3.2 Python (requests)

3.3 JavaScript (Node.js / axios)

4. ストリーミングレスポンス(Streaming)

response_mode: "streaming" は、応答を逐次受け取る方式です。UXを向上させる(文字が打たれるように表示する)場合に利用します。 レスポンスは Server-Sent Events (SSE) 形式で返却されます。

4.1 Python(Streaming処理の例)

5. レスポンスフィールドの例

成功時 (Blocking Mode)

エラー時

6. デジタルヒューマン・外部連携のポイント

デジタルヒューマンや音声アシスタントと連携する場合の推奨設計です。

  1. Blocking Modeの推奨: response_mode: "blocking"を使用することで、完全な文章を取得してからTTS(音声合成)エンジンに渡すことができます。これにより、音声の途切れを防げます。

  2. Conversation IDの管理: レスポンスに含まれるconversation_idを保存し、次回のAPIリクエストに含めることで、文脈(コンテキスト)を維持した会話が可能になります。

  3. タイムアウト設定: LLMの生成には時間がかかる場合があるため、クライアント側のタイムアウト設定(timeout)は長め(例: 60秒以上)に設定することを推奨します。

最終更新