ساخت پایپلاینهای بلادرنگ WebSocket و RAG چندوجهی با /v1/realtime و /v1/files
آموزش گامبهگام ترکیب اندپوینتهای /v1/files، /v1/embeddings و نشستهای پایدار وبسوکت /v1/realtime برای ساخت دستیارهای تعاملی و کمتأخیر.
۱. آپلود اسناد در /v1/files و ساخت بردار با /v1/embeddings
زوپیر اندپوینت سازمانی و رمزنگاریشدهٔ /v1/files را برای آپلود فایلهای PDF، Markdown، CSV و کدهای منبع تا سقف ۲۰ مگابایت ارائه میدهد. پس از یک بار آپلود، میتوانید تنها با ارسال file_id در درخواستهای /v1/chat/completions یا /v1/responses از محتوای فایل استفاده کنید و از ارسال تکراری رشتههای حجیم Base64 در هر پیام جلوگیری نمایید.
همچنین برای جستجوی معنایی روی اسناد بزرگ، میتوانید از اندپوینت POST /v1/embeddings با ابعاد برداری دلخواه (dimensions) استفاده کنید.
// یک بار آپلود در /v1/files و استفاده مکرر با file_id
const upload = await fetch('https://api.zopyr.com/v1/files', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ZOPYR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
filename: 'runbook.md',
purpose: 'user_data',
content: '# Production Incident Runbook\n1. Check Redis latency...',
}),
}).then((r) => r.json());
// ارجاع به file_id در چت
const chat = await fetch('https://api.zopyr.com/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ZOPYR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'google/gemini-4-argon',
messages: [{
role: 'user',
content: [
{ type: 'text', text: 'Summarize step 1 of the attached runbook.' },
{ type: 'file', file: { file_id: upload.id } },
],
}],
}),
});۲. ارتباط پایدار و دوطرفه با وبسوکت (/v1/realtime)
برای دستیارهای صوتی یا محیطهای تعاملی زنده، باز کردن یک درخواست HTTP جدید در هر نوبت سربار اضافی ایجاد میکند. با اتصال به wss://api.zopyr.com/v1/realtime میتوانید یک نشست پایدار باز کنید و با ارسال رویدادهای conversation.item.create و response.create، توکنها را در لحظه روی فریمهای WebSocket دریافت نمایید.