Главная/Провайдеры/Провайдеры и вендоры ENУКРРУС API-справочник (ReDoc) ↗

Провайдеры и вендоры

24 провайдера, поля каждого из них и как читать языковую таблицу провайдера.

curl "https://languages.service.custom.mt/v1/providers"
curl "https://languages.service.custom.mt/v1/providers/deepl_api"
curl "https://languages.service.custom.mt/v1/providers/deepl_api/languages?effective=true"

Каталог

Коды провайдеров — те же, что в provider_credentials. Один идентификатор резолвит кред там и код языка здесь; вызывающему не нужно переводить между двумя схемами именования.

Вендор Провайдеры
OpenAI openai_api
Anthropic anthropic_api
Google Cloud google_translate, gemini_api
Microsoft Azure microsoft_translator
Amazon Web Services amazon_translate
DeepL deepl_api
Translated modernmt_api, lara_api
LanguageWire languagewire_api
SYSTRAN systran_translate
Tencent tencent_transmart
Alibaba Cloud alibaba_translate
Baidu baidu_translate
Naver papago_translate
Supertext supertext_translate
XL8 xl8_translate
Tarjama tarjama_mt
Tahrirchi tilmoch_api, sayqalchi_api
Widn.AI widn_tower_anthill, widn_tower_sugarloaf, widn_tower_vesuvius
Internal custom_finetuned_mt

Что несёт строка провайдера

Поле Значение
code канонический код провайдера, общий с provider_credentials
name отображаемое название
vendor_code, vendor_name компания, стоящая за ним
category mt, ai или custom_mt
fallback_policy во что резолвится ненастроенный региональный язык — см. Fallback Policies
in_credentials_catalog false, когда provider_credentials ещё не содержит этого провайдера
is_active false для провайдеров, которые сейчас не используются
aliases все другие идентификаторы, адресующие этого провайдера
notes свободный текст: особенности набора кодов вендора, где они важны
configured_languages сколько языков имеют явную строку

aliases и notes возвращает GET /v1/providers/{code}; список возвращает только поля-сводку.

Info

in_credentials_catalog False означало бы провайдера, чьи коды здесь резолвятся, но которого нет в provider_credentials — резолвить можно, контракта на креды за ним нет. Сегодня в таком состоянии нет ни одного; поле остаётся, чтобы — если такой появится — это было видно, а не выяснилось из упавшей задачи.

Алиасы провайдера

Провайдер откликается не только на свой код. aliases держит каждый другой идентификатор, который его адресует, — короткое имя вроде deepl и любой более длинный идентификатор, который вызывающие, как известно, шлют для этого движка:

curl ".../v1/resolve?provider=deepl&language=zh-CN"
# → { "provider": "deepl_api", "code": "ZH-HANS", … }

В ответе всегда возвращается канонический код provider, какой бы алиас вы ни прислали. Именно его нужно хранить.

Один провайдер покрывает все модели, которые обслуживает тот же эндпоинт вендора, потому что поддержка языков — это свойство эндпоинта, а не модели за ним. provider_credentials держит модель как поле model_id под одним кредом, так что один провайдер здесь соответствует одному креду там.

Явное против эффективного

# только пары, которые кто-то настроил
curl ".../v1/providers/deepl_api/languages"

# все языки, включая фолбэки — то, что провайдер действительно получит
curl ".../v1/providers/deepl_api/languages?effective=true"

Первая команда возвращает для DeepL 127 языков — явно настроенные пары, которые поддерживаются. effective=true расширяет до 247 языков, которые провайдер реально может получить с учётом фолбэков; язык без явной строки — не пробел: базовые отвечают собственным кодом, а региональные фолбэчатся по Fallback Policies. Каждая запись несёт тот же match, что и эндпоинт резолвинга, так что настроенные ответы отличимы от выведенных.

supported_only по умолчанию true. Передайте supported_only=false, чтобы увидеть и пары, зафиксированные как нерабочие — вместе с effective=true это весь каталог, 503 строки.

Как выбирается исходящий код

Для любой пары (провайдер, язык) есть ровно один код — выбранный один раз и зафиксированный, а не во время запроса. Где несколько написаний одного языка могли бы быть отправлены, побеждает:

  1. написание, задокументированное для этого провайдера, если такое есть,
  2. далее то, что равно собственному каноническому коду языка — когда конкурирует несколько написаний и одно из них то, как мы уже называем язык, отправлять другое значит расходиться без причины,
  3. далее самое каноническое написание BCP-47 (es-419 над ES-LA).

В отличие от канонического кода языка, здесь более короткий тег никогда не имеет преимущества сам по себе. Если API провайдера хочет zh-Hans и только zh-Hans — это факт, и правило 2 его не перекрывает. Каждое написание-проигравший остаётся достижимым как входящий алиас.

Далее