Первый запрос к API

Положите ключ в переменную окружения, проверьте его запросом списка моделей и отправьте первое сообщение. Примеры для curl, Python и Node.js.

Обновлено: 3 мин чтения

Отправьте первый запрос

Понадобятся ключ API и положительный баланс. Ключ выдаёт кабинет разработчика (страница /developers), условия выдачи описаны в статье Ключ API.

  1. Положите ключ в переменную окружения, чтобы он не попал в код и в историю команд.
    # Linux и macOS
    export EPICAI_API_KEY="sk-epic-ВАШ_КЛЮЧ"
    
    # Windows PowerShell
    $env:EPICAI_API_KEY = "sk-epic-ВАШ_КЛЮЧ"
  2. Проверьте ключ запросом списка моделей. Он ничего не стоит и сразу показывает, принят ли ключ.
    curl https://epicai.ru/v1/models \
      -H "Authorization: Bearer $EPICAI_API_KEY"

    Придёт JSON со списком моделей и их ценами. Код 401 означает, что ключ неверен или отозван. Остальные коды разобраны в статье Ошибки API.

  3. Отправьте сообщение выбранной модели.
    curl https://epicai.ru/v1/chat/completions \
      -H "Authorization: Bearer $EPICAI_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "gpt-6-luna",
        "messages": [
          {"role": "user", "content": "Назови столицу Франции одним словом."}
        ],
        "max_tokens": 400
      }'

Имя модели берите из списка GET /v1/models как есть, у многих оно содержит косую черту, например vendor/model. Имя в примере служит образцом, подставьте любое из своего списка.

Совет

В консолях Windows кириллица в аргументе -d может исказиться. Сохраните тело запроса в файл в кодировке UTF-8 и передайте его ключом --data-binary @request.json.

Прочитайте ответ

{
  "id": "chatcmpl-dab33bdee0ce7fc5d1c862a9",
  "object": "chat.completion",
  "created": 1793095138,
  "model": "gpt-6-luna",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Париж"},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 14, "completion_tokens": 7, "total_tokens": 21},
  "epic": {"cost_tok": 1, "request_id": "req_dab33bdee0ce7fc5d1c862a9"}
}
  • choices[0].message.content — текст ответа.
  • finish_reason — причина остановки. Значение stop говорит о естественном конце ответа, а length об обрыве по max_tokens.
  • usage — токены модели: сколько ушло на запрос и сколько на ответ.
  • epic.cost_tok — сколько TOK списано с баланса. То же число лежит в заголовке ответа x-epic-cost-tok, а epic.request_id совпадает с заголовком x-request-id. Номер запроса пригодится, если придётся писать в поддержку.

То же в Python и Node.js

Официальные библиотеки openai принимают адрес и ключ в конструкторе, остальной код не меняется.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://epicai.ru/v1",
    api_key=os.environ["EPICAI_API_KEY"],
)

reply = client.chat.completions.create(
    model="gpt-6-luna",
    messages=[{"role": "user", "content": "Назови столицу Франции одним словом."}],
    max_tokens=400,
)
print(reply.choices[0].message.content)
print("Списано TOK:", reply.model_extra["epic"]["cost_tok"])
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://epicai.ru/v1",
  apiKey: process.env.EPICAI_API_KEY,
});

const reply = await client.chat.completions.create({
  model: "gpt-6-luna",
  messages: [{ role: "user", content: "Назови столицу Франции одним словом." }],
  max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log("Списано TOK:", reply.epic.cost_tok);

Поле epic принадлежит epicai, в описании типов библиотек его нет. Python отдаёт такие поля через model_extra, Node.js оставляет их на объекте ответа, а в TypeScript к ним обращаются через приведение типа.

Поставьте потолок ответа

Параметр max_tokens ограничивает длину ответа и задаёт размер резерва на балансе. Без него epicai берёт запас по умолчанию, и резерв получается большим. Пока токенов мало, это приводит к отказу 402 insufficient_funds даже при коротком реальном ответе. Как считается резерв, объясняет статья Баланс и списание в API.

Не нашли ответ?

Посмотрите частые вопросы или напишите в поддержку.

Войти или создать аккаунт

20 000 токенов в подарок новым пользователям. Без карты и без VPN.

или через сервис

Продолжая, вы получаете сервисные письма.

Для защиты от роботов используется Yandex SmartCaptcha. Условия обработки данных.