Realtime API
AISIX AI 网关在 GET /v1/realtime 通过 WebSocket 转发 OpenAI Realtime API。网关会在接受连接前完成客户端认证、模型别名解析、访问控制和限流策略检查,然后在客户端与服务提供方之间双向转发事件。
本指南将演示如何通过网关连接 Realtime 客户端,并说明该端点的关键会话行为。
前提条件
开始前请准备:
- 一个可处理代理请求的 AISIX 网关。
- 一个可访问目标模型别名的调用方 API Key。
- 一个由支持 OpenAI Realtime 协议的服务提供方支持的模型别名。
导出服务器端示例使用的网关连接和请求值:
# AISIX_PROXY 使用 http 或 https,且不含尾部斜杠或端点路径。
# 本地快速入门使用 http://127.0.0.1:3000。
export AISIX_PROXY="YOUR_AISIX_GATEWAY_URL"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"
export AISIX_MODEL="realtime-prod"
目前支持兼容 OpenAI 的服务提供方(适配器为 openai,包括自定义 api_base 部署)和 Azure OpenAI(适配器为 azure-openai,使用 /openai/realtime 和 api-key 认证)。Gemini Live 和 Bedrock 使用不同的实时事件协议,不通过该端点提供。
连接客户端
通过 model 查询参数选择模型 。服务端客户端使用标准请求头认证:
import WebSocket from "ws";
const realtimeUrl = new URL("/v1/realtime", process.env.AISIX_PROXY);
realtimeUrl.protocol = realtimeUrl.protocol === "https:" ? "wss:" : "ws:";
realtimeUrl.searchParams.set("model", process.env.AISIX_MODEL);
const ws = new WebSocket(realtimeUrl, {
headers: { Authorization: `Bearer ${process.env.AISIX_API_KEY}` },
});
浏览器客户端无法设置 WebSocket 请求头。可以像 OpenAI 浏览器示例一样,把调用方 API Key 作为子协议项传入。网关会回显 realtime 子协议:
// 使用不含端点路径的绝对 HTTP(S) 网关 URL,例如 https://gateway.example.com
const aisixProxy = "YOUR_AISIX_GATEWAY_URL";
const aisixApiKey = "YOUR_CALLER_API_KEY";
const aisixModel = "realtime-prod";
const realtimeUrl = new URL("/v1/realtime", aisixProxy);
realtimeUrl.protocol = realtimeUrl.protocol === "https:" ? "wss:" : "ws:";
realtimeUrl.searchParams.set("model", aisixModel);
const ws = new WebSocket(realtimeUrl, [
"realtime",
`openai-insecure-api-key.${aisixApiKey}`,
]);