> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ストリーミング出力

デフォルトでは、モデルの 1 ターンの応答は完全に生成された後に 1 つの完結したメッセージとして送られます。ストリーミング出力を有効にすると、SDK は生成中に細粒度の増分チャンクを継続的に push します。タイプライター効果や、推論過程・ツール呼び出し過程を個別にレンダリングするのに使えます。

<div id="有効化" />

## 有効化

`QoderAgentOptions` で `include_partial_messages=True` を設定します:

```python theme={null}
from qoder_agent_sdk import QoderAgentOptions, access_token_from_env, query

options = QoderAgentOptions(
    auth=access_token_from_env(),
    include_partial_messages=True,
)

async for msg in query(prompt="Write a short analysis report", options=options):
    ...
```

<div id="タイプライター効果" />

## タイプライター効果

モデルが生成するテキストは増分チャンクとして連続的に届きます。届くたびに出力すればタイプライター効果になります:

```python theme={null}
import sys

from qoder_agent_sdk import StreamEvent


async for msg in query(prompt="...", options=options):
    if isinstance(msg, StreamEvent):
        delta = msg.event.get("delta")
        if delta and delta.get("type") == "text_delta":
            sys.stdout.write(delta["text"])
            sys.stdout.flush()
```

<div id="推論過程" />

## 推論過程

推論モデルは正式な応答の前に「思考」チャンクを産出します:

```python theme={null}
if isinstance(msg, StreamEvent):
    delta = msg.event.get("delta")
    if delta and delta.get("type") == "thinking_delta":
        sys.stdout.write(delta["thinking"])
        sys.stdout.flush()
```

<div id="ツール呼び出しの引数" />

## ツール呼び出しの引数

ツール呼び出しの引数も段階的に生成されます。例えば、モデルが書き込んでいるファイル内容を UI でリアルタイムにレンダリングするのに使えます:

```python theme={null}
if isinstance(msg, StreamEvent):
    delta = msg.event.get("delta")
    if delta and delta.get("type") == "input_json_delta":
        sys.stdout.write(delta["partial_json"])
        sys.stdout.flush()
```

完全なイベント構造は [SDK References](/ja/cli/sdk/python/references#streamevent) を参照してください。
