1import pytest
2from openai import OpenAI
3from utils import *
4
5server: ServerProcess
6
7@pytest.fixture(autouse=True)
8def create_server():
9 global server
10 server = ServerPreset.tinyllama2()
11
12def test_responses_with_openai_library():
13 global server
14 server.start()
15 client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1")
16 res = client.responses.create(
17 model="gpt-4.1",
18 input=[
19 {"role": "system", "content": "Book"},
20 {"role": "user", "content": "What is the best book"},
21 ],
22 max_output_tokens=8,
23 temperature=0.8,
24 )
25 assert res.id.startswith("resp_")
26 assert res.output[0].id is not None
27 assert res.output[0].id.startswith("msg_")
28 assert match_regex("(Suddenly)+", res.output_text)
29
30def test_responses_stream_with_openai_library():
31 global server
32 server.start()
33 client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1")
34 stream = client.responses.create(
35 model="gpt-4.1",
36 input=[
37 {"role": "system", "content": "Book"},
38 {"role": "user", "content": "What is the best book"},
39 ],
40 max_output_tokens=8,
41 temperature=0.8,
42 stream=True,
43 )
44
45 gathered_text = ''
46 resp_id = ''
47 msg_id = ''
48 for r in stream:
49 if r.type == "response.created":
50 assert r.response.id.startswith("resp_")
51 resp_id = r.response.id
52 if r.type == "response.in_progress":
53 assert r.response.id == resp_id
54 if r.type == "response.output_item.added":
55 assert r.item.id is not None
56 assert r.item.id.startswith("msg_")
57 msg_id = r.item.id
58 if (r.type == "response.content_part.added" or
59 r.type == "response.output_text.delta" or
60 r.type == "response.output_text.done" or
61 r.type == "response.content_part.done"):
62 assert r.item_id == msg_id
63 if r.type == "response.output_item.done":
64 assert r.item.id == msg_id
65
66 if r.type == "response.output_text.delta":
67 gathered_text += r.delta
68 if r.type == "response.completed":
69 assert r.response.id.startswith("resp_")
70 assert r.response.output[0].id is not None
71 assert r.response.output[0].id.startswith("msg_")
72 assert gathered_text == r.response.output_text
73 assert match_regex("(Suddenly)+", r.response.output_text)