summaryrefslogtreecommitdiff
path: root/llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
commitb333b06772c89d96aacb5490d6a219fba7c09cc6 (patch)
tree211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py
downloadllmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz
Engage!
Diffstat (limited to 'llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py')
-rw-r--r--llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py b/llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py
new file mode 100644
index 0000000..7aab4a8
--- /dev/null
+++ b/llama.cpp/tools/server/tests/unit/test_compat_oai_responses.py
@@ -0,0 +1,73 @@
+import pytest
+from openai import OpenAI
+from utils import *
+
+server: ServerProcess
+
+@pytest.fixture(autouse=True)
+def create_server():
+ global server
+ server = ServerPreset.tinyllama2()
+
+def test_responses_with_openai_library():
+ global server
+ server.start()
+ client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1")
+ res = client.responses.create(
+ model="gpt-4.1",
+ input=[
+ {"role": "system", "content": "Book"},
+ {"role": "user", "content": "What is the best book"},
+ ],
+ max_output_tokens=8,
+ temperature=0.8,
+ )
+ assert res.id.startswith("resp_")
+ assert res.output[0].id is not None
+ assert res.output[0].id.startswith("msg_")
+ assert match_regex("(Suddenly)+", res.output_text)
+
+def test_responses_stream_with_openai_library():
+ global server
+ server.start()
+ client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1")
+ stream = client.responses.create(
+ model="gpt-4.1",
+ input=[
+ {"role": "system", "content": "Book"},
+ {"role": "user", "content": "What is the best book"},
+ ],
+ max_output_tokens=8,
+ temperature=0.8,
+ stream=True,
+ )
+
+ gathered_text = ''
+ resp_id = ''
+ msg_id = ''
+ for r in stream:
+ if r.type == "response.created":
+ assert r.response.id.startswith("resp_")
+ resp_id = r.response.id
+ if r.type == "response.in_progress":
+ assert r.response.id == resp_id
+ if r.type == "response.output_item.added":
+ assert r.item.id is not None
+ assert r.item.id.startswith("msg_")
+ msg_id = r.item.id
+ if (r.type == "response.content_part.added" or
+ r.type == "response.output_text.delta" or
+ r.type == "response.output_text.done" or
+ r.type == "response.content_part.done"):
+ assert r.item_id == msg_id
+ if r.type == "response.output_item.done":
+ assert r.item.id == msg_id
+
+ if r.type == "response.output_text.delta":
+ gathered_text += r.delta
+ if r.type == "response.completed":
+ assert r.response.id.startswith("resp_")
+ assert r.response.output[0].id is not None
+ assert r.response.output[0].id.startswith("msg_")
+ assert gathered_text == r.response.output_text
+ assert match_regex("(Suddenly)+", r.response.output_text)