Przejdź do głównej zawartości

OpenAI Parity

Vista mirroruje oficjalne OpenAI Responses API (vista-api/openapi.json), zachowując byte-for-byte kompatybilność.

HeaderOpis
Authorization: Bearer <OPENAI_API_KEY>Obowiązkowy
OpenAI-OrganizationOpcjonalny routing
OpenAI-ProjectOpcjonalny routing
X-Client-Request-IdObservability (client generated)
x-request-idOpenAI response header
x-ratelimit-*Rate-limit metadata
EndpointMethodPurposeVista mapping
/v1/responsesPOSTCreate model responsepaths['/v1/responses']
/v1/responses/{id}GET/DELETEFetch/remove stored responsepaths['/v1/responses/{response_id}']
/v1/responses/{id}/cancelPOSTCancel background/streaming runssame
/v1/responses/{id}/eventsGET + SSEReplay deltas or attach livesame
/v1/responses/{id}/input_itemsGETInspect input lineagesame
/v1/responses/input_tokensPOSTPreflight token countssame
TypeOpis
input_textUTF-8 strings + optional mime type
input_imagebase64 or URL + detail flag (low/high)
input_audioPCM/WAV/Ogg bytes + sample_rate_hz, channels, language_hint
input_fileArbitrary binary (base64) + filename/mime
tool_resultStructured output returned after tool run
FieldDescription
instructionsSystem prompt or array of input_text system items
conversationConversation ID or explicit list of historical items
stream / stream_optionsStreaming toggles (channels + obfuscation)
tool_choiceauto, none, or forced { type, name }
tools[]Built-in (web_search, file_search, etc.), custom functions, or MCP definitions
output_audioFormat/voice/sample-rate for TTS responses
reasoningeffort, enable_chain_of_thought for o-series
storeWhether response should persist for future GETs

SSE protocol emits typed events with type, sequence_number, and contextual IDs:

EventPurpose
response.output_text.delta / .doneIncremental assistant text
response.output_audio.deltaBase64 audio chunks (when output_audio requested)
response.tool_call.delta / .doneStreaming tool call arguments
response.refusal.delta / .doneRefusal text stream
response.errorTerminal failure

Vista mapuje te eventy 1:1 przez ResponseEvent - frontend renderer traktuje OpenAI i Vista identycznie.

EndpointPurpose
GET /v1/responses/{id}/input_itemsReturns exact items provided when response was created
GET/POST /v1/conversations/{conversation_id}/itemsAppend or fetch multi-turn history

Pagination: limit, after, order z envelope object: 'list'.

  • Tools opisane JSON Schema dla arguments (identycznie jak OpenAI tools)
  • Built-ins: web_search, file_search, code_interpreter, computer
  • MCP: type: 'mcp' definitions → server issues MCP RPCs

OpenAI Responses API może ingestować/outputować audio, ale Vista trzyma premium STT pod /stt/v1/....

Envelope dla response.output_audio.delta matchuje format OpenAI - clients mogą swapować providery bez zmian kodu.

Każdy endpoint zwraca na failure:

{
"error": {
"code": "invalid_request_error",
"message": "...",
"param": "...",
"type": "..."
}
}

Kody: invalid_request_error, rate_limit_error, etc. - identyczne z OpenAI dla predykowalnych contract testów.

  1. Każda zmiana w Vista API musi być backwards-compatible z OpenAI
  2. Contract testy porównują Vista ↔ OpenAI behawior
  3. Frontend renderer nie rozróżnia providerów