llm-translate/doc/ru/translate_text.md
illian64 07154e93d4
Some checks are pending
Python application / build (push) Waiting to run
whisper (#14)
whisper
2025-10-11 12:56:13 +07:00

7.9 KiB
Raw Blame History

Перевод текста

Перевод текста - это основной функционал сервиса.

Перевод осуществляется независимыми модулями (плагинами), каждый плагин имеет свои настройки. Модули могут работать независимо, используя только функционал сервиса, или вызывать внешние приложения. Параметры, использование моделей и прочее более подробно указано в документации для каждого плагина отдельно.

Список поддерживаемых плагинов

  • 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).
  • error - если перевод был выполнен успешно - null, иначе - текст ошибки.

Запросы sugoi-like

Это запросы в формате Sugoi-Japanese-Translator, нужны для интеграции с другими приложениями, которые поддерживают sugoi-translator - таким образом, указав в настройках внешнего приложения адрес этого приложения, можно осуществить интеграцию.

Например, sugoi-translator поддерживают:

Поддерживается GET и POST варианты запросов, оба этих запроса находятся по пути /translate/sugoi-like.