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()
20
21completion = client.chat.completions.parse(
22 model="gpt-4o-2024-08-06",
23 messages=[
24 {"role": "system", "content": "You are a helpful math tutor."},
25 {"role": "user", "content": "solve 8x + 31 = 2"},
26 ],
27 response_format=MathResponse,
28)
29
30message = completion.choices[0].message
31if message.parsed:
32 rich.print(message.parsed.steps)
33
34 print("answer: ", message.parsed.final_answer)
35else:
36 print(message.refusal)