Files
DS4Server/scripts/endpoint_parity.py
2026-07-25 08:32:35 +02:00

102 lines
2.8 KiB
Python

#!/usr/bin/env python3
import json
import sys
import urllib.request
base_url = sys.argv[1] if len(sys.argv) > 1 else "http://127.0.0.1:9000"
streaming = "--stream" in sys.argv
parameters = {
"type": "object",
"properties": {"text": {"type": "string"}},
"required": ["text"],
}
cases = [
(
"chat",
"/v1/chat/completions",
{
"model": "deepseek-v4-flash",
"messages": [
{
"role": "user",
"content": "Call echo with text hi. Do not answer normally.",
}
],
"tools": [
{
"type": "function",
"function": {
"name": "echo",
"description": "Echo text",
"parameters": parameters,
},
}
],
"reasoning_effort": "none",
"temperature": 0,
"max_tokens": 128,
},
),
(
"anthropic",
"/v1/messages",
{
"model": "deepseek-v4-flash",
"messages": [
{
"role": "user",
"content": "Call echo with text hi. Do not answer normally.",
}
],
"tools": [
{
"name": "echo",
"description": "Echo text",
"input_schema": parameters,
}
],
"thinking": {"type": "disabled"},
"temperature": 0,
"max_tokens": 128,
},
),
(
"responses",
"/v1/responses",
{
"model": "deepseek-v4-flash",
"input": "Call echo with text hi. Do not answer normally.",
"tools": [
{
"type": "function",
"name": "echo",
"description": "Echo text",
"parameters": parameters,
}
],
"reasoning": {"effort": "none"},
"temperature": 0,
"max_output_tokens": 128,
},
),
]
for name, path, payload in cases:
if streaming:
payload["stream"] = True
if name == "chat":
payload["stream_options"] = {"include_usage": True}
request = urllib.request.Request(
base_url + path,
data=json.dumps(payload).encode(),
headers={"Content-Type": "application/json"},
)
with urllib.request.urlopen(request, timeout=120) as response:
if streaming:
for line in response:
if line.strip():
print(name, line.decode().rstrip())
else:
print(name, json.dumps(json.load(response), separators=(",", ":")))