main
1from typing import List
2
3import rich
4from pydantic import BaseModel
5
6from openai import OpenAI
7
8
9class Step(BaseModel):
10 explanation: str
11 output: str
12
13
14class MathResponse(BaseModel):
15 steps: List[Step]
16 final_answer: str
17
18
19client = OpenAI()
20id = None
21
22with client.responses.create(
23 input="solve 8x + 31 = 2",
24 model="gpt-4o-2024-08-06",
25 background=True,
26 stream=True,
27) as stream:
28 for event in stream:
29 if event.type == "response.created":
30 id = event.response.id
31 if "output_text" in event.type:
32 rich.print(event)
33 if event.sequence_number == 10:
34 break
35
36print("Interrupted. Continuing...")
37
38assert id is not None
39with client.responses.retrieve(
40 response_id=id,
41 stream=True,
42 starting_after=10,
43) as stream:
44 for event in stream:
45 if "output_text" in event.type:
46 rich.print(event)