7.9 KiB
Перевод текста
Перевод текста - это основной функционал сервиса.
Перевод осуществляется независимыми модулями (плагинами), каждый плагин имеет свои настройки. Модули могут работать независимо, используя только функционал сервиса, или вызывать внешние приложения. Параметры, использование моделей и прочее более подробно указано в документации для каждого плагина отдельно.
Список поддерживаемых плагинов
-
kobold_cpp - проект, документация. Внешний инструмент для работы с моделями. Поддерживаются основные популярные модели - Qwen, mistral, gpt-oss и другие. Требуется запустить KoboldCpp, загрузить необходимую модель, настроить и открыть ее.
-
lm_studio - проект, документация. Внешний инструмент для работы с моделями. Поддерживаются основные популярные модели - Qwen, gemma, mistral, gpt-oss и другие. Требуется запустить LM Studio, загрузить необходимую модель, настроить и открыть ее.
-
madlad_400_ctranslate2 - проект (A Multilingual And Document-Level Large Audited Dataset), документация. Поддержка 400+ языковых пар. Эта модель создана исключительно для перевода текста, поддерживаются только модели проекта madlad-400. Работа через CTranslate2.
-
nllb_200, проект (No Language Left Behind), документация. Поддержка 200+ языковых пар. Эта модель создана исключительно для перевода текста, поддерживаются только модели проекта nllb-200.
-
nllb_200_ctranslate2 - проект, документация. Та же nllb-200, что описана выше, но работает через CTranslate2. Использует преобразованные для Ctranslate2 файлы моделей, которые меньше, соответственно, с меньшим использованием памяти, без потери качества.
-
no_translate - этот плагин не является переводчиком, поэтому не имеет параметров. Возвращает в ответе переданный в запросе текст без изменений. Его можно использовать для отладки при работе с параметрами и разработке функционала сервиса.
Перевод через REST API
Сервис поддерживает перевод через REST-запросы. Просмотреть API можно здесь по адресу host:port/docs, по умолчанию здесь: http://127.0.0.1:4990/docs
Базовый запрос для перевода: POST http://127.0.0.1:4990/translate Минимальное работающее тело запроса выглядит так:
{
"text": "hi"
}
Для такого запроса будут автоматически выбраны язык оригинала, язык на который нужно выполнить перевод, плагин для перевода - все это задается через параметры.
Все параметры для перевода можно переопределить вручную.
{
"text": "hi",
"context": "context",
"from_lang": "en",
"to_lang": "ru",
"translator_plugin": "lm_studio"
}
В этом запросе:
- text - текст для перевода
- context - дополнительный контекст. Например, можно указать, чтобы какое-то имя переводилось определенным образом, или дать понять, какого стиля переводимый текст - художественный, научный, юридический и т. д.
- from_lang - двухбуквенный код языка оригинала. Коды можно посмотреть в файле common.js проекта.
- to_lang - двухбуквенный код языка, на который нужно выполнить перевод.
- translator_plugin - плагин дял перевода. Он должен быть загружен в сервис.
Также можно выполнить GET запрос и передать все параметры в него, например http://127.0.0.1:4990/translate?text=hi&from_lang=en&to_lang=ru&context=context&translator_plugin=lm_studio
Ответ:
{
"result": "Здравствуйте!",
"parts": [
{
"text": "hi",
"translate": "Здравствуйте!",
"paragraph_end": true
}
],
"error": null
}
- result - результат перевода.
- parts - если текст в процессе перевода был разбит на несколько частей, в этом массиве будут представлены все части, и перевод каждой из частей. Это может пригодиться для понимания того, почему перевод был выполнен не полностью и подобрать более подходящие параметры разбиения текста на части.
-
- parts[].text - часть исходного текста, на исходном языке, после преобразований.
-
- parts[].translate - перевод части текста
-
- parts[].paragraph_end является ли часть последним предложением в параграфе (необходимо для соединения частей в поле результата
result).
- parts[].paragraph_end является ли часть последним предложением в параграфе (необходимо для соединения частей в поле результата
- error - если перевод был выполнен успешно - null, иначе - текст ошибки.
Запросы sugoi-like
Это запросы в формате Sugoi-Japanese-Translator, нужны для интеграции с другими приложениями, которые поддерживают sugoi-translator - таким образом, указав в настройках внешнего приложения адрес этого приложения, можно осуществить интеграцию.
Например, sugoi-translator поддерживают:
Поддерживается GET и POST варианты запросов, оба этих запроса находятся по пути /translate/sugoi-like.