You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

template_workflow.ja.mdx 39KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. import { CodeGroup } from '../code.tsx'
  2. import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from '../md.tsx'
  3. # ワークフローアプリ API
  4. ワークフローアプリケーションは、セッションをサポートせず、翻訳、記事作成、要約 AI などに最適です。
  5. <div>
  6. ### ベース URL
  7. <CodeGroup title="コード" targetCode={props.appDetail.api_base_url}>
  8. ```javascript
  9. ```
  10. </CodeGroup>
  11. ### 認証
  12. サービス API は `API-Key` 認証を使用します。
  13. <i>**API キーの漏洩を防ぐため、API キーはクライアント側で共有または保存せず、サーバー側で保存することを強くお勧めします。**</i>
  14. すべての API リクエストにおいて、以下のように `Authorization`HTTP ヘッダーに API キーを含めてください:
  15. <CodeGroup title="コード">
  16. ```javascript
  17. Authorization: Bearer {API_KEY}
  18. ```
  19. </CodeGroup>
  20. </div>
  21. ---
  22. <Heading
  23. url='/workflows/run'
  24. method='POST'
  25. title='ワークフローを実行'
  26. name='#Execute-Workflow'
  27. />
  28. <Row>
  29. <Col>
  30. ワークフローを実行します。公開されたワークフローがないと実行できません。
  31. ### リクエストボディ
  32. - `inputs` (object) 必須
  33. アプリで定義されたさまざまな変数値の入力を許可します。
  34. `inputs`パラメータには複数のキー/値ペアが含まれ、各キーは特定の変数に対応し、各値はその変数の特定の値です。
  35. ワークフローアプリケーションは少なくとも1つのキー/値ペアの入力を必要とします。値はファイルリストである場合もあります。
  36. ファイルリストは、テキスト理解と質問への回答を組み合わせたファイルの入力に適しています。モデルがファイルの解析と理解機能をサポートしている場合にのみ使用できます。
  37. 変数がファイルリストの場合、リストの各要素は以下の属性を持つ必要があります。
  38. - `type` (string) サポートされているタイプ:
  39. - `document` ('TXT', 'MD', 'MARKDOWN', 'PDF', 'HTML', 'XLSX', 'XLS', 'DOCX', 'CSV', 'EML', 'MSG', 'PPTX', 'PPT', 'XML', 'EPUB')
  40. - `image` ('JPG', 'JPEG', 'PNG', 'GIF', 'WEBP', 'SVG')
  41. - `audio` ('MP3', 'M4A', 'WAV', 'WEBM', 'AMR')
  42. - `video` ('MP4', 'MOV', 'MPEG', 'MPGA')
  43. - `custom` (他のファイルタイプ)
  44. - `transfer_method` (string) 転送方法、画像URLの場合は`remote_url` / ファイルアップロードの場合は`local_file`
  45. - `url` (string) 画像URL(転送方法が`remote_url`の場合)
  46. - `upload_file_id` (string) アップロードされたファイルID、事前にファイルアップロードAPIを通じて取得する必要があります(転送方法が`local_file`の場合)
  47. - `response_mode` (string) 必須
  48. 応答の返却モードを指定します。サポートされているモード:
  49. - `streaming` ストリーミングモード(推奨)、SSE([Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events))を通じてタイプライターのような出力を実装します。
  50. - `blocking` ブロッキングモード、実行完了後に結果を返します。(プロセスが長い場合、リクエストが中断される可能性があります)
  51. <i>Cloudflare の制限により、100 秒後に応答がない場合、リクエストは中断されます。</i>
  52. - `user` (string) 必須
  53. ユーザー識別子、エンドユーザーのアイデンティティを定義するために使用されます。
  54. アプリケーション内で開発者によって一意に定義される必要があります。
  55. - `files` (array[object]) オプション
  56. ### 応答
  57. `response_mode`が`blocking`の場合、CompletionResponse オブジェクトを返します。
  58. `response_mode`が`streaming`の場合、ChunkCompletionResponse ストリームを返します。
  59. ### CompletionResponse
  60. アプリの結果を返します。`Content-Type`は`application/json`です。
  61. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  62. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  63. - `data` (object) 結果の詳細
  64. - `id` (string) ワークフロー実行の ID
  65. - `workflow_id` (string) 関連するワークフローの ID
  66. - `status` (string) 実行のステータス、`running` / `succeeded` / `failed` / `stopped`
  67. - `outputs` (json) オプションの出力内容
  68. - `error` (string) オプションのエラー理由
  69. - `elapsed_time` (float) オプションの使用時間(秒)
  70. - `total_tokens` (int) オプションの使用トークン数
  71. - `total_steps` (int) デフォルト 0
  72. - `created_at` (timestamp) 開始時間
  73. - `finished_at` (timestamp) 終了時間
  74. ### ChunkCompletionResponse
  75. アプリによって出力されたストリームチャンクを返します。`Content-Type`は`text/event-stream`です。
  76. 各ストリーミングチャンクは`data:`で始まり、2 つの改行文字`\n\n`で区切られます。以下のように表示されます:
  77. <CodeGroup>
  78. ```streaming {{ title: '応答' }}
  79. data: {"event": "text_chunk", "workflow_run_id": "b85e5fc5-751b-454d-b14e-dc5f240b0a31", "task_id": "bd029338-b068-4d34-a331-fc85478922c2", "data": {"text": "\u4e3a\u4e86", "from_variable_selector": ["1745912968134", "text"]}}\n\n
  80. ```
  81. </CodeGroup>
  82. ストリーミングチャンクの構造は`event`に応じて異なります:
  83. - `event: workflow_started` ワークフローが実行を開始
  84. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  85. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  86. - `event` (string) `workflow_started`に固定
  87. - `data` (object) 詳細
  88. - `id` (string) ワークフロー実行の一意の ID
  89. - `workflow_id` (string) 関連するワークフローの ID
  90. - `created_at` (timestamp) 作成タイムスタンプ、例:1705395332
  91. - `event: node_started` ノード実行開始
  92. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  93. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  94. - `event` (string) `node_started`に固定
  95. - `data` (object) 詳細
  96. - `id` (string) ワークフロー実行の一意の ID
  97. - `node_id` (string) ノードの ID
  98. - `node_type` (string) ノードのタイプ
  99. - `title` (string) ノードの名前
  100. - `index` (int) 実行シーケンス番号、トレースノードシーケンスを表示するために使用
  101. - `predecessor_node_id` (string) オプションのプレフィックスノード ID、キャンバス表示実行パスに使用
  102. - `inputs` (object) ノードで使用されるすべての前のノード変数の内容
  103. - `created_at` (timestamp) 開始のタイムスタンプ、例:1705395332
  104. - `event: text_chunk` テキストフラグメント
  105. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  106. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  107. - `event` (string) `text_chunk`に固定
  108. - `data` (object) 詳細
  109. - `text` (string) テキスト内容
  110. - `from_variable_selector` (array) テキスト生成元パス(開発者がどのノードのどの変数から生成されたかを理解するための情報)
  111. - `event: node_finished` ノード実行終了、同じイベントで異なる状態で成功または失敗
  112. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  113. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  114. - `event` (string) `node_finished`に固定
  115. - `data` (object) 詳細
  116. - `id` (string) ワークフロー実行の一意の ID
  117. - `node_id` (string) ノードの ID
  118. - `node_type` (string) ノードのタイプ
  119. - `title` (string) ノードの名前
  120. - `index` (int) 実行シーケンス番号、トレースノードシーケンスを表示するために使用
  121. - `predecessor_node_id` (string) オプションのプレフィックスノード ID、キャンバス表示実行パスに使用
  122. - `inputs` (object) ノードで使用されるすべての前のノード変数の内容
  123. - `process_data` (json) オプションのノードプロセスデータ
  124. - `outputs` (json) オプションの出力内容
  125. - `status` (string) 実行のステータス、`running` / `succeeded` / `failed` / `stopped`
  126. - `error` (string) オプションのエラー理由
  127. - `elapsed_time` (float) オプションの使用時間(秒)
  128. - `execution_metadata` (json) メタデータ
  129. - `total_tokens` (int) オプションの使用トークン数
  130. - `total_price` (decimal) オプションの総コスト
  131. - `currency` (string) オプション 例:`USD` / `RMB`
  132. - `created_at` (timestamp) 開始のタイムスタンプ、例:1705395332
  133. - `event: workflow_finished` ワークフロー実行終了、同じイベントで異なる状態で成功または失敗
  134. - `task_id` (string) タスク ID、リクエスト追跡と以下の Stop Generate API に使用
  135. - `workflow_run_id` (string) ワークフロー実行の一意の ID
  136. - `event` (string) `workflow_finished`に固定
  137. - `data` (object) 詳細
  138. - `id` (string) ワークフロー実行の ID
  139. - `workflow_id` (string) 関連するワークフローの ID
  140. - `status` (string) 実行のステータス、`running` / `succeeded` / `failed` / `stopped`
  141. - `outputs` (json) オプションの出力内容
  142. - `error` (string) オプションのエラー理由
  143. - `elapsed_time` (float) オプションの使用時間(秒)
  144. - `total_tokens` (int) オプションの使用トークン数
  145. - `total_steps` (int) デフォルト 0
  146. - `created_at` (timestamp) 開始時間
  147. - `finished_at` (timestamp) 終了時間
  148. - `event: tts_message` TTS オーディオストリームイベント、つまり音声合成出力。内容は Mp3 形式のオーディオブロックで、base64 文字列としてエンコードされています。再生時には、base64 をデコードしてプレーヤーに入力するだけです。(このメッセージは自動再生が有効な場合にのみ利用可能)
  149. - `task_id` (string) タスク ID、リクエスト追跡と以下の停止応答インターフェースに使用
  150. - `message_id` (string) 一意のメッセージ ID
  151. - `audio` (string) 音声合成後のオーディオ、base64 テキストコンテンツとしてエンコードされており、再生時には base64 をデコードしてプレーヤーに入力するだけです
  152. - `created_at` (int) 作成タイムスタンプ、例:1705395332
  153. - `event: tts_message_end` TTS オーディオストリーム終了イベント。このイベントを受信すると、オーディオストリームの終了を示します。
  154. - `task_id` (string) タスク ID、リクエスト追跡と以下の停止応答インターフェースに使用
  155. - `message_id` (string) 一意のメッセージ ID
  156. - `audio` (string) 終了イベントにはオーディオがないため、これは空の文字列です
  157. - `created_at` (int) 作成タイムスタンプ、例:1705395332
  158. - `event: ping` 接続を維持するために 10 秒ごとに送信される Ping イベント。
  159. ### エラー
  160. - 400, `invalid_param`, 異常なパラメータ入力
  161. - 400, `app_unavailable`, アプリの設定が利用できません
  162. - 400, `provider_not_initialize`, 利用可能なモデル資格情報の設定がありません
  163. - 400, `provider_quota_exceeded`, モデル呼び出しのクォータが不足しています
  164. - 400, `model_currently_not_support`, 現在のモデルは利用できません
  165. - 400, `workflow_request_error`, ワークフロー実行に失敗しました
  166. - 500, 内部サーバーエラー
  167. </Col>
  168. <Col sticky>
  169. <CodeGroup title="リクエスト" tag="POST" label="/workflows/run" targetCode={`curl -X POST '${props.appDetail.api_base_url}/workflows/run' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "inputs": ${JSON.stringify(props.inputs)},\n "response_mode": "streaming",\n "user": "abc-123"\n}'\n`}>
  170. ```bash {{ title: 'cURL' }}
  171. curl -X POST '${props.appDetail.api_base_url}/workflows/run' \
  172. --header 'Authorization: Bearer {api_key}' \
  173. --header 'Content-Type: application/json' \
  174. --data-raw '{
  175. "inputs": {},
  176. "response_mode": "streaming",
  177. "user": "abc-123"
  178. }'
  179. ```
  180. </CodeGroup>
  181. <CodeGroup title="ファイル変数の例">
  182. ```json {{ title: 'ファイル変数の例' }}
  183. {
  184. "inputs": {
  185. "{variable_name}":
  186. [
  187. {
  188. "transfer_method": "local_file",
  189. "upload_file_id": "{upload_file_id}",
  190. "type": "{document_type}"
  191. }
  192. ]
  193. }
  194. }
  195. ```
  196. </CodeGroup>
  197. ### ブロッキングモード
  198. <CodeGroup title="応答">
  199. ```json {{ title: '応答' }}
  200. {
  201. "workflow_run_id": "djflajgkldjgd",
  202. "task_id": "9da23599-e713-473b-982c-4328d4f5c78a",
  203. "data": {
  204. "id": "fdlsjfjejkghjda",
  205. "workflow_id": "fldjaslkfjlsda",
  206. "status": "succeeded",
  207. "outputs": {
  208. "text": "Nice to meet you."
  209. },
  210. "error": null,
  211. "elapsed_time": 0.875,
  212. "total_tokens": 3562,
  213. "total_steps": 8,
  214. "created_at": 1705407629,
  215. "finished_at": 1727807631
  216. }
  217. }
  218. ```
  219. </CodeGroup>
  220. ### ストリーミングモード
  221. <CodeGroup title="応答">
  222. ```streaming {{ title: '応答' }}
  223. data: {"event": "workflow_started", "task_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "workflow_run_id": "5ad498-f0c7-4085-b384-88cbe6290", "data": {"id": "5ad498-f0c7-4085-b384-88cbe6290", "workflow_id": "dfjasklfjdslag", "created_at": 1679586595}}
  224. data: {"event": "node_started", "task_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "workflow_run_id": "5ad498-f0c7-4085-b384-88cbe6290", "data": {"id": "5ad498-f0c7-4085-b384-88cbe6290", "node_id": "dfjasklfjdslag", "node_type": "start", "title": "Start", "index": 0, "predecessor_node_id": "fdljewklfklgejlglsd", "inputs": {}, "created_at": 1679586595}}
  225. data: {"event": "node_finished", "task_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "workflow_run_id": "5ad498-f0c7-4085-b384-88cbe6290", "data": {"id": "5ad498-f0c7-4085-b384-88cbe6290", "node_id": "dfjasklfjdslag", "node_type": "start", "title": "Start", "index": 0, "predecessor_node_id": "fdljewklfklgejlglsd", "inputs": {}, "outputs": {}, "status": "succeeded", "elapsed_time": 0.324, "execution_metadata": {"total_tokens": 63127864, "total_price": 2.378, "currency": "USD"}, "created_at": 1679586595}}
  226. data: {"event": "workflow_finished", "task_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "workflow_run_id": "5ad498-f0c7-4085-b384-88cbe6290", "data": {"id": "5ad498-f0c7-4085-b384-88cbe6290", "workflow_id": "dfjasklfjdslag", "outputs": {}, "status": "succeeded", "elapsed_time": 0.324, "total_tokens": 63127864, "total_steps": "1", "created_at": 1679586595, "finished_at": 1679976595}}
  227. data: {"event": "tts_message", "conversation_id": "23dd85f3-1a41-4ea0-b7a9-062734ccfaf9", "message_id": "a8bdc41c-13b2-4c18-bfd9-054b9803038c", "created_at": 1721205487, "task_id": "3bf8a0bb-e73b-4690-9e66-4e429bad8ee7", "audio": "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"}
  228. data: {"event": "tts_message_end", "conversation_id": "23dd85f3-1a41-4ea0-b7a9-062734ccfaf9", "message_id": "a8bdc41c-13b2-4c18-bfd9-054b9803038c", "created_at": 1721205487, "task_id": "3bf8a0bb-e73b-4690-9e66-4e429bad8ee7", "audio": ""}
  229. ```
  230. </CodeGroup>
  231. <CodeGroup title="ファイルアップロードのサンプルコード">
  232. ```json {{ title: 'ファイルアップロードのサンプルコード' }}
  233. import requests
  234. import json
  235. def upload_file(file_path, user):
  236. upload_url = "https://api.dify.ai/v1/files/upload"
  237. headers = {
  238. "Authorization": "Bearer app-xxxxxxxx",
  239. }
  240. try:
  241. print("ファイルをアップロードしています...")
  242. with open(file_path, 'rb') as file:
  243. files = {
  244. 'file': (file_path, file, 'text/plain') # ファイルが適切な MIME タイプでアップロードされていることを確認してください
  245. }
  246. data = {
  247. "user": user,
  248. "type": "TXT" # ファイルタイプをTXTに設定します
  249. }
  250. response = requests.post(upload_url, headers=headers, files=files, data=data)
  251. if response.status_code == 201: # 201 は作成が成功したことを意味します
  252. print("ファイルが正常にアップロードされました")
  253. return response.json().get("id") # アップロードされたファイルIDを取得する
  254. else:
  255. print(f"ファイルのアップロードに失敗しました。ステータス コード: {response.status_code}")
  256. return None
  257. except Exception as e:
  258. print(f"エラーが発生しました: {str(e)}")
  259. return None
  260. def run_workflow(file_id, user, response_mode="blocking"):
  261. workflow_url = "https://api.dify.ai/v1/workflows/run"
  262. headers = {
  263. "Authorization": "Bearer app-xxxxxxxxx",
  264. "Content-Type": "application/json"
  265. }
  266. data = {
  267. "inputs": {
  268. "orig_mail": [{
  269. "transfer_method": "local_file",
  270. "upload_file_id": file_id,
  271. "type": "document"
  272. }]
  273. },
  274. "response_mode": response_mode,
  275. "user": user
  276. }
  277. try:
  278. print("ワークフローを実行...")
  279. response = requests.post(workflow_url, headers=headers, json=data)
  280. if response.status_code == 200:
  281. print("ワークフローが正常に実行されました")
  282. return response.json()
  283. else:
  284. print(f"ワークフローの実行がステータス コードで失敗しました: {response.status_code}")
  285. return {"status": "error", "message": f"Failed to execute workflow, status code: {response.status_code}"}
  286. except Exception as e:
  287. print(f"エラーが発生しました: {str(e)}")
  288. return {"status": "error", "message": str(e)}
  289. # 使用例
  290. file_path = "{your_file_path}"
  291. user = "difyuser"
  292. # ファイルをアップロードする
  293. file_id = upload_file(file_path, user)
  294. if file_id:
  295. # ファイルは正常にアップロードされました。ワークフローの実行を続行します
  296. result = run_workflow(file_id, user)
  297. print(result)
  298. else:
  299. print("ファイルのアップロードに失敗し、ワークフローを実行できません")
  300. ```
  301. </CodeGroup>
  302. </Col>
  303. </Row>
  304. ---
  305. <Heading
  306. url='/workflows/run/:workflow_run_id'
  307. method='GET'
  308. title='ワークフロー実行詳細を取得'
  309. name='#get-workflow-run-detail'
  310. />
  311. <Row>
  312. <Col>
  313. ワークフロー実行 ID に基づいて、ワークフロータスクの現在の実行結果を取得します。
  314. ### パス
  315. - `workflow_run_id` (string) ワークフロー実行ID、ストリーミングチャンクの返り値から取得可能
  316. ### 応答
  317. - `id` (string) ワークフロー実行の ID
  318. - `workflow_id` (string) 関連するワークフローの ID
  319. - `status` (string) 実行のステータス、`running` / `succeeded` / `failed` / `stopped`
  320. - `inputs` (json) 入力内容
  321. - `outputs` (json) 出力内容
  322. - `error` (string) エラー理由
  323. - `total_steps` (int) タスクの総ステップ数
  324. - `total_tokens` (int) 使用されるトークンの総数
  325. - `created_at` (timestamp) 開始時間
  326. - `finished_at` (timestamp) 終了時間
  327. - `elapsed_time` (float) 使用される総秒数
  328. </Col>
  329. <Col sticky>
  330. ### リクエスト例
  331. <CodeGroup title="リクエスト" tag="GET" label="/workflows/run/:workflow_run_id" targetCode={`curl -X GET '${props.appDetail.api_base_url}/workflows/run/:workflow_run_id' \\\n-H 'Authorization: Bearer {api_key}' \\\n-H 'Content-Type: application/json'`}>
  332. ```bash {{ title: 'cURL' }}
  333. curl -X GET '${props.appDetail.api_base_url}/workflows/run/:workflow_run_id' \
  334. -H 'Authorization: Bearer {api_key}' \
  335. -H 'Content-Type: application/json'
  336. ```
  337. </CodeGroup>
  338. ### 応答例
  339. <CodeGroup title="応答">
  340. ```json {{ title: '応答' }}
  341. {
  342. "id": "b1ad3277-089e-42c6-9dff-6820d94fbc76",
  343. "workflow_id": "19eff89f-ec03-4f75-b0fc-897e7effea02",
  344. "status": "succeeded",
  345. "inputs": "{\"sys.files\": [], \"sys.user_id\": \"abc-123\"}",
  346. "outputs": null,
  347. "error": null,
  348. "total_steps": 3,
  349. "total_tokens": 0,
  350. "created_at": 1705407629,
  351. "finished_at": 1727807631,
  352. "elapsed_time": 30.098514399956912
  353. }
  354. ```
  355. </CodeGroup>
  356. </Col>
  357. </Row>
  358. ---
  359. <Heading
  360. url='/workflows/tasks/:task_id/stop'
  361. method='POST'
  362. title='生成を停止'
  363. name='#stop-generatebacks'
  364. />
  365. <Row>
  366. <Col>
  367. ストリーミングモードでのみサポートされています。
  368. ### パス
  369. - `task_id` (string) タスク ID、ストリーミングチャンクの返り値から取得可能
  370. ### リクエストボディ
  371. - `user` (string) 必須
  372. ユーザー識別子、エンドユーザーのアイデンティティを定義するために使用され、送信メッセージインターフェースで渡されたユーザーと一致している必要があります。サービス API は WebApp によって作成された会話を共有しません。
  373. ### 応答
  374. - `result` (string) 常に"success"を返します
  375. </Col>
  376. <Col sticky>
  377. ### リクエスト例
  378. <CodeGroup title="リクエスト" tag="POST" label="/workflows/tasks/:task_id/stop" targetCode={`curl -X POST '${props.appDetail.api_base_url}/workflows/tasks/:task_id/stop' \\\n-H 'Authorization: Bearer {api_key}' \\\n-H 'Content-Type: application/json' \\\n--data-raw '{"user": "abc-123"}'`}>
  379. ```bash {{ title: 'cURL' }}
  380. curl -X POST '${props.appDetail.api_base_url}/workflows/tasks/:task_id/stop' \
  381. -H 'Authorization: Bearer {api_key}' \
  382. -H 'Content-Type: application/json' \
  383. --data-raw '{
  384. "user": "abc-123"
  385. }'
  386. ```
  387. </CodeGroup>
  388. ### 応答例
  389. <CodeGroup title="応答">
  390. ```json {{ title: '応答' }}
  391. {
  392. "result": "success"
  393. }
  394. ```
  395. </CodeGroup>
  396. </Col>
  397. </Row>
  398. ---
  399. <Heading
  400. url='/files/upload'
  401. method='POST'
  402. title='ファイルアップロード'
  403. name='#file-upload'
  404. />
  405. <Row>
  406. <Col>
  407. メッセージ送信時に使用するためのファイルをアップロードし、画像とテキストのマルチモーダル理解を可能にします。
  408. ワークフローでサポートされている任意の形式をサポートします。
  409. アップロードされたファイルは、現在のエンドユーザーのみが使用できます。
  410. ### リクエストボディ
  411. このインターフェースは`multipart/form-data`リクエストを必要とします。
  412. - `file` (File) 必須
  413. アップロードするファイル。
  414. - `user` (string) 必須
  415. ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。サービス API は WebApp によって作成された会話を共有しません。
  416. ### 応答
  417. アップロードが成功すると、サーバーはファイルの ID と関連情報を返します。
  418. - `id` (uuid) ID
  419. - `name` (string) ファイル名
  420. - `size` (int) ファイルサイズ(バイト)
  421. - `extension` (string) ファイル拡張子
  422. - `mime_type` (string) ファイルの MIME タイプ
  423. - `created_by` (uuid) エンドユーザーID
  424. - `created_at` (timestamp) 作成タイムスタンプ、例:1705395332
  425. ### エラー
  426. - 400, `no_file_uploaded`, ファイルが提供されていません
  427. - 400, `too_many_files`, 現在は 1 つのファイルのみ受け付けています
  428. - 400, `unsupported_preview`, ファイルはプレビューをサポートしていません
  429. - 400, `unsupported_estimate`, ファイルは推定をサポートしていません
  430. - 413, `file_too_large`, ファイルが大きすぎます
  431. - 415, `unsupported_file_type`, サポートされていない拡張子、現在はドキュメントファイルのみ受け付けています
  432. - 503, `s3_connection_failed`, S3 サービスに接続できません
  433. - 503, `s3_permission_denied`, S3 にファイルをアップロードする権限がありません
  434. - 503, `s3_file_too_large`, ファイルが S3 のサイズ制限を超えています
  435. - 500, 内部サーバーエラー
  436. </Col>
  437. <Col sticky>
  438. ### リクエスト例
  439. <CodeGroup title="リクエスト" tag="POST" label="/files/upload" targetCode={`curl -X POST '${props.appDetail.api_base_url}/files/upload' \\\n--header 'Authorization: Bearer {api_key}' \\\n--form 'file=@localfile;type=image/[png|jpeg|jpg|webp|gif]' \\\n--form 'user=abc-123'`}>
  440. ```bash {{ title: 'cURL' }}
  441. curl -X POST '${props.appDetail.api_base_url}/files/upload' \
  442. --header 'Authorization: Bearer {api_key}' \
  443. --form 'file=@"/path/to/file"'
  444. ```
  445. </CodeGroup>
  446. ### 応答例
  447. <CodeGroup title="応答">
  448. ```json {{ title: '応答' }}
  449. {
  450. "id": "72fa9618-8f89-4a37-9b33-7e1178a24a67",
  451. "name": "example.png",
  452. "size": 1024,
  453. "extension": "png",
  454. "mime_type": "image/png",
  455. "created_by": "6ad1ab0a-73ff-4ac1-b9e4-cdb312f71f13",
  456. "created_at": 1577836800,
  457. }
  458. ```
  459. </CodeGroup>
  460. </Col>
  461. </Row>
  462. ---
  463. <Heading
  464. url='/workflows/logs'
  465. method='GET'
  466. title='ワークフローログを取得'
  467. name='#Get-Workflow-Logs'
  468. />
  469. <Row>
  470. <Col>
  471. ワークフローログを返します。最初のページは最新の`{limit}`メッセージを返します。つまり、逆順です。
  472. ### クエリ
  473. <Properties>
  474. <Property name='keyword' type='string' key='keyword'>
  475. 検索するキーワード
  476. </Property>
  477. <Property name='status' type='string' key='status'>
  478. succeeded/failed/stopped
  479. </Property>
  480. <Property name='page' type='int' key='page'>
  481. 現在のページ、デフォルトは1。
  482. </Property>
  483. <Property name='limit' type='int' key='limit'>
  484. 1回のリクエストで返すチャット履歴メッセージの数、デフォルトは20。
  485. </Property>
  486. <Property name='created_by_end_user_session_id' type='str' key='created_by_end_user_session_id'>
  487. どのendUserによって作成されたか、例えば、`abc-123`。
  488. </Property>
  489. <Property name='created_by_account' type='str' key='created_by_account'>
  490. どのメールアカウントによって作成されたか、例えば、lizb@test.com。
  491. </Property>
  492. </Properties>
  493. ### 応答
  494. - `page` (int) 現在のページ
  495. - `limit` (int) 返されたアイテムの数、入力がシステム制限を超える場合、システム制限量を返します
  496. - `total` (int) 合計アイテム数
  497. - `has_more` (bool) 次のページがあるかどうか
  498. - `data` (array[object]) ログリスト
  499. - `id` (string) ID
  500. - `workflow_run` (object) ワークフロー実行
  501. - `id` (string) ID
  502. - `version` (string) バージョン
  503. - `status` (string) 実行のステータス、`running` / `succeeded` / `failed` / `stopped`
  504. - `error` (string) オプションのエラー理由
  505. - `elapsed_time` (float) 使用される総秒数
  506. - `total_tokens` (int) 使用されるトークン数
  507. - `total_steps` (int) デフォルト 0
  508. - `created_at` (timestamp) 開始時間
  509. - `finished_at` (timestamp) 終了時間
  510. - `created_from` (string) 作成元
  511. - `created_by_role` (string) 作成者の役割
  512. - `created_by_account` (string) オプションの作成者アカウント
  513. - `created_by_end_user` (object) エンドユーザーによって作成
  514. - `id` (string) ID
  515. - `type` (string) タイプ
  516. - `is_anonymous` (bool) 匿名かどうか
  517. - `session_id` (string) セッション ID
  518. - `created_at` (timestamp) 作成時間
  519. </Col>
  520. <Col sticky>
  521. <CodeGroup title="リクエスト" tag="GET" label="/workflows/logs" targetCode={`curl -X GET '${props.appDetail.api_base_url}/workflows/logs'\\\n --header 'Authorization: Bearer {api_key}'`}>
  522. ```bash {{ title: 'cURL' }}
  523. curl -X GET '${props.appDetail.api_base_url}/workflows/logs?limit=1'
  524. --header 'Authorization: Bearer {api_key}'
  525. ```
  526. </CodeGroup>
  527. ### 応答例
  528. <CodeGroup title="応答">
  529. ```json {{ title: '応答' }}
  530. {
  531. "page": 1,
  532. "limit": 1,
  533. "total": 7,
  534. "has_more": true,
  535. "data": [
  536. {
  537. "id": "e41b93f1-7ca2-40fd-b3a8-999aeb499cc0",
  538. "workflow_run": {
  539. "id": "c0640fc8-03ef-4481-a96c-8a13b732a36e",
  540. "version": "2024-08-01 12:17:09.771832",
  541. "status": "succeeded",
  542. "error": null,
  543. "elapsed_time": 1.3588523610014818,
  544. "total_tokens": 0,
  545. "total_steps": 3,
  546. "created_at": 1726139643,
  547. "finished_at": 1726139644
  548. },
  549. "created_from": "service-api",
  550. "created_by_role": "end_user",
  551. "created_by_account": null,
  552. "created_by_end_user": {
  553. "id": "7f7d9117-dd9d-441d-8970-87e5e7e687a3",
  554. "type": "service_api",
  555. "is_anonymous": false,
  556. "session_id": "abc-123"
  557. },
  558. "created_at": 1726139644
  559. }
  560. ]
  561. }
  562. ```
  563. </CodeGroup>
  564. </Col>
  565. </Row>
  566. ---
  567. <Heading
  568. url='/info'
  569. method='GET'
  570. title='アプリケーションの基本情報を取得'
  571. name='#info'
  572. />
  573. <Row>
  574. <Col>
  575. このアプリケーションの基本情報を取得するために使用されます
  576. ### Response
  577. - `name` (string) アプリケーションの名前
  578. - `description` (string) アプリケーションの説明
  579. - `tags` (array[string]) アプリケーションのタグ
  580. - `mode` (string) アプリケーションのモード
  581. - `author_name` (string) 作者の名前
  582. </Col>
  583. <Col>
  584. <CodeGroup title="Request" tag="GET" label="/info" targetCode={`curl -X GET '${props.appDetail.api_base_url}/info' \\\n-H 'Authorization: Bearer {api_key}'`}>
  585. ```bash {{ title: 'cURL' }}
  586. curl -X GET '${props.appDetail.api_base_url}/info' \
  587. -H 'Authorization: Bearer {api_key}'
  588. ```
  589. </CodeGroup>
  590. <CodeGroup title="Response">
  591. ```json {{ title: 'Response' }}
  592. {
  593. "name": "My App",
  594. "description": "This is my app.",
  595. "tags": [
  596. "tag1",
  597. "tag2"
  598. ],
  599. "mode": "workflow",
  600. "author_name": "Dify"
  601. }
  602. ```
  603. </CodeGroup>
  604. </Col>
  605. </Row>
  606. ---
  607. <Heading
  608. url='/parameters'
  609. method='GET'
  610. title='アプリケーションのパラメータ情報を取得'
  611. name='#parameters'
  612. />
  613. <Row>
  614. <Col>
  615. ページに入る際に、機能、入力パラメータ名、タイプ、デフォルト値などの情報を取得するために使用されます。
  616. ### 応答
  617. - `user_input_form` (array[object]) ユーザー入力フォームの設定
  618. - `text-input` (object) テキスト入力コントロール
  619. - `label` (string) 変数表示ラベル名
  620. - `variable` (string) 変数ID
  621. - `required` (bool) 必須かどうか
  622. - `default` (string) デフォルト値
  623. - `paragraph` (object) 段落テキスト入力コントロール
  624. - `label` (string) 変数表示ラベル名
  625. - `variable` (string) 変数ID
  626. - `required` (bool) 必須かどうか
  627. - `default` (string) デフォルト値
  628. - `select` (object) ドロップダウンコントロール
  629. - `label` (string) 変数表示ラベル名
  630. - `variable` (string) 変数ID
  631. - `required` (bool) 必須かどうか
  632. - `default` (string) デフォルト値
  633. - `options` (array[string]) オプション値
  634. - `file_upload` (object) ファイルアップロード設定
  635. - `document` (object) ドキュメント設定
  636. 現在サポートされているドキュメントタイプ:`txt`, `md`, `markdown`, `pdf`, `html`, `xlsx`, `xls`, `docx`, `csv`, `eml`, `msg`, `pptx`, `ppt`, `xml`, `epub`。
  637. - `enabled` (bool) 有効かどうか
  638. - `number_limits` (int) ドキュメント数の上限。デフォルトは 3
  639. - `transfer_methods` (array[string]) 転送方法リスト:`remote_url`, `local_file`。いずれかを選択する必要があります。
  640. - `image` (object) 画像設定
  641. 現在サポートされている画像タイプ:`png`, `jpg`, `jpeg`, `webp`, `gif`。
  642. - `enabled` (bool) 有効かどうか
  643. - `number_limits` (int) 画像数の上限。デフォルトは 3
  644. - `transfer_methods` (array[string]) 転送方法リスト:`remote_url`, `local_file`。いずれかを選択する必要があります。
  645. - `audio` (object) オーディオ設定
  646. 現在サポートされているオーディオタイプ:`mp3`, `m4a`, `wav`, `webm`, `amr`。
  647. - `enabled` (bool) 有効かどうか
  648. - `number_limits` (int) オーディオ数の上限。デフォルトは 3
  649. - `transfer_methods` (array[string]) 転送方法リスト:`remote_url`, `local_file`。いずれかを選択する必要があります。
  650. - `video` (object) ビデオ設定
  651. 現在サポートされているビデオタイプ:`mp4`, `mov`, `mpeg`, `mpga`。
  652. - `enabled` (bool) 有効かどうか
  653. - `number_limits` (int) ビデオ数の上限。デフォルトは 3
  654. - `transfer_methods` (array[string]) 転送方法リスト:`remote_url`, `local_file`。いずれかを選択する必要があります。
  655. - `custom` (object) カスタム設定
  656. - `enabled` (bool) 有効かどうか
  657. - `number_limits` (int) カスタム数の上限。デフォルトは 3
  658. - `transfer_methods` (array[string]) 転送方法リスト:`remote_url`, `local_file`。いずれかを選択する必要があります。
  659. - `system_parameters` (object) システムパラメータ
  660. - `file_size_limit` (int) ドキュメントアップロードサイズ制限(MB)
  661. - `image_file_size_limit` (int) 画像ファイルアップロードサイズ制限(MB)
  662. - `audio_file_size_limit` (int) オーディオファイルアップロードサイズ制限(MB)
  663. - `video_file_size_limit` (int) ビデオファイルアップロードサイズ制限(MB)
  664. </Col>
  665. <Col sticky>
  666. <CodeGroup title="リクエスト" tag="GET" label="/parameters" targetCode={` curl -X GET '${props.appDetail.api_base_url}/parameters'`}>
  667. ```bash {{ title: 'cURL' }}
  668. curl -X GET '${props.appDetail.api_base_url}/parameters' \
  669. --header 'Authorization: Bearer {api_key}'
  670. ```
  671. </CodeGroup>
  672. <CodeGroup title="応答">
  673. ```json {{ title: '応答' }}
  674. {
  675. "user_input_form": [
  676. {
  677. "paragraph": {
  678. "label": "Query",
  679. "variable": "query",
  680. "required": true,
  681. "default": ""
  682. }
  683. }
  684. ],
  685. "file_upload": {
  686. "image": {
  687. "enabled": false,
  688. "number_limits": 3,
  689. "detail": "high",
  690. "transfer_methods": [
  691. "remote_url",
  692. "local_file"
  693. ]
  694. }
  695. },
  696. "system_parameters": {
  697. "file_size_limit": 15,
  698. "image_file_size_limit": 10,
  699. "audio_file_size_limit": 50,
  700. "video_file_size_limit": 100
  701. }
  702. }
  703. ```
  704. </CodeGroup>
  705. </Col>
  706. </Row>
  707. ———
  708. <Heading
  709. url='/site'
  710. method='GET'
  711. title='アプリのWebApp設定を取得'
  712. name='#site'
  713. />
  714. <Row>
  715. <Col>
  716. アプリの WebApp 設定を取得するために使用します。
  717. ### 応答
  718. - `title` (string) WebApp 名
  719. - `icon_type` (string) アイコンタイプ、`emoji`-絵文字、`image`-画像
  720. - `icon` (string) アイコン。`emoji`タイプの場合は絵文字、`image`タイプの場合は画像 URL
  721. - `icon_background` (string) 16 進数形式の背景色
  722. - `icon_url` (string) アイコンの URL
  723. - `description` (string) 説明
  724. - `copyright` (string) 著作権情報
  725. - `privacy_policy` (string) プライバシーポリシーのリンク
  726. - `custom_disclaimer` (string) カスタム免責事項
  727. - `default_language` (string) デフォルト言語
  728. - `show_workflow_steps` (bool) ワークフローの詳細を表示するかどうか
  729. </Col>
  730. <Col>
  731. <CodeGroup title="Request" tag="POST" label="/meta" targetCode={`curl -X GET '${props.appDetail.api_base_url}/site' \\\n-H 'Authorization: Bearer {api_key}'`}>
  732. ```bash {{ title: 'cURL' }}
  733. curl -X GET '${props.appDetail.api_base_url}/site' \
  734. -H 'Authorization: Bearer {api_key}'
  735. ```
  736. </CodeGroup>
  737. <CodeGroup title="Response">
  738. ```json {{ title: 'Response' }}
  739. {
  740. "title": "My App",
  741. "icon_type": "emoji",
  742. "icon": "😄",
  743. "icon_background": "#FFEAD5",
  744. "icon_url": null,
  745. "description": "This is my app.",
  746. "copyright": "all rights reserved",
  747. "privacy_policy": "",
  748. "custom_disclaimer": "All generated by AI",
  749. "default_language": "en-US",
  750. "show_workflow_steps": false,
  751. }
  752. ```
  753. </CodeGroup>
  754. </Col>
  755. </Row>
  756. ___