Streaming
stream: true は受理され、待機中は空の OpenAI chat.completion.chunk を heartbeat として配信し、完成後に内容 1 チャンク → finish チャンク → [DONE] を配信します。空 delta は表示内容を変えず、長い非同期ジョブでも SDK の無応答判定を進めません。
POST https://api.mithril.fund/v1/chat/completions {"stream": true, ...}
content-type: text/event-stream
data: {"object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":"..."},"finish_reason":null}]}
data: {"object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop"}],"billing":"free","receiptId":"receipt-..."}
data: [DONE]
ジョブとして待つ
長い応答(32k tokens までの出力)は数分かかることがあります。同期呼び出しはサーバ側で最大 14 分待ちます。それを超えると 504 inference-timeout が返りますが、ジョブは続いており、同じリクエストを再送すると同じジョブに再接続します(決定的な job id)。
# the job API, when you want to poll yourself
curl -s -X POST https://api.mithril.fund/v1/research/jobs -H "idempotency-key: <uuid v4>" ...
curl -s "https://api.mithril.fund/v1/research/job?jobId=<uuid>" # 202 queued/running · 200 succeeded