OpenAI WebSocket API: streaming แบบเรียลไทม์ในต้นทุนที่ถูกลง 75%
Smart AIPI รองรับ OpenAI WebSocket API แล้วสำหรับ streaming แบบเรียลไทม์สองทิศทาง latency ต่ำกว่า SSE ใช้การเชื่อมต่อแบบคงอยู่ และถูกกว่าถึง 75% นี่คือวิธีเชื่อมต่อ
สรุปสั้นๆ: ตอนนี้ Smart AIPI รองรับ OpenAI WebSocket API แล้ว เชื่อมต่อไปที่ wss://api.smartaipi.com/v1/realtime ส่ง event response.create และทำ streaming คำตอบแบบเรียลไทม์ผ่านการเชื่อมต่อแบบคงอยู่ ใช้โมเดลเดิม protocol เดิม แต่ถูกกว่าถึง 75%
WebSocket streaming คือวิธีที่เร็วที่สุดในการโต้ตอบกับโมเดล AI ต่างจากคำขอ HTTP แบบดั้งเดิม หรือแม้แต่ Server-Sent Events (SSE) โดย WebSocket จะคงการเชื่อมต่อแบบสองทิศทางไว้ระหว่างแอปพลิเคชันของคุณกับ API ไม่ต้องตั้งค่าการเชื่อมต่อใหม่ทุก request ไม่มี HTTP overhead และไม่มีข้อจำกัดแบบ half-duplex
ตอนนี้ Smart AIPI รองรับ protocol นี้ที่ wss://api.smartaipi.com/v1/realtime — เข้ากันได้เต็มรูปแบบกับ OpenAI WebSocket API โดยมีต้นทุนต่ำกว่าถึง 75%
ทำไมต้องใช้ WebSocket แทน SSE?
Server-Sent Events เป็นมาตรฐานสำหรับ AI streaming มาระยะหนึ่งแล้ว แต่มีข้อแลกเปลี่ยนที่ WebSocket สามารถตัดออกไปได้:
| ความสามารถ | SSE (HTTP) | WebSocket |
|---|---|---|
| การเชื่อมต่อแยกต่อ request | เปิดการเชื่อมต่อใหม่ทุกครั้ง | คงอยู่ (นำกลับมาใช้ซ้ำ) |
| ทิศทาง | Server → Client เท่านั้น | สองทิศทาง |
| หลาย request บนการเชื่อมต่อเดียว | ไม่ได้ | ได้ |
| latency ของ token แรก | สูงกว่า (TCP + TLS ใหม่) | ต่ำกว่า (reuse การเชื่อมต่อ) |
| เหมาะสำหรับ | integration แบบง่าย | agent, แอปแบบเรียลไทม์, งาน throughput สูง |
สำหรับ agent loop ที่เรียก API ต่อเนื่องหลายสิบครั้ง latency ที่ประหยัดได้สะสมจากการใช้การเชื่อมต่อ WebSocket แบบคงอยู่นั้นมีนัยสำคัญมาก
การทำงาน
WebSocket API ใช้ protocol แบบขับเคลื่อนด้วย event คุณส่ง JSON event ไปยัง server และรับ JSON event กลับมา — ทั้งหมดผ่านการเชื่อมต่อแบบคงอยู่เพียงเส้นเดียว
1. เชื่อมต่อและยืนยันตัวตน
เปิดการเชื่อมต่อ WebSocket พร้อม API key ของคุณใน headers:
wss://api.smartaipi.com/v1/realtime
Authorization: Bearer sk-proj-your-smart-aipi-key
OpenAI-Beta: realtime=v1
2. ส่ง request
ส่ง event response.create พร้อม 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?" }
]
}
]
}
}
หมายเหตุ: พารามิเตอร์ store: false จำเป็นสำหรับการเชื่อมต่อ Smart AIPI WebSocket
3. รับ streaming events
server จะส่งลำดับของ event กลับมาเมื่อกำลังสร้างคำตอบ:
| Event | คำอธิบาย |
|---|---|
| response.created | สร้าง response object แล้ว |
| response.output_item.added | เริ่ม output item ใหม่ (message) |
| response.content_part.added | เริ่ม content part ภายใน output item |
| response.output_text.delta | ข้อความเป็นช่วงๆ (เนื้อหาที่ stream จริง) |
| response.output_text.done | ข้อความ output เสร็จสมบูรณ์ |
| response.completed | response ทั้งหมดเสร็จสิ้น (event สุดท้าย) |
ตัวอย่างโค้ด
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 (ทดสอบด่วน)
ตรวจสอบว่า WebSocket handshake สำเร็จด้วยคำสั่งเดียว:
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
หากเชื่อมต่อสำเร็จจะได้ HTTP/1.1 101 Switching Protocols
ควรใช้ WebSocket หรือ SSE เมื่อไร
ทั้งสอง protocol ใช้งานได้ผ่าน Smart AIPI เลือกตามลักษณะการใช้งานของคุณ:
- ใช้ SSE สำหรับ integration แบบง่าย request แบบครั้งเดียว และกรณีที่ต้องการ implementation ที่ง่ายที่สุด เพียงตั้งค่า
stream: trueใน API call มาตรฐานใดก็ได้ - ใช้ WebSocket สำหรับ agent loop, แอปพลิเคชันแบบ interactive, รูปแบบ request ความถี่สูง และทุกที่ที่คุณต้องการ latency ต่ำที่สุดระหว่างการเรียกต่อเนื่อง
ราคา
คำขอ WebSocket คิดค่าบริการแบบเดียวกับคำขอ API มาตรฐาน — ตามการใช้ token โดยส่วนลด 75% ใช้ดังนี้:
| Model | OpenAI Direct | Smart AIPI | ประหยัด |
|---|---|---|---|
| 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% |
เริ่มต้นใช้งาน
- รับ API key — สมัครที่ smartaipi.com (มีเครดิตฟรีให้ ไม่ต้องใช้บัตรเครดิต)
- เชื่อมต่อ — เปิด WebSocket ไปที่
wss://api.smartaipi.com/v1/realtime - ส่ง events — ใช้ envelope
response.createพร้อม model และ prompt ของคุณ - ทำ streaming responses — ประมวลผล event
response.output_text.deltaทันทีที่เข้ามา
หากคุณใช้ OpenAI WebSocket API อยู่แล้ว การเปลี่ยนแปลงมีเพียง URL เท่านั้น ที่เหลือทั้งหมด — authentication, events, รูปแบบ payload — เหมือนเดิม
คำถามที่พบบ่อย
Smart AIPI รองรับ OpenAI WebSocket API หรือไม่?
รองรับ เชื่อมต่อไปที่ wss://api.smartaipi.com/v1/realtime พร้อม API key ของคุณใน header Authorization โดย protocol เข้ากันได้เต็มรูปแบบกับ OpenAI WebSocket Responses API
WebSocket เร็วกว่า SSE หรือไม่?
สำหรับ request ต่อเนื่อง เร็วกว่า WebSocket คงการเชื่อมต่อแบบคงอยู่ไว้ จึงตัด overhead จาก TCP และ TLS handshake ที่ SSE ต้องทำใหม่ในทุก request ออกไป สำหรับ request เดี่ยวแบบครั้งเดียว ความแตกต่างแทบไม่มีนัยสำคัญ
มี model ใดบ้างที่ใช้ผ่าน WebSocket ได้?
ทุก model ที่มีผ่าน Responses API: GPT-5.3 Codex, GPT-5.2, Codex Mini และอื่นๆ โดยระบุ model ใน event response.create
function calling และการใช้ tools ใช้งานผ่าน WebSocket ได้หรือไม่?
ได้ รองรับความสามารถทั้งหมดของ Responses API — function calling, การใช้ tools, structured outputs และบทสนทนาแบบ multi-turn ทั้งหมดทำงานผ่านการเชื่อมต่อ WebSocket ได้
มีการจำกัดเวลาการเชื่อมต่อหรือไม่?
การเชื่อมต่อที่ไม่มีการใช้งานจะถูกปิดหลังจาก 15 นาที ให้ส่งข้อความเป็นระยะหรือเชื่อมต่อใหม่ตามต้องการ การเชื่อมต่อที่กำลัง stream ข้อมูลอยู่จะไม่ถูกตัด
ฉันส่งหลาย request บนการเชื่อมต่อเดียวได้หรือไม่?
ได้ นี่คือหนึ่งในข้อได้เปรียบหลัก หลังจาก response หนึ่งเสร็จแล้ว คุณสามารถส่ง event response.create ถัดไปบนการเชื่อมต่อเดิมได้โดยไม่ต้องเชื่อมต่อใหม่
API gateway ที่รองรับ OpenAI เข้าถึงโมเดล AI ระดับ frontier ด้วยต้นทุนที่ถูกลง 75%
เริ่มต้นฟรี