はじめに
皆さん、これまでも何度か解説記事をお届けしているDifyやClaude Codeは使っていますか?
昨今いろいろなバイブコーディングツールやノーコードAIワークフロー開発ツールが登場し続けていますが、AIコーディングツールで言うCursorのようにClaude CodeとDifyは最も初期に広まったスタンダードなツールと言えるでしょう。
Claude CodeであればGemini CLIやCodex CLIがあるように基本的な使い方さえ押さえておけば、今後出てくる同様のツールの理解もかなりしやすくなるはずです。
今回はDifyとClaude Codeを使って、本来開発が大変なAI機能を搭載したWebアプリを素早く開発する方法を解説していきます。
Difyでワークフローを作ろう
Difyはこれまでも何度かご紹介してきましたが、度重なるアップデートで仕様が変わっている点も多いので改めてワークフローを構築するために必要なことを解説していきます。
ワークフロー開発前の準備
ログインはこちらから
久しぶりにDifyを触る方、初めてDifyでAIワークフローを開発をする方は以下の2点が重要なので覚えておいてください。
ワークフロー・チャットフロー
現在のDifyはチャットボットもAIエージェントもこのどちらかのみで作ります。以前のような細かい区分けは無くなりました。
つまり、ワークフローの作り方一つを覚えればOKということです。
よくある質問として、ワークフローとチャットフローの違いが挙げられます。チャットフローは会話(往復)が前提で、ワークフローは特定の処理の一部(議事録作成など)にAIを組み込むイメージです。
議事録を作る際に、音声の内容を元にAIと対話で会議の中身を把握したいときはチャットフローになります。
基本的にチャットフローは便利です。しかし、Claude Codeで実装する際はquery入力や会話IDの保持が必要になるなど、実装が少し複雑になりがちなので注意してください。
※ただ、Claude Codeに必要な情報さえ渡せる程度の知識があれば十分です。どこが必要な情報かについては、公開したAPIの情報を確認するセクションで解説します。
それではためしにチャットフローを作ってみましょう。
ログインし、スタジオからアプリを作成するの欄の最初から作成を選択してください。

次に、チャットフローを選択し、アプリの名前を入力して作成するを押してください。

すると、以下のような画面に移ります。
この画面がDifyの基本の画面です。

現状、AIモデルのところで警告が出ています。
他にも今の状態ではエージェントは実装できません。そこで次に、プラグインを導入する必要があります。
プラグイン
Difyは現在、多くのコア機能をプラグインとして提供しています。例えば、AIモデルの導入、エージェント用ツール、エージェント機能の実装などが該当します。
それでは、必要なプラグインをインストールしていきましょう。
Difyのホーム画面の右上にプラグインがあるので選択してください。

次に、プラグインをインストールするを選択してマーケットプレイスを選択。

この検索バーに、インストールしたいプラグイン名を入れることで検索できます。

それでは、Dify公式のOpenAIプラグインを選択してください。

インストールをクリックして、さらにインストールを選択でインストールされます。


Dify Agent Strategiesも同じ流れでインストールしてください(これがないとエージェントが実装できません)

後はやりたいことに応じてツールを追加してください。
検索: Brave Search
モデル変更: Anthropic, Gemini
RAG: Jina AI

などがあります。
APIキーを設定する
OpenAIやその他のAIモデルを使用するには、まずAPIキーを取得して設定する必要があります。ここではOpenAIのAPIキーを例に説明します。
OpenAI APIキーの取得
1.OpenAI Platformにアクセス
2.アカウントを作成またはログイン
3.Settings→API keysを選択

4.Create new secret keyを選択し、名前と関連プロジェクト・権限を選択


5.生成されたAPIキーをコピー(一度しか表示されないので注意)
DifyでAPIキーを設定
1.Difyの画面右上のプロフィールアイコンから「設定」を選択

2.「モデルプロバイダー」タブを開き、APIキーのコンフィグで設定

Brave Search APIの設定(検索機能を使う場合)
Brave Search APIでAPIキーを取得

DifyのプラグインでBrave Searchをインストール

チャットフローを開き、ノードの選択画面をノード間などの+ボタンを選択して開く。

ツールの欄から、Braveを探す。

Braveのノードを選択し、API認証設定を選択してAPIキーを入力する。

これで基本的な準備は完了です。
チャットフローを作成する
今回は単純な検索機能をつけたエージェントを作って公開するところまでご紹介します。
チャットフローでのエージェント開発の詳細については過去の記事をご覧ください。
https://agi-labo.com/articles/nfe5f12f93afd
まず、開始→エージェントノードを選択→エージェンティック戦略→FunctionCallingを選択。

