| import sys |
| from pathlib import Path |
|
|
| _EXAMPLES_ROOT = Path(__file__).resolve().parents[1] |
| if str(_EXAMPLES_ROOT) not in sys.path: |
| sys.path.insert(0, str(_EXAMPLES_ROOT)) |
|
|
| from _bootstrap import ensure_local_sdk_src, runtime_config |
|
|
| ensure_local_sdk_src() |
|
|
| import asyncio |
|
|
| from openai_codex import AsyncCodex |
|
|
|
|
| async def main() -> None: |
| async with AsyncCodex(config=runtime_config()) as codex: |
| thread = await codex.thread_start( |
| model="gpt-5.4", config={"model_reasoning_effort": "high"} |
| ) |
| turn = await thread.turn("Explain SIMD in 3 short bullets.") |
|
|
| event_count = 0 |
| saw_started = False |
| saw_delta = False |
| completed_status = None |
| completed_texts = [] |
|
|
| async for event in turn.stream(): |
| event_count += 1 |
| if event.method == "turn/started": |
| saw_started = True |
| print("stream.started") |
| continue |
| if event.method == "item/agentMessage/delta": |
| delta = event.payload.delta |
| if delta: |
| if not saw_delta: |
| print("assistant> ", end="", flush=True) |
| print(delta, end="", flush=True) |
| saw_delta = True |
| continue |
| if event.method == "item/completed": |
| root = event.payload.item.root |
| if root.type == "agentMessage": |
| completed_texts.append(root.text) |
| continue |
| if event.method == "turn/completed": |
| completed_status = event.payload.turn.status.value |
|
|
| if completed_status is None: |
| raise RuntimeError("stream ended without turn/completed") |
| if saw_delta: |
| print() |
| else: |
| final_text = "".join(completed_texts).strip() |
| print("assistant>", final_text) |
|
|
| print("stream.started.seen:", saw_started) |
| print("stream.completed:", completed_status) |
| print("events.count:", event_count) |
|
|
|
|
| if __name__ == "__main__": |
| asyncio.run(main()) |
|
|