mirror of
https://github.com/illian64/llm-translate.git
synced 2026-04-28 11:49:54 +00:00
110 lines
No EOL
7.9 KiB
Markdown
110 lines
No EOL
7.9 KiB
Markdown
# Перевод текста
|
||
|
||
Перевод текста - это основной функционал сервиса.
|
||
|
||
Перевод осуществляется независимыми модулями (плагинами), каждый плагин имеет свои настройки.
|
||
Модули могут работать независимо, используя только функционал сервиса, или вызывать внешние приложения.
|
||
Параметры, использование моделей и прочее более подробно указано в документации для каждого плагина отдельно.
|
||
|
||
## Список поддерживаемых плагинов
|
||
|
||
* **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`. |