Responses (OpenAI)
Senast uppdaterad:
På denna sida
POST https://api.staik.se/v1/responsesEndpoint som är kompatibel med OpenAI:s Responses API. OpenAI-SDK:ernas
responses.create, Codex CLI och andra klienter som pratar Responses-protokollet
fungerar direkt. Autentisera med Authorization: Bearer
(samma nyckel).
Anropet körs på samma väg som chat completions:
samma modeller, kvoter, köer, failover och debitering. Användningen bokförs med
endpointen responses.
from openai import OpenAI
client = OpenAI(api_key="sk-st-your-key", base_url="https://api.staik.se/v1")
response = client.responses.create(
model="qwen3.6:35b-a3b",
instructions="Svara kort och på svenska.",
input="Förklara hur en transformer fungerar.",
)
print(response.output_text)Tillståndslöst: skicka hela historiken
staik lagrar aldrig svar. Varje anrop måste innehålla hela konversationen i
input, inklusive tidigare modellsvar, verktygsanrop och verktygsresultat.
store ignoreras och svaret har alltid "store": false.
Funktionsverktyg
Verktyg anges i Responses-format (type: "function" med name och parameters
direkt på verktyget). Modellen svarar med function_call-items, du kör verktyget
och skickar tillbaka resultatet som function_call_output med samma call_id:
import json
tools = [{
"type": "function",
"name": "get_weather",
"description": "Hämta aktuellt väder för en stad.",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
history = [{"role": "user", "content": "Hur är vädret i Göteborg?"}]
response = client.responses.create(model="qwen3.6:35b-a3b", input=history, tools=tools)
# Tillståndslöst: lägg modellens output i historiken innan verktygssvaren.
history += response.output
for item in response.output:
if item.type == "function_call":
args = json.loads(item.arguments)
result = {"city": args["city"], "temp_c": 11} # ditt eget verktyg
history.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": json.dumps(result),
})
response = client.responses.create(model="qwen3.6:35b-a3b", input=history, tools=tools)
print(response.output_text)Det här stöds:
function-verktyg, även flera parallella anrop i samma tur (parallel_tool_calls)namespace-verktyg: grupperade funktioner. Svaret har bådenameochnamespacecustom-verktyg (fritext-indata): svaret blir ettcustom_tool_callmedinputsom sträng, och resultatet skickas somcustom_tool_call_outputtool_choice:auto,none,requiredeller en specifik funktion. Okända värden tolkas somauto- Bilder i verktygssvar:
input_imagemed data-URL ioutput
Hostade verktyg ignoreras
OpenAI:s hostade verktyg (web_search, file_search, code_interpreter,
computer_use, image_generation, mcp med flera) tas bort ur anropet utan fel.
Modellen kan bara anropa funktionsverktyg som du själv kör. Behöver du
webbsökning, använd den
inbyggda webbsökningen
på chat completions.
Mer om hur modellerna hanterar verktyg finns i Tool calling.
Streaming
Sätt stream: true så kommer svaret som server-sent events i Responses-format:
stream = client.responses.create(
model="qwen3.6:35b-a3b",
input="Skriv en haiku om Stockholm.",
stream=True,
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)| Event | När |
|---|---|
response.created, response.in_progress | Direkt när anropet tagits emot |
response.output_item.added | Ett nytt item börjar (text, reasoning eller verktygsanrop) |
response.output_text.delta | Inkrementell text |
response.reasoning_text.delta | Inkrementellt resonemang (thinking-alias) |
response.function_call_arguments.delta | Argumenten till ett verktygsanrop, i ett stycke |
response.output_text.done, response.function_call_arguments.done, response.output_item.done | Ett item är klart |
response.completed | Svaret är klart, med usage |
response.incomplete | max_output_tokens nåddes |
response.failed | Fel under genereringen, se Fel |
Varje event har ett stigande sequence_number.
Verktygsanrop kommer i ett stycke
Text och resonemang strömmas token för token även när anropet har tools. Ett
verktygsanrop skickas när modellen är klar med det: output_item.added, ett enda
function_call_arguments.delta med alla argument, function_call_arguments.done
och output_item.done kommer direkt efter varandra. Kör verktyget när du fått
output_item.done.
Övriga parametrar
| Parameter | Beteende |
|---|---|
model | Alla chattmodeller, även thinking-alias |
instructions | Läggs först som systemprompt. developer-meddelanden i input behandlas också som system |
input | Sträng eller lista med message, function_call, function_call_output, custom_tool_call, custom_tool_call_output och reasoning |
max_output_tokens | Max antal genererade tokens. Nås gränsen får svaret status: "incomplete" |
temperature, top_p | Skickas vidare till modellen |
text.format | json_schema och json_object ger strukturerad output |
reasoning.effort | "none" stänger av thinking. Andra värden ignoreras: slå på thinking med ett thinking-alias |
metadata | Ekas tillbaka i svaret |
store | Ignoreras, inget lagras |
reasoning-items som du skickar tillbaka i input tas bort: tidigare resonemang
skickas aldrig till modellen igen. Bilder skickas som input_image med en
data-URL, med samma modeller och regler som
chat completions.
Usage
usage i response.completed (och i icke-strömmade svar) har Responses-formatet:
input_tokens, input_tokens_details.cached_tokens (prompt-cache-träffar),
output_tokens, output_tokens_details.reasoning_tokens och total_tokens.
Debiteringen är densamma som för chat completions.
Fel
Fel returneras i OpenAI-format:
{"error": {"message", "type", "param", "code"}}.
| Status | När |
|---|---|
| 400 | previous_response_id, conversation, background, item_reference, input_file eller bild via file_id (kräver lagrat tillstånd), eller ogiltig body. param pekar ut fältet |
400 context_length_exceeded | Anropet ryms inte i modellens kontextfönster |
401 invalid_api_key | Saknad eller ogiltig nyckel |
| 429 | Tokengräns (insufficient_quota) eller kapacitetstak (capacity_exceeded), med Retry-After |
Uppstår felet mitt i en ström kommer det som response.failed med code
context_length_exceeded, invalid_prompt eller server_error (tillfälligt, försök
igen). Se Fel för hela listan.
Codex CLI
Codex pratar Responses API och fungerar mot den här endpointen. Konfigurationen finns under Codex CLI.