ZvenoAI
SDK

JavaScript SDK

Используйте OpenAI SDK для JavaScript и TypeScript с ZvenoAI: установка, настройка Node.js, Edge Runtime, streaming и обработка ошибок.

ZvenoAI полностью совместим с OpenAI SDK для Node.js. Меняем только baseURL и ключ — остальной код продолжает работать в серверных, серверлес и Edge окружениях.

Установка

Установка OpenAI SDK
npm install openai
# или
yarn add openai

Для TypeScript автоматически подтянутся типы. Убедитесь, что ZVENOAI_API_KEY доступен в среде выполнения (env variables, секреты Vercel/Cloudflare и т. д.).

Node.js пример

Chat completions в Node.js
import OpenAI from 'openai'

const client = new OpenAI({
  apiKey: process.env.ZVENOAI_API_KEY,
  baseURL: 'https://api.zveno.ai/v1',
})

const completion = await client.chat.completions.create({
  model: 'openai/gpt-4o',
  messages: [{ role: 'user', content: 'Напиши summary о ZvenoAI.' }],
})

console.log(completion.choices[0].message.content)

Streaming в консоль

Обработка stream-ответа
const response = await client.chat.completions.create({
  model: 'openai/gpt-4o-mini',
  stream: true,
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Сгенерируй welcome-сообщение.' },
  ],
})

for await (const event of response) {
  if (event.type === 'token') {
    process.stdout.write(event.token.text)
  }
}

console.log('\n--- done ---')

Next.js / Edge

Edge handler с SSE
export const runtime = 'edge';

export async function POST(req: Request) {
  const { messages } = await req.json();

  const upstream = await fetch('https://api.zveno.ai/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${process.env.ZVENOAI_API_KEY}`,
    },
    body: JSON.stringify({
      model: 'openai/gpt-4o-mini',
      messages,
      stream: true,
    }),
  });

  return new Response(upstream.body, {
    headers: { 'Content-Type': 'text/event-stream' },
  });
}

Ретраи и обработка ошибок

Ретрай запросов с p-retry
import pRetry from 'p-retry'

await pRetry(
  () =>
    client.chat.completions.create({
      model: 'openai/gpt-4o-mini',
      messages,
    }),
  {
    retries: 3,
    onFailedAttempt: (error) => {
      if (error.name === 'RateLimitError') {
        console.warn('Превышен лимит, повторим попытку', error)
      } else {
        throw error
      }
    },
  }
)

On this page