main
1#!/usr/bin/env -S rye run python
2from typing import List
3
4import rich
5from pydantic import BaseModel
6
7from openai import OpenAI
8
9
10class Step(BaseModel):
11 explanation: str
12 output: str
13
14
15class MathResponse(BaseModel):
16 steps: List[Step]
17 final_answer: str
18
19
20client = OpenAI()
21id = None
22with client.responses.stream(
23 input="solve 8x + 31 = 2",
24 model="gpt-4o-2024-08-06",
25 text_format=MathResponse,
26 background=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.stream(
40 response_id=id,
41 starting_after=10,
42 text_format=MathResponse,
43) as stream:
44 for event in stream:
45 if "output_text" in event.type:
46 rich.print(event)
47
48 rich.print(stream.get_final_response())