Использование Lina и локального HY-MT1.5-1.8B для перевода записей локализации

ИИ-сотрудникиCommunity Edition+

В этом руководстве описан практический сценарий локализации: локально развернуть небольшую специализированную модель перевода, открыть её как OpenAI-совместимый сервис и настроить Lina для пакетного перевода записей локализации NocoBase.

Подход подходит для множества системных записей, текстов плагинов, меню, названий коллекций и подписей полей. В отличие от онлайн-моделей, локальные модели не зависят от внешних лимитов RPM, TPM и параллельности, а параллельность можно настраивать по возможностям машины и модели.

Обзор

В руководстве используются:

  • Модель: tencent/HY-MT1.5-1.8B-GGUF
  • Сервис инференса: llama-server
  • Интеграция: OpenAI-совместимый API
  • ИИ-сотрудник: Lina
  • Точка входа: страница управления локализацией
Примечание

HY-MT1.5-1.8B — небольшая специализированная модель перевода. Она лучше подходит для коротких записей, UI-текстов и пакетного перевода. Общие чат-модели не рекомендуется выбирать первыми для задач локализации.

Предварительная подготовка

  • Плагин Управление локализацией включён.
  • Целевой язык включён.
  • Записи локализации синхронизированы.
  • Локальная машина или сервер может запускать llama-server.
  • Сервис NocoBase может обращаться к HTTP-адресу llama-server.

Развертывание HY-MT GGUF

Установка llama.cpp

В macOS можно установить через Homebrew:

brew install llama.cpp

Также можно использовать готовый бинарный файл llama.cpp или собрать его из исходного кода. Главное, чтобы был доступен llama-server.

Запуск OpenAI-совместимого сервиса

Запустите сервис с GGUF-моделью из Hugging Face:

llama-server \
  -hf tencent/HY-MT1.5-1.8B-GGUF:Q4_K_M \
  --host 0.0.0.0 \
  --port 8000 \
  -c 2048 \
  -np 4
ПараметрОписание
-hfЗагружает модель из Hugging Face.
--hostАдрес прослушивания. Для локального теста используйте 127.0.0.1, для контейнера или удаленного доступа — 0.0.0.0.
--portПорт HTTP-сервиса.
-cДлина контекста. Записи локализации обычно короткие, поэтому 2048 обычно достаточно.
-npЧисло параллельных слотов. Настраивайте по производительности машины.
Совет

Если ресурсы сервера ограничены, начните с -np 1 или -np 2, затем постепенно увеличивайте после проверки стабильности.

Проверка сервиса модели

После запуска llama-server проверьте состояние сервиса:

curl http://127.0.0.1:8000/health

Затем проверьте перевод через OpenAI-совместимый API:

curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tencent/HY-MT1.5-1.8B-GGUF:Q4_K_M",
    "messages": [
      {
        "role": "user",
        "content": "Translate the following text into Chinese. Output only the translated result without any additional explanation:\n\nSave"
      }
    ]
  }'

Если используется локальный файл модели, замените model на фактическое имя модели, возвращаемое или настроенное сервисом.

Примечание

Если запрос долго не отвечает, модель может быть слишком медленной, параллельность слишком высокой или контекст слишком большим. Сначала уменьшите -np и параллельность перевода NocoBase, затем наблюдайте время ответа.

Настройка службы языковой модели в NocoBase

Перейдите в Настройки системы -> ИИ-сотрудники -> Служба языковой модели и добавьте службу языковой модели.

НастройкаПример
ПровайдерOpenAI (completions)
ЗаголовокHY-MT Local
Базовый URLhttp://127.0.0.1:8000/v1
Ключ APIЕсли llama-server не использует аутентификацию, укажите фиктивное значение, например dummy.
Включенные моделиВыберите tencent/HY-MT1.5-1.8B-GGUF:Q4_K_M или введите фактическое имя модели.

После настройки используйте Тест запуска, чтобы проверить модель.

Совет

Если NocoBase запущен в Docker, 127.0.0.1 указывает на сам контейнер и может не обращаться к сервису на хосте. Используйте IP хоста, адрес контейнерной сети или host.docker.internal.

Настройка выделенной модели Lina

Перейдите в Настройки системы -> ИИ-сотрудники -> ИИ-сотрудники, откройте Lina и перейдите в Настройки модели.

  1. Включите Включить настройку выделенной модели.
  2. Выберите локальную модель HY-MT в Модели.
  3. Сохраните конфигурацию.

После этого Lina будет использовать эту модель для задач перевода локализации и не будет переключаться на общие чат-модели.

Подробнее см. Настройка моделей ИИ-сотрудников.

Настройка параллельности перевода

Параллельность задач перевода локализации управляется AI_LOCALIZATION_CONCURRENCY:

