Responses API
Dlaczego /v1/responses
Dział zatytułowany „Dlaczego /v1/responses”Harmony Responses to format domyślny dla nowych modeli (GPT-4.1, GPT-4o, o3, o4-mini). Zapewnia:
- Dostęp do narzędzi (
function_call,code_interpreter,web_search) - Jeden strumień zdarzeń
response_iddo wznawiania rozmów- Równoległe wywołania narzędzi
Legacy /v1/chat/completions nie wspiera tych funkcji.
Główne pojęcia
Dział zatytułowany „Główne pojęcia”| Pole | Co oznacza | Jak używamy w Vista |
|---|---|---|
id / response_id | ID odpowiedzi nadawane przez model (resp-...) | Przechowujemy w ai_conversation_snapshots.response_id i w sessionArchiveService |
previous_response_id | Parametr żądania - która odpowiedź ma być traktowana jako historia | Każdy retry / kolejny turn wysyła ID poprzedniej odpowiedzi zamiast całej transkrypcji |
output[] | Tablica kroków: message, function_call, tool_call_output, error | Reemitujemy 1:1 do UI |
call_id | ID przydzielone przez model każdemu wywołaniu narzędzia | W UI traktujemy jako „tool invocation” |
input[] | Dane wysyłane do API (tekst, obrazy, function_call_output, pliki) | Slash commands i @mentions jako dedykowane elementy |
metadata | Opcjonalny obiekt echa (model go nie interpretuje) | context_id, visit_id, workspace_id |
Architektura w Vista
Dział zatytułowany „Architektura w Vista”flowchart TB subgraph Frontend CP[ChatPanel] SOAP[SOAP Generator] Slash[Slash Commands] end
subgraph Services UAC[UnifiedAIClient] SAS[sessionArchiveService] TR[toolRegistry] end
subgraph Backend SR[ServiceResolver] CH[chat_history.rs] end
CP --> UAC SOAP --> UAC Slash --> UAC UAC --> SR SR --> CH CH -->|response_id| SAS TR -->|tools| UACKluczowe pliki
Dział zatytułowany „Kluczowe pliki”| Plik | Rola |
|---|---|
src-tauri/src/unified_ai/chat/service.rs | Normalizacja do /v1/responses, przechowywanie response_id |
src/features/ai-suite/state/services/client.ts | UnifiedAIClient - serializacja response_id, output, usage |
src/features/ai-suite/state/services/sessionArchiveService.ts | Mirror response_id i output |
src/features/ai-suite/state/services/toolRegistry.ts | Rejestr slash/@ narzędzi |
Quick reference - payload
Dział zatytułowany „Quick reference - payload”Request
Dział zatytułowany „Request”{ "input": [ {"role": "user", "content": [{"type": "input_text", "text": "..."}]}, {"type": "function_call_output", "call_id": "tool-call-id", "output": "{...}"} ], "metadata": {"visit_id": "vis_123", "context_id": "slash:task"}, "previous_response_id": "resp_abc"}Response
Dział zatytułowany „Response”{ "id": "resp_def", "output": [ {"type": "message", "content": [{"type": "output_text", "text": "..."}]}, {"type": "function_call", "name": "vista.lookup_patient", "call_id": "toolu_01...", "arguments": "{...}"} ], "usage": {...}}Następne kroki
Dział zatytułowany „Następne kroki”- Conversation Lifecycle -
response_id, resume, polling - Tool Calls - slash commands,
@mentions,call_id - OpenAI Parity - kompatybilność z oficjalnym API