モデル:GPT-5
ToolList: BraveSearchを選択。


以下はINSTRUCTIONの例です。作りたいものに応じて、ここに開発者としての指示を追加してください。
あなたは優秀なリサーチャーです。
検索結果を基に、ユーザーの質問に対して包括的で分かりやすい回答を提供してください。
重要なポイントは箇条書きでまとめ、必要に応じて追加の説明を加えてください。次に、queryです。ここに/を入力すると、変数の一覧が出てくるのでその中からsys.queryを追加してください。
sys.queryがユーザーからの新しいチャットの入力なので、こちらを入れることで対話機能が実装できます。
※アプリから利用する際は会話IDを指定しないと引き継がれないので注意が必要ですが、DifyのAPI仕様書をClaude Codeに渡せば問題ないです。

このようにqueryが設定されていればOKです。
MAXIMUM ITERATIONSはエージェントが一回のメッセージから何回まで行動を繰り返してOKかの数字です。
また、これまでの対話の内容を覚えておいてもらうためにはメモリ機能をONにする必要があります。
メモリウィンドウサイズが覚えておけるメッセージ数です。

大まかに、このようになっていればOKです。
アプリの機能によっては入力時変数や出力の形式を整える、出力変数を設定するなどをする必要がありますが、その場合は、Difyに関する知識が新しいモデル(例: Claude 4.1 OpusやClaude 4 Sonnet)に質問することをお勧めします。(2025年9月時点)

最後に、回答ノードも "/" からエージェントのtext(エージェントの出力)を設定しておきましょう。

チャットフローを公開する
公開(デプロイ)の方法はとても簡単です。
公開する→更新を公開を選択するだけです。

アプリを実行でテストしてみましょう。

ためしにメッセージを送ってみると自分の環境ではエラーが出てしまいました。

自分の場合はOpenAIの認証回りのエラーのようです。
こちらはstreamingレスポンス(一気にではなくだんだん応答メッセージが出てくる方式)をGPT-5で利用するには組織の認証が必要というエラーでした。
streamingレスポンスを実装するのは手間になることもあるので、今回はいったんblockでまとめて渡してもらうようにしましょう。(よっぽど重い処理やモデル以外はこちらでも大きく体験は変わらないと思います。どうしても試したい場合はClaudeやGemini、もしくは利用できるOpenAIのモデルを利用してください)
変更の仕方も簡単です。エージェントノードを選択し、MODEL→StreamingをFalseにするだけ。

こういった試験と変更が簡単なのもDifyの魅力ですね。
最後に、忘れずに右上から更新をしておきましょう。これをしないと公開されているAIが最新のものになりません。

今度は動いていそうです。

思ったより時間をかけて調べてくれていました。

エージェントの具体的な行動ログは
1.ログ&注釈
2.該当する会話スレッドを開き、エージェントの回答にカーソルを合わせてログアイコンをクリック
3.エージェントの詳細情報を選択

これで何往復したか、実際にどのツールを使ったかなどがわかります。

今回はMAXIMUM ITERATIONSが4に設定していたので4周分、上限まで調べてくれたようです。
公開したDifyのAPIの仕様を確認
それでは最後に、Claude Codeに送るためのAPI仕様書を確認しましょう。
APIアクセスを左のバーから選択してください。

