OpenAI WebSocket API: streaming w czasie rzeczywistym przy koszcie niższym o 75%
Smart AIPI obsługuje teraz WebSocket API od OpenAI do dwukierunkowego streaming w czasie rzeczywistym. Niższe opóźnienia niż SSE, trwałe połączenia i o 75% niższy koszt. Oto jak się połączyć.
W skrócie: Smart AIPI obsługuje teraz OpenAI WebSocket API. Połącz się z wss://api.smartaipi.com/v1/realtime, wyślij zdarzenie response.create i streamuj odpowiedzi w czasie rzeczywistym przez trwałe połączenie. Te same modele, ten sam protokół, koszt niższy o 75%.
WebSocket streaming to najszybszy sposób interakcji z modelami AI. W przeciwieństwie do tradycyjnych żądań HTTP, a nawet Server-Sent Events (SSE), WebSocket utrzymuje trwałe, dwukierunkowe połączenie między Twoją aplikacją a API. Bez zestawiania połączenia dla każdego żądania, bez narzutu HTTP, bez ograniczeń half-duplex.
Smart AIPI obsługuje teraz ten protokół pod adresem wss://api.smartaipi.com/v1/realtime — w pełni zgodny z OpenAI WebSocket API i tańszy o 75%.
Dlaczego WebSocket zamiast SSE?
Server-Sent Events były standardem dla AI streaming, ale wiążą się z kompromisami, które WebSocket eliminuje:
| Funkcja | SSE (HTTP) | WebSocket |
|---|---|---|
| Połączenie na żądanie | Nowe połączenie za każdym razem | Trwałe (ponownie używane) |
| Kierunek | Tylko Server → Client | Dwukierunkowy |
| Wiele żądań w jednym połączeniu | Nie | Tak |
| Opóźnienie do pierwszego token | Wyższe (nowe TCP + TLS) | Niższe (ponowne użycie połączenia) |
| Najlepsze zastosowanie | Proste integracje | Agenci, aplikacje czasu rzeczywistego, wysoka przepustowość |
Dla pętli agentów wykonujących dziesiątki kolejnych wywołań API oszczędności opóźnień wynikające z trwałego połączenia WebSocket są znaczące.
Jak to działa
WebSocket API używa protokołu sterowanego zdarzeniami. Wysyłasz zdarzenia JSON do serwera i odbierasz zdarzenia JSON w odpowiedzi — wszystko przez jedno trwałe połączenie.
1. Połącz się i uwierzytelnij
Otwórz połączenie WebSocket z API key w nagłówkach:
wss://api.smartaipi.com/v1/realtime
Authorization: Bearer sk-proj-your-smart-aipi-key
OpenAI-Beta: realtime=v1
2. Wyślij żądanie
Wyślij zdarzenie response.create ze swoim prompt:
{
"type": "response.create",
"response": {
"model": "gpt-5.3-codex",
"store": false,
"instructions": "You are a helpful assistant.",
"input": [
{
"type": "message",
"role": "user",
"content": [
{ "type": "input_text", "text": "What is WebSocket?" }
]
}
]
}
}
Uwaga: Parametr store: false jest wymagany dla połączeń Smart AIPI WebSocket.
3. Odbieraj zdarzenia streaming
Serwer odsyła sekwencję zdarzeń podczas generowania odpowiedzi:
| Zdarzenie | Opis |
|---|---|
| response.created | Obiekt odpowiedzi został utworzony |
| response.output_item.added | Rozpoczęto nowy element wyjściowy (wiadomość) |
| response.content_part.added | Rozpoczęto część treści w elemencie wyjściowym |
| response.output_text.delta | Fragment tekstu (faktycznie streamowana treść) |
| response.output_text.done | Wyjście tekstowe jest kompletne |
| response.completed | Cała odpowiedź została zakończona (zdarzenie końcowe) |
Przykłady kodu
Node.js
import WebSocket from "ws";
const ws = new WebSocket("wss://api.smartaipi.com/v1/realtime", {
headers: {
"Authorization": "Bearer sk-proj-your-key",
"OpenAI-Beta": "realtime=v1",
},
});
ws.on("open", () => {
ws.send(JSON.stringify({
type: "response.create",
response: {
model: "gpt-5.3-codex",
store: false,
input: [{
type: "message",
role: "user",
content: [{ type: "input_text", text: "Hello!" }],
}],
},
}));
});
ws.on("message", (data) => {
const event = JSON.parse(data);
if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
if (event.type === "response.completed") {
console.log("\n\nDone. Usage:", event.response.usage);
ws.close();
}
});
Python
import asyncio
import json
import websockets
async def main():
headers = {
"Authorization": "Bearer sk-proj-your-key",
"OpenAI-Beta": "realtime=v1",
}
async with websockets.connect(
"wss://api.smartaipi.com/v1/realtime",
extra_headers=headers,
) as ws:
await ws.send(json.dumps({
"type": "response.create",
"response": {
"model": "gpt-5.3-codex",
"store": False,
"input": [{
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "Hello!"}],
}],
},
}))
async for message in ws:
event = json.loads(message)
if event["type"] == "response.output_text.delta":
print(event["delta"], end="", flush=True)
if event["type"] == "response.completed":
print(f"\n\nUsage: {event['response']['usage']}")
break
asyncio.run(main())
cURL (szybki test)
Sprawdź, czy handshake WebSocket kończy się powodzeniem, jednym poleceniem:
curl -isN --http1.1 \
-H "Connection: Upgrade" \
-H "Upgrade: websocket" \
-H "Sec-WebSocket-Version: 13" \
-H "Sec-WebSocket-Key: dGVzdA==" \
-H "Authorization: Bearer sk-proj-your-key" \
-H "OpenAI-Beta: realtime=v1" \
https://api.smartaipi.com/v1/realtime
Pomyślne połączenie zwraca HTTP/1.1 101 Switching Protocols.
Kiedy używać WebSocket, a kiedy SSE
Oba protokoły działają przez Smart AIPI. Wybór zależy od Twojego przypadku użycia:
- Użyj SSE dla prostych integracji, jednorazowych żądań i wtedy, gdy chcesz najprostszą możliwą implementację. Ustaw
stream: truew dowolnym standardowym wywołaniu API. - Użyj WebSocket dla pętli agentów, aplikacji interaktywnych, wzorców żądań o wysokiej częstotliwości i wszędzie tam, gdzie potrzebujesz możliwie najniższego opóźnienia między kolejnymi wywołaniami.
Cennik
Żądania WebSocket są rozliczane tak samo jak standardowe żądania API — według zużycia token. Obniżka 75% dotyczy:
| Model | OpenAI Direct | Smart AIPI | Oszczędność |
|---|---|---|---|
| GPT-5.3 Codex (output) | $14.00 / 1M tokens | $3.50 / 1M tokens | 75% |
| GPT-5.2 (output) | $10.00 / 1M tokens | $2.50 / 1M tokens | 75% |
| Codex Mini (output) | $0.60 / 1M tokens | $0.15 / 1M tokens | 75% |
Pierwsze kroki
- Zdobądź API key — Zarejestruj się na smartaipi.com (darmowe kredyty w zestawie, karta kredytowa nie jest wymagana)
- Połącz się — Otwórz WebSocket do
wss://api.smartaipi.com/v1/realtime - Wysyłaj zdarzenia — Użyj obiektu
response.createz modelem i prompt - Streamuj odpowiedzi — Przetwarzaj zdarzenia
response.output_text.deltaw momencie ich nadejścia
Jeśli już używasz OpenAI WebSocket API, jedyną zmianą jest URL. Wszystko inne — uwierzytelnianie, zdarzenia, format payload — pozostaje identyczne.
Najczęściej zadawane pytania
Czy Smart AIPI obsługuje OpenAI WebSocket API?
Tak. Połącz się z wss://api.smartaipi.com/v1/realtime, używając swojego API key w nagłówku Authorization. Protokół jest w pełni zgodny z OpenAI WebSocket Responses API.
Czy WebSocket jest szybszy niż SSE?
Dla kolejnych żądań tak. WebSocket utrzymuje trwałe połączenie, eliminując narzut handshake TCP i TLS, który SSE ponosi przy każdym nowym żądaniu. Dla pojedynczych, jednorazowych żądań różnica jest pomijalna.
Jakie modele działają przez WebSocket?
Wszystkie modele dostępne przez Responses API: GPT-5.3 Codex, GPT-5.2, Codex Mini i inne. Określ model w zdarzeniu response.create.
Czy function calling i użycie narzędzi działają przez WebSocket?
Tak. Dostępny jest pełny zestaw funkcji Responses API — function calling, użycie narzędzi, structured outputs i wieloturowe rozmowy działają przez połączenie WebSocket.
Czy istnieje limit czasu połączenia?
Bezczynne połączenia są zamykane po 15 minutach. Wysyłaj okresowe wiadomości lub łącz się ponownie w razie potrzeby. Aktywne połączenia streamujące dane nie są przerywane.
Czy mogę wysłać wiele żądań przez jedno połączenie?
Tak. To jedna z kluczowych zalet. Po zakończeniu odpowiedzi wyślij kolejne zdarzenie response.create w tym samym połączeniu, bez ponownego łączenia.
Brama API kompatybilna z OpenAI. Uzyskaj dostęp do frontier AI models przy koszcie niższym o 75%.
Zacznij za darmo