AI_LOCALIZATION_CONCURRENCY=10

Правила:

  • По умолчанию: 10
  • Минимум: 1
  • Максимум: 20
  • Значения вне диапазона используют значение по умолчанию

Оптимальная параллельность зависит от CPU, GPU, памяти, квантования модели и llama-server -np. Если значение по умолчанию вызывает проблемы:

  1. Начните с AI_LOCALIZATION_CONCURRENCY=1 и проверьте перевод одной записи.
  2. Установите llama-server -np и AI_LOCALIZATION_CONCURRENCY в 2 или 4.
  3. Наблюдайте время ответа, загрузку CPU/GPU и прогресс задачи.
  4. Увеличивайте постепенно только при стабильной работе.
Примечание

Не задавайте слишком высокую параллельность сразу. Если она превышает реальную ёмкость модели, задачи могут замедлиться из-за очередей, таймаутов или зависания сервиса.

Запуск перевода локализации

Перейдите в Управление системой -> Управление локализацией.

  1. Переключитесь на целевой язык.
  2. Нажмите Синхронизировать, чтобы убедиться, что записи синхронизированы.
  3. Нажмите аватар Lina.
  4. Выберите область задачи:
    • Инкрементальный перевод: переводит записи, у которых ещё нет перевода.
    • Перевод выбранных записей: переводит выбранные записи в таблице.
    • Полный перевод: переводит все записи текущего языка.
  5. Проверьте число записей, провайдера и модель в диалоге подтверждения.
  6. Если выбран инкрементальный или полный перевод, выберите область перевода:
    • Все
    • Встроенные записи: системные и плагинные записи.
    • Пользовательские записи: названия маршрутов, коллекций и полей, а также UI-контент.
  7. При необходимости настройте языки справочного перевода. Для инкрементального и полного перевода справочные языки настраиваются отдельно для встроенных и пользовательских записей; перевод выбранных элементов показывает только одну общую настройку справочных языков.
  8. Подтвердите создание асинхронной задачи.
  9. Дождитесь завершения, проверьте переводы и опубликуйте.

Сначала используйте Перевод выбранных записей для нескольких записей, чтобы проверить стиль вывода и скорость, затем запускайте инкрементальный или полный перевод.

Как Lina формирует запросы перевода

Lina формирует запросы из записей и эталонных переводов. Для коротких записей существующие ссылки помогают повысить согласованность:

  • Встроенные записи используют китайские переводы как справку по умолчанию и японский как резервную справку.
  • Пользовательские записи используют язык системы по умолчанию как справку по умолчанию и китайский как резервную справку.
  • Пользователи могут настроить язык по умолчанию и резервный язык в диалоге подтверждения задачи.
  • Система сначала использует справочный перевод на языке по умолчанию. Если его нет, она пробует резервный язык.
  • Результаты записываются в целевой язык, но не публикуются автоматически.

Семантика промпта примерно следующая:

Refer to the following translation:
{source_term} is translated as {target_term}

Translate the following text into {target_language}. Output only the translated result without any additional explanation:

{source_text}

Устранение неполадок

Нет прогресса после создания задачи

Проверьте, получал ли llama-server запросы. Посмотрите логи сервиса или вызовите /v1/chat/completions через curl.

Если модель получает запросы, но не отвечает, уменьшите:

  • AI_LOCALIZATION_CONCURRENCY
  • llama-server -np
  • llama-server -c

Модель возвращает объяснения вместо переводов

Локальные модели перевода обычно стабильнее общих чат-моделей. Если объяснения всё ещё появляются, сначала проверьте тот же промпт через curl, чтобы понять стиль вывода модели. Также можно начать с более коротких записей или снизить параметры sampling, например temperature.

NocoBase не может подключиться к сервису модели

Проверьте:

  • Содержит ли базовый URL /v1.
  • Может ли среда выполнения NocoBase обратиться к адресу.
  • Не блокирует ли порт firewall или контейнерная сеть.
  • Продолжает ли работать llama-server.

Проверка перед публикацией

После завершения ИИ-перевода проверьте результат перед публикацией:

  • Отфильтруйте по модулю и проверьте короткие записи: меню, кнопки, имена полей и статусы.
  • Проверьте переменные, заполнители, HTML-теги и символы форматирования.
  • Проверьте согласованность ключевых бизнес-терминов.
  • Если переводы встроенных записей были перезаписаны, повторно синхронизируйте в управлении локализацией и выберите Сбросить переводы встроенных системных записей, чтобы восстановить значения по умолчанию. Чтобы внести переводы по умолчанию для системы и официальных плагинов, см. Вклад в переводы.
  • Сначала публикуйте в тестовой среде, затем синхронизируйте в производственное окружение.

Ссылки