OpenAI WebSocket API:以低 75% 成本实现实时 streaming
Smart AIPI 现已支持 OpenAI 的 WebSocket API,用于实时双向 streaming。延迟低于 SSE、支持持久连接,并且便宜 75%。以下是连接方法。
TL;DR:Smart AIPI 现已支持 OpenAI 的 WebSocket API。连接到 wss://api.smartaipi.com/v1/realtime,发送一个 response.create 事件,即可通过持久连接实时 stream 响应。相同模型、相同协议、成本低 75%。
WebSocket streaming 是与 AI 模型交互的最快方式。不同于传统 HTTP 请求,甚至是 Server-Sent Events (SSE),WebSocket 会在你的应用和 API 之间保持一个持久的双向连接。无需为每个请求重新建立连接,没有 HTTP 开销,也没有半双工限制。
Smart AIPI 现在支持这一协议,地址为 wss://api.smartaipi.com/v1/realtime —— 与 OpenAI 的 WebSocket API 完全兼容,同时成本低 75%。
为什么选择 WebSocket 而不是 SSE?
Server-Sent Events 一直是 AI streaming 的标准方案,但它存在一些 WebSocket 可以消除的权衡:
| 特性 | SSE (HTTP) | WebSocket |
|---|---|---|
| 每个请求的连接 | 每次都新建连接 | 持久连接(可复用) |
| 通信方向 | 仅 Server → Client | 双向 |
| 单个连接上的多个请求 | 否 | 是 |
| 首个 token 延迟 | 更高(新的 TCP + TLS) | 更低(连接复用) |
| 适合场景 | 简单集成 | Agents、实时应用、高吞吐 |
对于会连续发起几十次 API 调用的 agent loop,持久 WebSocket 连接带来的累计延迟节省非常明显。
工作原理
WebSocket API 采用事件驱动协议。你向服务器发送 JSON 事件,服务器返回 JSON 事件——全部通过同一个持久连接完成。
1. 连接并认证
在 headers 中携带你的 API key,打开一个 WebSocket 连接:
wss://api.smartaipi.com/v1/realtime
Authorization: Bearer sk-proj-your-smart-aipi-key
OpenAI-Beta: realtime=v1
2. 发送请求
使用你的 prompt 发送一个 response.create 事件:
{
"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 事件
服务器会在生成响应时按顺序返回一系列事件:
| 事件 | 说明 |
|---|---|
| response.created | 响应对象已创建 |
| response.output_item.added | 新的输出项(message)已开始 |
| response.content_part.added | 输出项中的内容部分已开始 |
| response.output_text.delta | 文本片段(实际 stream 出来的内容) |
| response.output_text.done | 文本输出已完成 |
| response.completed | 整个响应已结束(终止事件) |
代码示例
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
这两种协议都可通过 Smart AIPI 使用。请根据你的使用场景选择:
- 使用 SSE:适合简单集成、一次性请求,以及你希望实现方式尽可能简单的场景。在任何标准 API 调用中设置
stream: true即可。 - 使用 WebSocket:适合 agent loop、交互式应用、高频请求模式,以及任何需要在连续调用之间尽可能降低延迟的场景。
定价
WebSocket 请求的计费方式与标准 API 请求相同——按 token 用量计费。75% 折扣同样适用:
| 模型 | 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 注册(包含免费额度,无需信用卡)
- 连接 —— 打开到
wss://api.smartaipi.com/v1/realtime的 WebSocket 连接 - 发送事件 —— 使用
response.createenvelope,传入你的模型和 prompt - stream 响应 —— 在收到
response.output_text.delta事件时进行处理
如果你已经在使用 OpenAI 的 WebSocket API,唯一需要修改的就是 URL。其余部分——认证、事件、payload 格式——完全一致。
常见问题
Smart AIPI 支持 OpenAI WebSocket API 吗?
支持。使用你的 API key 并在 Authorization header 中传递,连接到 wss://api.smartaipi.com/v1/realtime 即可。该协议与 OpenAI 的 WebSocket Responses API 完全兼容。
WebSocket 比 SSE 更快吗?
对于连续请求,是的。WebSocket 保持持久连接,可消除 SSE 在每次新请求中都会产生的 TCP 和 TLS handshake 开销。对于单次的一次性请求,差异可以忽略不计。
哪些模型可以通过 WebSocket 使用?
所有通过 Responses API 提供的模型都可以:GPT-5.3 Codex、GPT-5.2、Codex Mini 等等。在 response.create 事件中指定模型即可。
function calling 和 tool use 可以通过 WebSocket 使用吗?
可以。完整的 Responses API 功能集都可用——function calling、tool use、structured outputs 以及多轮对话,都可以通过 WebSocket 连接运行。
连接有时间限制吗?
空闲连接会在 15 分钟后关闭。你可以按需定期发送消息,或重新连接。正在 stream 数据的活跃连接不会被中断。
我可以在一个连接上发送多个请求吗?
可以。这正是它的核心优势之一。一个响应完成后,无需重连,直接在同一连接上再发送一个 response.create 事件即可。