← Cloudflare AI Gateway / ai-gateway / usage / websockets-api
WebSockets API не в реальном времени
WebSockets API не в реальном времени позволяет устанавливать постоянные соединения для запросов ИИ без необходимости в повторных хендшейках. Такой подход отлично подходит для приложений, которым не требуется взаимодействие в реальном времени, но которые всё же выигрывают от снижения задержки и непрерывной связи.
Настройка WebSockets API
- Сгенерируйте токен AI Gateway с необходимым разрешением AI Gateway Run и включите использование аутентифицированного шлюза.
- Используйте
wss://протокол, чтобы инициировать WebSocket-соединение:wss://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id} - Откройте WebSocket-соединение, аутентифицированное токеном Cloudflare с разрешением AI Gateway Run.
Пример запроса
import WebSocket from "ws";
const ws = new WebSocket(
"wss://gateway.ai.cloudflare.com/v1/my-account-id/my-gateway/",
{
headers: {
"cf-aig-authorization": "Bearer AI_GATEWAY_TOKEN",
},
},
);
ws.on("open", () => {
ws.send(
JSON.stringify({
type: "universal.create",
request: {
eventId: "my-request",
provider: "workers-ai",
endpoint: "@cf/meta/llama-3.1-8b-instruct",
headers: {
Authorization: "Bearer WORKERS_AI_TOKEN",
"Content-Type": "application/json",
},
query: {
prompt: "tell me a joke",
},
},
}),
);
})
ws.on("message", (message) => {
console.log(message.toString());
});Пример ответа
{
"type": "universal.created",
"metadata": {
"cacheStatus": "MISS",
"eventId": "my-request",
"logId": "01JC3R94FRD97JBCBX3S0ZAXKW",
"step": "0",
"contentType": "application/json"
},
"response": {
"result": {
"response": "Why was the math book sad? Because it had too many problems. Would you like to hear another one?"
},
"success": true,
"errors": [],
"messages": []
}
}Пример потокового запроса
Для стриминговых запросов AI Gateway отправляет начальное сообщение с метаданными запроса, указывающее на начало стрима:
{
"type": "universal.created",
"metadata": {
"cacheStatus": "MISS",
"eventId": "my-request",
"logId": "01JC40RB3NGBE5XFRZGBN07572",
"step": "0",
"contentType": "text/event-stream"
}
}После этого первоначального сообщения все потоковые фрагменты передаются в реальном времени в WebSocket-соединение по мере поступления от поставщика инференса. Только eventId поле включается в метаданные этих фрагментов потоковой передачи. eventId позволяет AI Gateway включать определяемый клиентом ID в каждое сообщение, даже в потоковой среде WebSocket.
{
"type": "universal.stream",
"metadata": {
"eventId": "my-request"
},
"response": {
"response": "would"
}
}Когда все чанки запроса переданы, AI Gateway отправляет финальное сообщение, сигнализирующее о завершении запроса. Для большей гибкости это сообщение снова содержит все метаданные, хотя они уже были переданы в начале потоковой передачи.
{
"type": "universal.done",
"metadata": {
"cacheStatus": "MISS",
"eventId": "my-request",
"logId": "01JC40RB3NGBE5XFRZGBN07572",
"step": "0",
"contentType": "text/event-stream"
}
}