チャットボット
チャットアプリケーションはセッションの持続性をサポートしており、以前のチャット履歴を応答のコンテキストとして使用できます。これは、チャットボットやカスタマーサービス AI などに適用できます。
ベース URL
認証
サービス API はAPI-Key
認証を使用します。
すべての API リクエストにおいて、以下のようにAuthorization
HTTP ヘッダーに API キーを含めてください:
チャットメッセージを送信 POST /chat-messages
チャットアプリケーションにリクエストを送信します。
リクエストボディ
query
(string, required): ユーザー入力/質問内容inputs
(object): アプリで定義されたさまざまな変数値の入力を許可します。inputs
パラメータには複数のキー/値ペアが含まれ、各キーは特定の変数に対応し、各値はその変数の特定の値です。デフォルトは{}
response_mode
(string, required): 応答の返却モードを指定します。サポートされているモード:streaming
ストリーミングモード(推奨)、SSE(Server-Sent Events)を通じてタイプライターのような出力を実装します。blocking
ブロッキングモード、実行完了後に結果を返します。(プロセスが長い場合、リクエストが中断される可能性があります) Cloudflare の制限により、100 秒後に応答がない場合、リクエストは中断されます。
user
(string, required): ユーザー識別子、エンドユーザーのアイデンティティを定義するために使用されます。アプリケーション内で開発者によって一意に定義される必要があります。conversation_id
(string): 会話 ID、以前のチャット記録に基づいて会話を続けるには、前のメッセージの conversation_id を渡す必要があります。files
(array[object]): ファイルリスト、テキストの理解と質問への回答を組み合わせたファイル(画像)の入力に適しており、モデルがビジョン機能をサポートしている場合にのみ利用可能です。type
(string): サポートされているタイプ:image
(現在は画像タイプのみサポート)transfer_method
(string): 転送方法、画像 URL の場合はremote_url
/ ファイルアップロードの場合はlocal_file
url
(string): 画像 URL(転送方法がremote_url
の場合)upload_file_id
(string): アップロードされたファイル ID、事前にファイルアップロード API を通じて取得する必要があります(転送方法がlocal_file
の場合)
auto_generate_name
(bool): タイトルを自動生成します。デフォルトはtrue
です。
応答
response_mode
がブロッキングの場合、ChatCompletionResponse
オブジェクトを返します。
response_mode
がストリーミングの場合、ChunkChatCompletionResponse
ストリームを返します。
ChatCompletionResponse
完全なアプリ結果を返します。Content-Type
はapplication/json
です。
event
(string): イベントタイプ、固定でmessage
task_id
(string): タスク ID、リクエスト追跡と以下の Stop Generate API に使用id
(string): ユニーク IDmessage_id
(string): 一意のメッセージ IDconversation_id
(string): 会話 IDmode
(string): アプリモード、chat
として固定answer
(string): 完全な応答内容metadata
(object): メタデータusage
(object): モデル使用情報 (詳細は Usage オブジェクトを参照)retriever_resources
(array[object]): 引用と帰属リスト (詳細は RetrieverResource オブジェクトを参照)
created_at
(int): メッセージ作成タイムスタンプ、例:1705395332
ChunkChatCompletionResponse
アプリによって出力されたストリームチャンクを返します。Content-Type
はtext/event-stream
です。
各ストリーミングチャンクはdata:
で始まり、2 つの改行文字\n\n
で区切られます。以下のように表示されます:
ストリーミングチャンクの構造はevent
に応じて異なります:
event: message
: LLMはテキストチャンクイベントを返します。つまり、完全なテキストがチャンク形式で出力されます。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDconversation_id
(string): 会話IDanswer
(string): LLMが返したテキストチャンク内容created_at
(int): 作成タイムスタンプ
event: agent_message
: LLMはテキストチャンクイベントを返します(エージェントモードでのみサポート)。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDconversation_id
(string): 会話IDanswer
(string): LLMが返したテキストチャンク内容created_at
(int): 作成タイムスタンプ
event: tts_message
: TTSオーディオストリームイベント。内容はMp3形式のオーディオブロックで、base64文字列としてエンコードされています。(自動再生が有効な場合のみ利用可能)task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDaudio
(string): base64エンコードされたオーディオコンテンツcreated_at
(int): 作成タイムスタンプ
event: tts_message_end
: TTSオーディオストリーム終了イベント。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDaudio
(string): 空の文字列created_at
(int): 作成タイムスタンプ
event: agent_thought
: エージェントの思考(エージェントモードでのみサポート)。id
(string): エージェント思考IDtask_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDposition
(int): 現在のエージェント思考の位置thought
(string): LLMが考えていることobservation
(string): ツール呼び出しからの応答tool
(string): 呼び出されたツールのリスト(;で区切られる)tool_input
(string): ツールの入力(JSON形式)created_at
(int): 作成タイムスタンプmessage_files
(array[string]): この思考ステップに関連付けられたファイルIDのリスト。各IDは、対応するmessage_file
イベントで詳細が提供されるファイルを参照します。conversation_id
(string): 会話ID
event: message_file
: メッセージファイルイベント。ツールによって新しいファイルが作成されました。id
(string): ファイル一意IDtype
(string): ファイルタイプ(現在は”image”のみ)belongs_to
(string): 所属(ここでは’assistant’のみ)url
(string): ファイルのリモートURLconversation_id
(string): 会話ID
event: message_end
: メッセージ終了イベント。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDconversation_id
(string): 会話IDmetadata
(object): メタデータusage
(object): モデル使用情報retriever_resources
(array[object]): 引用と帰属リスト
event: message_replace
: メッセージ内容置換イベント。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDconversation_id
(string): 会話IDanswer
(string): 置換内容created_at
(int): 作成タイムスタンプ
event: error
: エラーイベント。task_id
(string): タスクIDmessage_id
(string): 一意のメッセージIDstatus
(int): HTTPステータスコードcode
(string): エラーコードmessage
(string): エラーメッセージ
event: ping
: 接続維持のためのpingイベント(10秒ごと)。
エラー
- 404, 会話が存在しません
- 400,
invalid_param
, 異常なパラメータ入力 - 400,
app_unavailable
, アプリ構成が利用できません - 400,
provider_not_initialize
, 利用可能なモデル資格情報構成がありません - 400,
provider_quota_exceeded
, モデル呼び出しクォータが不足しています - 400,
model_currently_not_support
, 現在のモデルは利用できません - 400,
completion_request_error
, テキスト生成に失敗しました - 500, 内部サーバーエラー
ファイルアップロード POST /files/upload
メッセージ送信時に使用するためのファイルをアップロードします(現在は画像のみサポート)。画像とテキストのマルチモーダル理解を可能にします。 png、jpg、jpeg、webp、gif 形式をサポートしています。 アップロードされたファイルは現在のエンドユーザーのみが使用できます。
リクエストボディ
このインターフェースはmultipart/form-data
リクエストを必要とします。
file
(File, required): アップロードするファイル。user
(string, required): ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。
応答
アップロードが成功すると、サーバーはファイルの ID と関連情報を返します。
id
(uuid): IDname
(string): ファイル名size
(int): ファイルサイズ(バイト)extension
(string): ファイル拡張子mime_type
(string): ファイルの MIME タイプcreated_by
(uuid): エンドユーザー IDcreated_at
(timestamp): 作成タイムスタンプ、例:1705395332
エラー
- 400,
no_file_uploaded
, ファイルが提供されなければなりません - 400,
too_many_files
, 現在は 1 つのファイルのみ受け付けます - 400,
unsupported_preview
, ファイルはプレビューをサポートしていません - 400,
unsupported_estimate
, ファイルは推定をサポートしていません - 413,
file_too_large
, ファイルが大きすぎます - 415,
unsupported_file_type
, サポートされていない拡張子、現在はドキュメントファイルのみ受け付けます - 503,
s3_connection_failed
, S3 サービスに接続できません - 503,
s3_permission_denied
, S3 にファイルをアップロードする権限がありません - 503,
s3_file_too_large
, ファイルが S3 のサイズ制限を超えています - 500, 内部サーバーエラー
生成停止 POST /chat-messages/:task_id/stop
ストリーミングモードでのみサポートされています。
パスパラメータ
task_id
(string, required): タスク ID、ストリーミングチャンクの返り値から取得できます。
リクエストボディ
user
(string, required): ユーザー識別子、エンドユーザーのアイデンティティを定義するために使用され、メッセージ送信インターフェースで渡されたユーザーと一致している必要があります。
応答
result
(string): 常に”success”を返します。
メッセージフィードバック POST /messages/:message_id/feedbacks
エンドユーザーはフィードバックメッセージを提供でき、アプリケーション開発者が期待される出力を最適化するのに役立ちます。
パスパラメータ
message_id
(string, required): メッセージ ID
リクエストボディ
rating
(string): アップボートはlike
、ダウンボートはdislike
、アップボートの取り消しはnull
。user
(string, required): ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。content
(string): メッセージのフィードバックです。
応答
result
(string): 常に”success”を返します。
次の推奨質問 GET /messages/{message_id}/suggested
現在のメッセージに対する次の質問の提案を取得します。
パスパラメータ
message_id
(string, required): メッセージ ID
クエリパラメータ
user
(string, required): ユーザー識別子、エンドユーザーのアイデンティティを定義するために使用され、統計のために使用されます。アプリケーション内で開発者によって一意に定義される必要があります。
会話履歴メッセージを取得 GET /messages
スクロールロード形式で過去のチャット記録を返し、最初のページは最新の{limit}
メッセージを返します。つまり、逆順です。
クエリパラメータ
conversation_id
(string, required): 会話 IDuser
(string, required): ユーザー識別子first_id
(string): 現在のページの最初のチャット記録の ID、デフォルトは null です。limit
(int): 1 回のリクエストで返すチャット履歴メッセージの数、デフォルトは 20 です。
応答
data
(array[object]): メッセージリストid
(string): メッセージ IDconversation_id
(string): 会話 IDinputs
(object): ユーザー入力パラメータquery
(string): ユーザー入力/質問内容message_files
(array[object]): メッセージファイルid
(string): IDtype
(string): ファイルタイプ(例:image
)url
(string): プレビュー画像 URLbelongs_to
(string): 所属(user
またはassistant
)
agent_thoughts
(array[object]): エージェントの思考(基本アシスタントの場合は空)id
(string): エージェント思考 IDmessage_id
(string): 一意のメッセージ IDposition
(int): 現在のエージェント思考の位置thought
(string): LLM が考えていることobservation
(string): ツール呼び出しからの応答tool
(string): 呼び出されたツールのリスト(;で区切られる)tool_input
(string): ツールの入力(JSON 形式)created_at
(int): 作成タイムスタンプmessage_files
(array[string]): この思考ステップに関連付けられたファイル ID のリスト。
answer
(string): 応答メッセージ内容created_at
(timestamp): 作成タイムスタンプfeedback
(object): フィードバック情報rating
(string):like
/dislike
retriever_resources
(array[object]): 引用と帰属リスト
has_more
(bool): 次のページがあるかどうかlimit
(int): 返されたアイテムの数
会話を取得 GET /conversations
現在のユーザーの会話リストを取得し、デフォルトで最新の 20 件を返します。
クエリパラメータ
user
(string, required): ユーザー識別子last_id
(string, optional): 現在のページの最後のレコードの ID、デフォルトは null です。limit
(int, optional): 1 回のリクエストで返すレコードの数、デフォルトは最新の 20 件です。最大 100、最小 1。sort_by
(string, optional): ソートフィールド、デフォルト:-updated_at
(更新時間で降順にソート)。利用可能な値:created_at
,-created_at
,updated_at
,-updated_at
。フィールドの前の記号は順序または逆順を表し、-
は逆順を表します。
応答
data
(array[object]): 会話のリストid
(string): 会話 IDname
(string): 会話名inputs
(object): ユーザー入力パラメータintroduction
(string): 紹介created_at
(timestamp): 作成タイムスタンプupdated_at
(timestamp): 更新タイムスタンプ
has_more
(bool): さらにレコードがあるかlimit
(int): 返されたエントリの数
会話を削除 DELETE /conversations/:conversation_id
会話を削除します。
パスパラメータ
conversation_id
(string, required): 会話 ID
リクエストボディ
user
(string, required): ユーザー識別子、開発者によって定義され、アプリケーション内で一意である必要があります。
応答
204 No Content
: 成功を示す HTTP ステータス。
会話の名前を変更 POST /conversations/:conversation_id/name
セッションの名前を変更します。セッション名は、複数のセッションをサポートするクライアントでの表示に使用されます。
パスパラメータ
conversation_id
(string, required): 会話 ID
リクエストボディ
name
(string, optional): 会話の名前。このパラメータは、auto_generate
がtrue
に設定されている場合、省略できます。auto_generate
(bool, optional): タイトルを自動生成します。デフォルトはfalse
です。user
(string, required): ユーザー識別子、開発者によって定義され、アプリケーション内で一意である必要があります。
応答
id
(string): 会話 IDname
(string): 会話名inputs
(object): ユーザー入力パラメータstatus
(string): 会話状態introduction
(string): 紹介created_at
(timestamp): 作成タイムスタンプupdated_at
(timestamp): 更新タイムスタンプ
会話変数の取得 GET /conversations/:conversation_id/variables
特定の会話から変数を取得します。このエンドポイントは、会話中に取得された構造化データを抽出するのに役立ちます。
パスパラメータ
conversation_id
(string, required): 変数を取得する会話の ID。
クエリパラメータ
user
(string, required): ユーザー識別子。開発者によって定義されたルールに従い、アプリケーション内で一意である必要があります。last_id
(string, optional): 現在のページの最後のレコードの ID、デフォルトは null です。limit
(int, optional): 1 回のリクエストで返すレコードの数、デフォルトは最新の 20 件です。最大 100、最小 1。
応答
limit
(int): ページごとのアイテム数has_more
(bool): さらにアイテムがあるかどうかdata
(array[object]): 変数のリストid
(string): 変数 IDname
(string): 変数名value_type
(string): 変数タイプ(文字列、数値、真偽値など)value
(string): 変数値description
(string): 変数の説明created_at
(int): 作成タイムスタンプupdated_at
(int): 最終更新タイムスタンプ
エラー
- 404,
conversation_not_exists
, 会話が見つかりません
音声からテキストへ POST /audio-to-text
このエンドポイントはmultipart/form-data
リクエストを必要とします。
リクエストボディ
file
(file, required): オーディオファイル。サポートされている形式:['mp3', 'mp4', 'mpeg', 'mpga', 'm4a', 'wav', 'webm']
。ファイルサイズ制限:15MB。user
(string, required): ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。
応答
text
(string): 出力テキスト
テキストから音声へ POST /text-to-audio
テキストを音声に変換します。
リクエストボディ
message_id
(string, optional): Dify によって生成されたテキストメッセージの場合、生成されたメッセージ ID を直接渡します。バックエンドはメッセージ ID を使用して対応するコンテンツを検索し、音声情報を直接合成します。message_id
とtext
が同時に提供される場合、message_id
が優先されます。text
(string, optional): 音声生成コンテンツ。message_id
がない場合は必須です。user
(string, required): ユーザー識別子、開発者によって定義され、アプリ内で一意である必要があります。
応答
成功すると、レスポンスボディは audio/wav
形式の音声データを含みます。
アプリケーションのパラメータ情報を取得 GET /parameters
ページに入る際に、機能、入力パラメータ名、タイプ、デフォルト値などの情報を取得するために使用されます。
応答
opening_statement
(string): 開始文suggested_questions
(array[string]): 開始時の推奨質問のリストsuggested_questions_after_answer
(object): 答えを有効にした後の質問を提案します。enabled
(bool): 有効かどうか
speech_to_text
(object): 音声からテキストへenabled
(bool): 有効かどうか
retriever_resource
(object): 引用と帰属enabled
(bool): 有効かどうか
annotation_reply
(object): 注釈返信enabled
(bool): 有効かどうか
user_input_form
(array[object]): ユーザー入力フォームの構成text-input
(object): テキスト入力コントロールlabel
(string): 変数表示ラベル名variable
(string): 変数 IDrequired
(bool): 必須かどうかdefault
(string): デフォルト値
paragraph
(object): 段落テキスト入力コントロールlabel
(string): 変数表示ラベル名variable
(string): 変数 IDrequired
(bool): 必須かどうかdefault
(string): デフォルト値
select
(object): ドロップダウンコントロールlabel
(string): 変数表示ラベル名variable
(string): 変数 IDrequired
(bool): 必須かどうかdefault
(string): デフォルト値options
(array[string]): オプション値
file_upload
(object): ファイルアップロード構成image
(object): 画像設定。現在サポートされている画像タイプ:png
,jpg
,jpeg
,webp
,gif
enabled
(bool): 有効かどうかnumber_limits
(int): 画像数の制限、デフォルトは 3transfer_methods
(array[string]): 転送方法のリスト(remote_url
,local_file
)。いずれかを選択する必要があります。
system_parameters
(object): システムパラメータfile_size_limit
(int): ドキュメントアップロードサイズ制限(MB)image_file_size_limit
(int): 画像ファイルアップロードサイズ制限(MB)audio_file_size_limit
(int): オーディオファイルアップロードサイズ制限(MB)video_file_size_limit
(int): ビデオファイルアップロードサイズ制限(MB)
アプリケーションのメタ情報を取得 GET /meta
このアプリケーションのツールのアイコンを取得するために使用されます。
応答
tool_icons
(object): ツールのアイコン。キーはツール名です。[tool_name]
(string | object): アイコンの定義。- 文字列の場合: アイコンの URL。
- オブジェクトの場合:
background
(string): 背景色 (16 進数形式)。content
(string): 絵文字。