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

110 lines
No EOL
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Перевод текста
Перевод текста - это основной функционал сервиса.
Перевод осуществляется независимыми модулями (плагинами), каждый плагин имеет свои настройки.
Модули могут работать независимо, используя только функционал сервиса, или вызывать внешние приложения.
Параметры, использование моделей и прочее более подробно указано в документации для каждого плагина отдельно.
## Список поддерживаемых плагинов
* **kobold_cpp** - [проект](https://github.com/LostRuins/koboldcpp), [документация](plugins-translate/kobold_cpp.md).
Внешний инструмент для работы с моделями.
Поддерживаются основные популярные модели - Qwen, mistral, gpt-oss и другие.
Требуется запустить KoboldCpp, загрузить необходимую модель, настроить и открыть ее.
* **lm_studio** - [проект](https://github.com/LostRuins/koboldcpp), [документация](plugins-translate/lm_studio.md).
Внешний инструмент для работы с моделями.
Поддерживаются основные популярные модели - Qwen, gemma, mistral, gpt-oss и другие.
Требуется запустить LM Studio, загрузить необходимую модель, настроить и открыть ее.
* **madlad_400_ctranslate2** - [проект](https://huggingface.co/docs/transformers/model_doc/madlad-400) (A Multilingual And Document-Level Large Audited Dataset),
[документация](plugins-translate/madlad_400_ctranslate2.md). Поддержка 400+ языковых пар. Эта модель создана исключительно для перевода текста, поддерживаются только модели проекта madlad-400.
Работа через [CTranslate2](https://github.com/OpenNMT/CTranslate2).
* **nllb_200**, [проект](https://github.com/facebookresearch/fairseq/tree/nllb) (No Language Left Behind), [документация](plugins-translate/nllb_200.md).
Поддержка 200+ языковых пар. Эта модель создана исключительно для перевода текста, поддерживаются только модели проекта nllb-200.
* **nllb_200_ctranslate2** - [проект](https://github.com/facebookresearch/fairseq/tree/nllb), [документация](plugins-translate/nllb_200.md).
Та же nllb-200, что описана выше, но работает через [CTranslate2](https://github.com/OpenNMT/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
Минимальное работающее тело запроса выглядит так:
```json
{
"text": "hi"
}
```
Для такого запроса будут автоматически выбраны язык оригинала, язык на который нужно выполнить перевод,
плагин для перевода - все это задается через [параметры](options.md).
Все параметры для перевода можно переопределить вручную.
```json
{
"text": "hi",
"context": "context",
"from_lang": "en",
"to_lang": "ru",
"translator_plugin": "lm_studio"
}
```
В этом запросе:
* **text** - текст для перевода
* **context** - дополнительный контекст. Например, можно указать, чтобы какое-то имя переводилось определенным образом,
или дать понять, какого стиля переводимый текст - художественный, научный, юридический и т. д.
* **from_lang** - двухбуквенный код языка оригинала. Коды можно посмотреть в файле [common.js](../../static/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
Ответ:
```json
{
"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](https://github.com/leminhyen2/Sugoi-Japanese-Translator),
нужны для интеграции с другими приложениями, которые поддерживают sugoi-translator - таким образом, указав в настройках
внешнего приложения адрес этого приложения, можно осуществить интеграцию.
Например, sugoi-translator поддерживают:
* [translator-plusplus](https://dreamsavior.net/translator-plusplus/)
* [LunaTranslator](https://docs.lunatranslator.org/en/)
Поддерживается GET и POST варианты запросов, оба этих запроса находятся по пути `/translate/sugoi-like`.