Провайдери та вендори
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 рядки.
Як обирається вихідний код
Для будь-якої пари (провайдер, мова) є рівно один код — обраний один раз і зафіксований, а не під час запиту. Де кілька написань тієї самої мови могли б бути надіслані, перемагає:
- написання, задокументоване для цього провайдера, якщо таке є,
- далі те, що дорівнює власному канонічному коду мови — коли конкурує кілька написань і одне з них те, як ми вже називаємо мову, надсилати інше означає розходитись без причини,
- далі найканонічніше написання BCP-47 (
es-419надES-LA).
На відміну від канонічного коду мови, тут коротший тег ніколи не має переваги сам по собі. Якщо API провайдера хоче zh-Hans і тільки zh-Hans — це факт, і правило 2 його не перекриває. Кожне написання-програвший лишається досяжним як вхідний аліас.
Далі
- Fallback Policies — що відбувається, коли нічого не налаштовано
- Resolution Ladder — повний порядок пошуку