基本的に、ページ最上部から/chat-messagesまでの内容を渡すだけで十分仕様を理解してくれます。
ページ全体を渡しても問題ありませんが、まずは基本情報だけを渡し、不足があれば全体を渡す方が親切でしょう。
以下は実際にClaude Codeに渡す内容の例です。
※これくらい雑にコピペしちゃっても問題ないということ
高度なチャットアプリ API
チャットアプリケーションはセッションの持続性をサポートしており、以前のチャット履歴を応答のコンテキストとして使用できます。これは、チャットボットやカスタマーサービス AI などに適用できます。
ベース URL
コード
https://api.dify.ai/v1
Copy
Copied!
認証
サービス API は API-Key 認証を使用します。 API キーはサーバー側に保存し、クライアント側で共有または保存しないことを強くお勧めします。API キーの漏洩は深刻な結果を招く可能性があります。
すべての API リクエストには、以下のように AuthorizationHTTP ヘッダーに API キーを含めてください:
コード
Authorization: Bearer {API_KEY}
Copy
Copied!
POST
/chat-messages
チャットメッセージを送信
チャットアプリケーションにリクエストを送信します。
リクエストボディ
Name
query
Type
string
Description
ユーザー入力/質問内容
Name
inputs
Type
object
Description
アプリによって定義されたさまざまな変数値の入力を許可します。 inputsパラメータには複数のキー/値ペアが含まれ、各キーは特定の変数に対応し、各値はその変数の特定の値です。 変数がファイルタイプの場合、以下のfilesで説明されているキーを持つオブジェクトを指定します。 デフォルト{}
Name
response_mode
Type
string
Description
応答の返却モードを指定します。サポートされているモード:
streaming ストリーミングモード(推奨)、SSE(サーバー送信イベント)を通じてタイプライターのような出力を実装します。
blocking ブロッキングモード、実行完了後に結果を返します。(プロセスが長い場合、リクエストが中断される可能性があります) Cloudflareの制限により、リクエストは100秒後に返答なしで中断されます。
Name
user
Type
string
Description
ユーザー識別子、エンドユーザーの身元を定義するために使用され、統計のために使用されます。 アプリケーション内で開発者によって一意に定義されるべきです。サービス API は WebApp によって作成された会話を共有しません。
Name
conversation_id
Type
string
Description
会話ID、以前のチャット記録に基づいて会話を続けるには、以前のメッセージのconversation_idを渡す必要があります。
Name
files
Type
array[object]
Description
ファイルリスト、モデルが Vision/Video 機能をサポートしている場合に限り、ファイルをテキスト理解および質問応答に組み合わせて入力するのに適しています。
type (string) サポートされるタイプ:
document サポートされるタイプには以下が含まれます:'TXT', 'MD', 'MARKDOWN', 'MDX', 'PDF', 'HTML', 'XLSX', 'XLS', 'VTT', 'PROPERTIES', 'DOC', 'DOCX', 'CSV', 'EML', 'MSG', 'PPTX', 'PPT', 'XML', 'EPUB'
image サポートされるタイプには以下が含まれます:'JPG', 'JPEG', 'PNG', 'GIF', 'WEBP', 'SVG'
audio サポートされるタイプには以下が含まれます:'MP3', 'M4A', 'WAV', 'WEBM', 'MPGA'
video サポートされるタイプには以下が含まれます:'MP4', 'MOV', 'MPEG', 'WEBM'
custom サポートされるタイプには以下が含まれます:その他のファイルタイプ
transfer_method (string) 転送方法:
remote_url: ファイルのURL。
local_file: ファイルをアップロード。
url ファイルのURL。(転送方法が remote_url の場合のみ)。
upload_file_id アップロードされたファイルID。(転送方法が local_file の場合のみ)。
Name
auto_generate_name
Type
bool
Description
タイトルを自動生成、デフォルトはtrue。 falseに設定すると、会話のリネームAPIを呼び出し、auto_generateをtrueに設定することで非同期タイトル生成を実現できます。
Name
workflow_id
Type
string
Description
(オプション)ワークフローID、特定のバージョンを指定するために使用、提供されない場合はデフォルトの公開バージョンを使用。
Name
trace_id
Type
string
Description
(オプション)トレースID。既存の業務システムのトレースコンポーネントと連携し、エンドツーエンドの分散トレーシングを実現するために使用します。指定がない場合、システムが自動的に trace_id を生成します。以下の3つの方法で渡すことができ、優先順位は次のとおりです:
Header:HTTPヘッダー X-Trace-Id で渡す(最優先)。
クエリパラメータ:URLクエリパラメータ trace_id で渡す。
リクエストボディ:リクエストボディの trace_id フィールドで渡す(本フィールド)。
応答
response_modeがブロッキングの場合、CompletionResponseオブジェクトを返します。 response_modeがストリーミングの場合、ChunkCompletionResponseストリームを返します。
ChatCompletionResponse
完全なアプリ結果を返します。Content-Typeはapplication/jsonです。
event (string) イベントタイプ、固定で message
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
id (string) ユニークID
message_id (string) 一意のメッセージID
conversation_id (string) 会話ID
mode (string) アプリモード、chatとして固定
answer (string) 完全な応答内容
metadata (object) メタデータ
usage (Usage) モデル使用情報
retriever_resources (array[RetrieverResource]) 引用と帰属リスト
created_at (int) メッセージ作成タイムスタンプ、例:1705395332
ChunkChatCompletionResponse
アプリによって出力されたストリームチャンクを返します。Content-Typeはtext/event-streamです。 各ストリーミングチャンクはdata:で始まり、2つの改行文字\n\nで区切られます。以下のように表示されます:
data: {"event": "message", "task_id": "900bbd43-dc0b-4383-a372-aa6e6c414227", "id": "663c5084-a254-4040-8ad3-51f2a3c1a77c", "answer": "Hi", "created_at": 1705398420}\n\n
Copy
Copied!
ストリーミングチャンクの構造はeventに応じて異なります:
event: message LLMがテキストチャンクイベントを返します。つまり、完全なテキストがチャンク形式で出力されます。
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
message_id (string) 一意のメッセージID
conversation_id (string) 会話ID
answer (string) LLMが返したテキストチャンク内容
created_at (int) 作成タイムスタンプ、例:1705395332
event: message_file メッセージファイルイベント、ツールによって新しいファイルが作成されました
id (string) ファイル一意ID
type (string) ファイルタイプ、現在は"image"のみ許可
belongs_to (string) 所属、ここでは'assistant'のみ
url (string) ファイルのリモートURL
conversation_id (string) 会話ID
event: message_end メッセージ終了イベント、このイベントを受信するとストリーミングが終了したことを意味します。
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
message_id (string) 一意のメッセージID
conversation_id (string) 会話ID
metadata (object) メタデータ
usage (Usage) モデル使用情報
retriever_resources (array[RetrieverResource]) 引用と帰属リスト
event: tts_message TTSオーディオストリームイベント、つまり音声合成出力。内容はMp3形式のオーディオブロックで、base64文字列としてエンコードされています。再生時には、base64をデコードしてプレーヤーに入力するだけです。(このメッセージは自動再生が有効な場合にのみ利用可能)
task_id (string) タスクID、リクエスト追跡と以下のストップ応答インターフェースに使用
message_id (string) 一意のメッセージID
audio (string) 音声合成後のオーディオ、base64テキストコンテンツとしてエンコードされており、再生時にはbase64をデコードしてプレーヤーに入力するだけです
created_at (int) 作成タイムスタンプ、例:1705395332
event: tts_message_end TTSオーディオストリーム終了イベント、このイベントを受信するとオーディオストリームが終了したことを示します。
task_id (string) タスクID、リクエスト追跡と以下のストップ応答インターフェースに使用
message_id (string) 一意のメッセージID
audio (string) 終了イベントにはオーディオがないため、これは空の文字列です
created_at (int) 作成タイムスタンプ、例:1705395332
event: message_replace メッセージ内容置換イベント。 出力内容のモデレーションが有効な場合、内容がフラグ付けされると、このイベントを通じてメッセージ内容がプリセットの返信に置き換えられます。
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
message_id (string) 一意のメッセージID
conversation_id (string) 会話ID
answer (string) 置換内容(すべてのLLM返信テキストを直接置き換えます)
created_at (int) 作成タイムスタンプ、例:1705395332
event: workflow_started ワークフローが実行を開始
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
workflow_run_id (string) ワークフロー実行の一意ID
event (string) workflow_startedに固定
data (object) 詳細
id (string) ワークフロー実行の一意ID
workflow_id (string) 関連ワークフローのID
created_at (timestamp) 作成タイムスタンプ、例:1705395332
event: node_started ノード実行が開始
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
workflow_run_id (string) ワークフロー実行の一意ID
event (string) node_startedに固定
data (object) 詳細
id (string) ワークフロー実行の一意ID
node_id (string) ノードのID
node_type (string) ノードのタイプ
title (string) ノードの名前
index (int) 実行シーケンス番号、トレースノードシーケンスを表示するために使用
predecessor_node_id (string) オプションのプレフィックスノードID、キャンバス表示実行パスに使用
inputs (object) ノードで使用されるすべての前のノード変数の内容
created_at (timestamp) 開始のタイムスタンプ、例:1705395332
event: node_finished ノード実行が終了、成功または失敗は同じイベント内で異なる状態で示されます
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
workflow_run_id (string) ワークフロー実行の一意ID
event (string) node_finishedに固定
data (object) 詳細
id (string) ワークフロー実行の一意ID
node_id (string) ノードのID
node_type (string) ノードのタイプ
title (string) ノードの名前
index (int) 実行シーケンス番号、トレースノードシーケンスを表示するために使用
predecessor_node_id (string) オプションのプレフィックスノードID、キャンバス表示実行パスに使用
inputs (object) ノードで使用されるすべての前のノード変数の内容
process_data (json) オプションのノードプロセスデータ
outputs (json) オプションの出力内容
status (string) 実行の状態、running / succeeded / failed / stopped
error (string) オプションのエラー理由
elapsed_time (float) オプションの使用される合計秒数
execution_metadata (json) メタデータ
total_tokens (int) オプションの使用されるトークン数
total_price (decimal) オプションの合計コスト
currency (string) オプション、例:USD / RMB
created_at (timestamp) 開始のタイムスタンプ、例:1705395332
event: workflow_finished ワークフロー実行が終了、成功または失敗は同じイベント内で異なる状態で示されます
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
workflow_run_id (string) ワークフロー実行の一意ID
event (string) workflow_finishedに固定
data (object) 詳細
id (string) ワークフロー実行のID
workflow_id (string) 関連ワークフローのID
status (string) 実行の状態、running / succeeded / failed / stopped
outputs (json) オプションの出力内容
error (string) オプションのエラー理由
elapsed_time (float) オプションの使用される合計秒数
total_tokens (int) オプションの使用されるトークン数
total_steps (int) デフォルト0
created_at (timestamp) 開始時間
finished_at (timestamp) 終了時間
event: error ストリーミングプロセス中に発生する例外はストリームイベントの形式で出力され、エラーイベントを受信するとストリームが終了します。
task_id (string) タスクID、リクエスト追跡と以下のStop Generate APIに使用
message_id (string) 一意のメッセージID
status (int) HTTPステータスコード
code (string) エラーコード
message (string) エラーメッセージ
event: ping 接続を維持するために10秒ごとにpingイベントが発生します。
エラー
404, 会話が存在しません
400, invalid_param, 異常なパラメータ入力
400, app_unavailable, アプリ構成が利用できません
400, provider_not_initialize, 利用可能なモデル資格情報構成がありません
400, provider_quota_exceeded, モデル呼び出しクォータが不足しています
400, model_currently_not_support, 現在のモデルが利用できません
400, workflow_not_found, 指定されたワークフローバージョンが見つかりません
400, draft_workflow_error, ドラフトワークフローバージョンは使用できません
400, workflow_id_format_error, ワークフローID形式エラー、UUID形式が必要です
400, completion_request_error, テキスト生成に失敗しました
500, 内部サーバーエラー
リクエスト
POST
/chat-messages
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "What are the specs of the iPhone 13 Pro Max?",
"response_mode": "streaming",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://cloud.dify.ai/logo/logo-site.png"
}
]
}'
Copy
Copied!
ブロッキングモード
応答
{
"event": "message",
"task_id": "c3800678-a077-43df-a102-53f23ed20b88",
"id": "9da23599-e713-473b-982c-4328d4f5c78a",
"message_id": "9da23599-e713-473b-982c-4328d4f5c78a",
"conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2",
"mode": "chat",
"answer": "iPhone 13 Pro Maxの仕様は次のとおりです:...",
"metadata": {
"usage": {
"prompt_tokens": 1033,
"prompt_unit_price": "0.001",
"prompt_price_unit": "0.001",
"prompt_price": "0.0010330",
"completion_tokens": 128,
"completion_unit_price": "0.002",
"completion_price_unit": "0.001",
"completion_price": "0.0002560",
"total_tokens": 1161,
"total_price": "0.0012890",
"currency": "USD",
"latency": 0.7682376249867957
},
"retriever_resources": [
{
"position": 1,
"dataset_id": "101b4c97-fc2e-463c-90b1-5261a4cdcafb",
"dataset_name": "iPhone",
"document_id": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00",
"document_name": "iPhone List",
"segment_id": "ed599c7f-2766-4294-9d1d-e5235a61270a",
"score": 0.98457545,
"content": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""
}
]
},
"created_at": 1705407629
}
Copy
Copied!
ストリーミングモード
応答
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}}
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}}
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}}
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}}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": " I", "created_at": 1679586595}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": "'m", "created_at": 1679586595}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": " glad", "created_at": 1679586595}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": " to", "created_at": 1679586595}
data: {"event": "message", "message_id" : "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": " meet", "created_at": 1679586595}
data: {"event": "message", "message_id" : "5ad4cb98-f0c7-4085-b384-88c403be6290", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "answer": " you", "created_at": 1679586595}
data: {"event": "message_end", "id": "5e52ce04-874b-4d27-9045-b3bc80def685", "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2", "metadata": {"usage": {"prompt_tokens": 1033, "prompt_unit_price": "0.001", "prompt_price_unit": "0.001", "prompt_price": "0.0010330", "completion_tokens": 135, "completion_unit_price": "0.002", "completion_price_unit": "0.001", "completion_price": "0.0002700", "total_tokens": 1168, "total_price": "0.0013030", "currency": "USD", "latency": 1.381760165997548}, "retriever_resources": [{"position": 1, "dataset_id": "101b4c97-fc2e-463c-90b1-5261a4cdcafb", "dataset_name": "iPhone", "document_id": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00", "document_name": "iPhone List", "segment_id": "ed599c7f-2766-4294-9d1d-e5235a61270a", "score": 0.98457545, "content": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""}]}}
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"}
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": ""}
Copy
Copied!
ここで注意するべきポイントがいくつかあります。







