# ストリーミング

Source: https://aiand-docs-staging.pages.dev/ja/capabilities/streaming/

すべての生成系エンドポイントはストリーミングに対応しています。リクエストに `stream: true` を指定すると、レスポンスは Server-Sent Events (SSE) として配信されます。

## ストリーミングを有効化する

<Tabs>
<TabItem label="OpenAI SDK">

```python
stream = client.chat.completions.create(
    model="...",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="")
```

</TabItem>
<TabItem label="Anthropic SDK">

```python
with client.messages.stream(
    model="...",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="")
```

</TabItem>
<TabItem label="curl">

```bash
curl https://api.aiand.com/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -d '{"model":"...","stream":true,"messages":[{"role":"user","content":"Hello"}]}'
```

</TabItem>
</Tabs>

## 受信内容

- **OpenAI 形式**: `data: {...}` イベント (`choices[].delta` のチャンク) と最終の `data: [DONE]`。
- **Anthropic 形式**: 型付きイベント — `message_start`、`content_block_delta`、`message_delta`、`message_stop`。
- **ai& の trailer** (OpenAI 形式、オプトイン): リクエストヘッダ `X-Aiand-Metrics: true` を付与すると、モデルの終端イベントの後ろにトークン数・コスト・通貨を含む `metrics` イベントを ai& が追記します。[ストリーミングイベント](/ja/reference/streaming-events/) を参照。

## ストリーム中の usage / コスト

OpenAI 形式では `stream_options.include_usage = true` を指定すると、trailer イベントの直前の最終 SSE イベントに `usage` が含まれます。Anthropic 形式は常に `message_delta` に usage を含みます。

<Aside type="caution">
  最初のチャンクで接続を閉じないでください — `metrics` trailer イベントはモデルの終端イベントの **後** に送信されます。
</Aside>
