SSEデバッグ
SSE(Server-Sent Events)は、HTTPプロトコルに基づいたリアルタイム通信技術です。AIモデルがレスポンスをストリーミングする必要がある場合によく使用されます。SSEを使用すると、クライアントとサーバーの間に継続的で一方向の接続が確立され、サーバーがリアルタイムで更新をクライアントに直接送信することができます。これにより、ユーザーは推論モデルの思考過程や生成されたコンテンツを即座に確認できます。
SSE接続の開始
Apidogのバージョンは2.6.49以上である必要があります。
メッセージの自動マージ
Apidogは人気のあるAIモデルをサポートしており、以下の形式でストリーミングレスポンスを自動的に認識してマージできます:
- OpenAI API互換フォーマット
- Gemini API互換フォーマット
- Claude API互換フォーマット
AIモデルのレスポンスがこれらの形式のいずれかに一致する場合、Apidogはメッセージの断片を自動的に完全な返信にマージします。
DeepSeek R1のような特定のモデルに対しては、Apidogはタイムラインでモデルの思考過程を表示することもサポートしており、AIがどのように推論しているかをより明確かつ直感的に把握できます。
マージルールのカスタマイズ
自働マージ
機能が正しく動作しない場合、実際の状況に基づいて以下の対策を講じることができます:
1. JSON Path抽出ルールの設定
SSEがJSON形式のコンテンツを返すが、OpenAI、Gemini、Claudeなどの組み込み認識ルールに準拠していない場合、JSONPathを手動で設定して必要なコンテンツを抽出できます。例えば、以下のような生のSSEレスポンスに対して:
data: {"choices":[{"index":0,"message":{"role":"assistant","content":"H"},"logprobs":null,"finish_reason":"stop"}]}
data: {"choices":[{"index":0,"message":{"role":"assistant","content":"i"},"logprobs":null,"finish_reason":"stop"}]}
content
フィールドを抽出するには、このJSON Path設定を使用します:$.choices[0].message.content
。
このJSON Pathの各部分の意味は次のとおりです:
$.
はJSONのルートを指しますchoices[0]
はchoices配列の最初の要素を選択しますmessage.content
はその要素のmessageオブジェクトの下のcontent属性を指定します。
この設定により、コンテンツが抽出されます:
Hi
2. 後処理スクリプトの使用
非JSONのSSEメッセージに対しては、以下を行うことができます:
- 後処理スクリプトを使用してデータを手動で処理します。
- 使用しているモデルフォーマットについてのフィードバックを提供するために技術サポートに連絡し、そのフォーマットの組み込みサポートを追加することを検討します。
FAQ
この問題は通常、サーバーのレスポンスがSSEフォーマットガイドラインに従っていない場合に発生します。標準のSSEメッセージフォーマットでは:
- メッセージの内容は
data:
の後に来る必要があります - 各メッセージは2つの改行文字で区切られる必要があります(つまり、メッセージ間に空行が必要です)。
SSEメッセージフォーマットの詳細については、MDNドキュメント - Server-Sent Eventsの使用を参照してください。