Примеры, которые можно запустить
Шаблоны программ на Python и Node.js, а также потокового запроса Bash. Исходники доступны для скачивания.
provider/example-model — только образец формата ID. Перед запуском любого запроса скопируйте действующий ID в каталоге моделей или через GET /api/v1/models. Цены, лимиты и доступность также проверяйте в кабинете.
Ключ и выбор маршрута
Создайте ключ в кабинете и задайте переменную WIO_API_KEY. В примерах указан вымышленный provider/example-model. Перед запуском замените его на полный ID из каталога. Не публикуйте ключ вместе с исходным кодом.
export WIO_API_KEY="wio-live-ВАШ_КЛЮЧ"Обычный ответ без зависимостей
Файл chat.py использует только стандартную библиотеку Python, проверяет HTTP-статус и выводит текст. Запуск: python3 chat.py.
import json
import os
import urllib.error
import urllib.request
key = os.environ["WIO_API_KEY"]
payload = {"model": "provider/example-model", "messages": [{"role": "user", "content": "Привет!"}]}
request = urllib.request.Request(
"https://api.ai.wiky.su/v1/chat/completions",
data=json.dumps(payload).encode("utf-8"),
headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
)
try:
with urllib.request.urlopen(request, timeout=90) as response:
data = json.load(response)
except urllib.error.HTTPError as error:
raise SystemExit(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}")
print(data["choices"][0]["message"]["content"])Обычный ответ через fetch
Node.js 18+ содержит fetch без дополнительного пакета. Запуск: node chat.mjs.
const key = process.env.WIO_API_KEY;
if (!key) throw new Error('Задайте WIO_API_KEY');
const response = await fetch('https://api.ai.wiky.su/v1/chat/completions', {
method: 'POST',
headers: { Authorization: 'Bearer ' + key, 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'provider/example-model', messages: [{ role: 'user', content: 'Привет!' }] })
});
const data = await response.json();
if (!response.ok) throw new Error('HTTP ' + response.status + ': ' + JSON.stringify(data));
console.log(data.choices[0].message.content);Потоковый ответ
curl -N отключает буферизацию. Сервер отправляет отдельные строки data:; текст содержится в частях choices[0].delta.content, завершение помечено [DONE].
#!/usr/bin/env bash
set -euo pipefail
: "${WIO_API_KEY:?Задайте WIO_API_KEY}"
curl -N -sS https://api.ai.wiky.su/v1/chat/completions \
-H "Authorization: Bearer $WIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"provider/example-model","stream":true,"messages":[{"role":"user","content":"Расскажи короткую историю"}]}'Развитие примеров
- Добавьте системное сообщение и предыдущие сообщения в массив
messages. - Для временных ошибок
502/503/504добавьте ограниченные повторы с задержкой. - Для
401исправьте ключ; для429дождитесь обновления лимита. - При использовании SDK задайте свой
base_urlилиbaseURLи полный ID маршрута.
Модели, лимиты и цены
