Метафора / Перенос

Python: подключение к API Метафоры

Готовимся к запуску

Доступ к API, регистрации и оплате пока закрыт. Инструкции доступны для подготовки.

Используйте OpenAI SDK с другим base_url. Начните с одного короткого текстового запроса; ID и параметры модели возьмите из действующего каталога.

Настройка по шагам

Адрес API: https://api.metaphorai.ru/v1. Для CCS используйте https://api.metaphorai.ru без /v1. Вместо MODEL_ID укажите ID модели после открытия каталога. Ключ храните в окружении или Credentials. Доступ к API, регистрации и оплате пока закрыт. Инструкции доступны для подготовки.

  1. Установите пакет openai в отдельное Python-окружение: python -m pip install openai.
  2. Когда доступ к сервису открыт, создайте отдельный ключ проекта в кабинете и задайте ему небольшой бюджет. Сохраните ключ в переменной ROUTER_API_KEY через защищённый ввод; не вставляйте его в исходный код или историю терминала.
  3. Замените MODEL_ID в примере на ID модели из каталога. Адрес API: https://api.metaphorai.ru/v1; до открытия сервиса это пример настройки, а не доступный публичный стенд.
  4. Выполните обычный запрос. Затем проверьте потоковый вариант. Ошибку или обрыв сначала проверьте в журнале кабинета: автоматические повторы в примере отключены.
  5. Сверьте модель, статус, резерв и подтверждённое списание в кабинете. Неизвестный результат не означает бесплатный запрос.

Примеры настройки

Обычный ответ · Python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ROUTER_API_KEY"],
    base_url="https://api.metaphorai.ru/v1",
    max_retries=0,
)

response = client.chat.completions.create(
    model="MODEL_ID",
    messages=[{"role": "user", "content": "Привет!"}],
    max_tokens=512,
)
print(response.choices[0].message.content)
Потоковый ответ · Python
from openai import OpenAI
import os

client = OpenAI(api_key=os.environ["ROUTER_API_KEY"], base_url="https://api.metaphorai.ru/v1", max_retries=0)
stream = client.chat.completions.create(
    model="MODEL_ID",
    messages=[{"role": "user", "content": "Привет!"}],
    max_tokens=512,
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="")
    if chunk.usage:
        print("\nUsage:", chunk.usage)

Условия и ограничения

  • Ключ и тексты запросов не отправляйте в поддержку или аналитику. Для разбора ошибки используйте ID запроса.
  • Поток и вызов инструментов зависят от возможностей выбранной модели. Примеры не задают тариф и не подтверждают доступность конкретной модели.

Документация клиента