Перейти к основному содержанию

Руководство по настройке AI Prompt

Обзор

Immersive Translate поддерживает пользовательскую настройку Prompt для AI-перевода, позволяя продвинутым пользователям настраивать поведение перевода в соответствии со своими потребностями. В этом документе подробно описаны методы настройки, поддерживаемые переменные и расширенное использование.

Поддерживаемые переменные

Базовые переменные

  • {{text}} - Текстовое содержимое для перевода
  • {{from}} - Исходный язык
  • {{to}} - Целевой язык
  • {{content_type}} - Тип исходного текста (html или text)

Контекстные переменные

  • {{title_prompt}} - Заголовок веб-страницы (когда доступен)
  • {{summary_prompt}} - Резюме контекста веб-страницы (когда доступно)
  • {{terms_prompt}} - Связанная профессиональная терминология (когда доступна)

Методы настройки

1. System Prompt(systemPrompt)

Запрос на перевод, отправляемый AI от имени системы. Используется для установки роли AI и основных правил.

2. Prompt(prompt)

Разговор, отправляемый AI от имени пользователя, содержащий фактический контент для перевода.

3. System Multiple Prompt(systemMultiplePrompt)

Запрос на перевод, отправляемый AI от имени системы, когда количество абзацев больше 1. Используется для обработки сценариев перевода нескольких абзацев.

4. Multiple Prompt(multiplePrompt)

Запрос, отправляемый от имени пользователя для перевода нескольких абзацев. Поддерживает использование разделителей или формата YAML.

5. Subtitle Prompt(subtitlePrompt)

Когда требуется перевод субтитров, разговор, отправляемый AI от имени пользователя, содержащий фактический контент для перевода.

Примеры конфигурации по умолчанию

Если собран только один абзац, по умолчанию будет использоваться Prompt для одного абзаца. Если собрано несколько абзацев, по умолчанию будет использоваться Prompt для нескольких абзацев. В большинстве случаев это будут несколько абзацев. Разделитель по умолчанию для нескольких абзацев — %%. Мы намеренно используем этот необычный разделитель, чтобы уменьшить галлюцинации больших моделей. Вы можете использовать этот Prompt как основу для изменения в соответствии с вашими потребностями. Вот конфигурации Prompt по умолчанию:

Перевод одного абзаца

systemPrompt: |
Вы профессиональный переводчик-носитель языка {{to}}, которому нужно бегло переводить текст на {{to}}.

## Правила перевода
1. Выводите только переведенный контент, без объяснений или дополнительного контента (например, "Вот перевод:" или "Перевод следующий:")
2. Возвращаемый перевод должен сохранять точно такое же количество абзацев и формат, как исходный текст
3. Если текст содержит HTML-теги, учитывайте, где теги должны быть размещены в переводе, сохраняя при этом беглость
4. Для контента, который не должен переводиться (например, имена собственные, код и т.д.), сохраняйте исходный текст
5. Выводите перевод напрямую (без разделителей, без дополнительного текста){{title_prompt}}{{summary_prompt}}{{terms_prompt}}
prompt: |
Переведите на {{to}} (выведите только перевод):

{{text}}

Перевод нескольких абзацев

multipleSystemPrompt: |
Вы профессиональный переводчик-носитель языка {{to}}, которому нужно бегло переводить текст на {{to}}.

## Правила перевода
1. Выводите только переведенный контент, без объяснений или дополнительного контента (например, "Вот перевод:" или "Перевод следующий:")
2. Возвращаемый перевод должен сохранять точно такое же количество абзацев и формат, как исходный текст
3. Если текст содержит HTML-теги, учитывайте, где теги должны быть размещены в переводе, сохраняя при этом беглость
4. Для контента, который не должен переводиться (например, имена собственные, код и т.д.), сохраняйте исходный текст{{title_prompt}}{{summary_prompt}}{{terms_prompt}}

## Примеры формата ввода-вывода

### Пример ввода:
Paragraph A

%%

Paragraph B

%%

Paragraph C

%%

Paragraph D

### Пример вывода:
Translation A

%%

Translation B

%%

Translation C

%%

Translation D

multiplePrompt: |
Переведите на {{to}}:

{{text}}
subtitlePrompt: |
Переведите на {{to}}:

{{text}}

Расширенное использование (формат YAML)

Для сценариев, требующих более точного контроля (например, многошаговый вывод), можно использовать формат YAML для настройки:

Расширенные переменные

  • {{yaml}} - Входные данные в формате YAML

Переменная 'yaml' по умолчанию выглядит так:

- id: 1
text: Hello world
- id: 2
text: How are you?

Мы по умолчанию ожидаем, что вывод большой модели будет таким:

- id: 1
text: 你好世界
- id: 2
text: 你好吗?

Если вы используете {{yaml}} по умолчанию, вам нужно четко выразить это ожидание в prompt. Если вы хотите изменить формат yaml по умолчанию и ответа, это нельзя решить через пользовательский интерфейс страницы настроек Immersive Translate. Вы должны напрямую редактировать пользовательскую конфигурацию в формате JSON Immersive Translate.

Путь редактирования пользовательской конфигурации: Страница настроек->Настройки разработчика->Edit Full User Config (Пожалуйста, сделайте резервную копию вашей пользовательской конфигурации перед редактированием)

Вы можете найти конфигурацию службы перевода в JSON пользовательской конфигурации (если её нет, просто добавьте её согласно этой структуре):

{
...
"translationServices": {
"openai": {
...
}
},
...

Переменная yaml состоит из env.imt_yaml_item, поэтому вы можете изменить формат imt_yaml_item следующим образом:

  "translationServices": {
"openai": {
"env": {
"imt_yaml_item": "- id: {{id}}\n source: {{text}}"
}
}
}

Еще одна специальная переменная — imt_subtitle_yaml_item, аналогичная imt_yaml_item, используется для элементов YAML перевода субтитров.

Для других переменных env вы можете добавить любую переменную env и использовать её напрямую в prompt в формате {{имя_переменной}}, например, следующие переменные env по умолчанию:

  • {{imt_source_field}} - Имя поля исходного текста (по умолчанию: text)
  • {{imt_trans_field}} - Имя поля переведенного текста (по умолчанию: text)
  • {{imt_sub_source_field}} - Имя поля исходного текста субтитров
  • {{imt_sub_trans_field}} - Имя поля переведенного текста субтитров

Включая title_prompt, summary_prompt, terms_prompt также настраиваются через env, по умолчанию следующим образом:

        "title_prompt": "\n\n## Контекстная осведомленность\nМетаданные документа:\nЗаголовок: 《{{imt_title}}》",
"summary_prompt": "\n\n## Контекстная осведомленность\nМетаданные документа:\nРезюме: {{imt_theme}}...",
"terms_prompt": "\n\nОбязательная терминология: Вы ДОЛЖНЫ использовать следующие термины во время перевода. Если 'source':'target' и source == target, сохраните исходный термин без изменений.\n\n Термины -> \n\n {{imt_terms}}",
"sub_summary_prompt": "\n\n## Контекстная осведомленность\nМетаданные документа:\nТип: Субтитры\nРезюме: {{imt_theme}}...",
"sub_terms_prompt": "\n\nОбязательная терминология: Вы ДОЛЖНЫ использовать следующие термины во время перевода. Если 'source':'target' и source == target, сохраните исходный термин без изменений.\n\n Термины -> \n\n {{imt_terms}}"

Где imt_title, imt_theme, imt_terms — специальные переменные, внедряемые системой. imt_title — это заголовок, imt_theme — это резюме всей веб-страницы, imt_terms — это ключевые термины, извлеченные моделью.

Примечание: imt_theme, imt_terms извлекаются проприетарным сервисом и в настоящее время доступны только для участников Pro.

Пример YAML Prompt

systemPrompt: |
Вы профессиональный и надежный машинный переводческий движок.
{{title_prompt}}{{summary_prompt}}{{terms_prompt}}

multiplePrompt: |
Вы получите входные данные в формате YAML, содержащие записи с полями "id" и "{{imt_source_field}}". Вот входные данные:

<yaml>
{{yaml}}
</yaml>

Для каждой записи в YAML переведите содержимое поля "{{imt_source_field}}" на {{to}},{{html_only}} запишите перевод обратно в поле "{{imt_source_field}}" этой записи.

Вот пример ожидаемого формата:

{{normal_result_yaml_example}}

Пожалуйста, верните переведенный YAML напрямую без тега <yaml> или дополнительной информации.
subtitlePrompt: |
Вы получите входные данные субтитров в формате YAML, содержащие записи с полями "id" и "{{imt_sub_source_field}}". Вот входные данные:

<yaml>
{{yaml}}
</yaml>

Для каждой записи в YAML переведите содержимое поля "{{imt_sub_source_field}}" на {{to}},{{html_only}} запишите перевод обратно в поле "{{imt_sub_source_field}}" этой записи.

Вот пример ожидаемого формата:

{{subtitle_result_yaml_example}}

Пожалуйста, верните переведенный YAML напрямую без тега <yaml> или дополнительной информации.

html_only — это специальная переменная, которая существует только когда исходный текст для перевода имеет формат HTML. Значение: \n\nПримечание: Если текст содержит HTML-теги, пожалуйста, учтите после перевода, где теги должны быть в результате перевода, сохраняя при этом беглость результата., эта переменная существует только когда пользователь активно включает "Перевод форматированного текста" в службах AI-перевода. В противном случае она пуста.

normal_result_yaml_example устанавливается в env, по умолчанию:

<example>
Input:
- id: 1
{{imt_source_field}}: Source
Output:
- id: 1
{{imt_trans_field}}: Translation
</example>

subtitle_result_yaml_example устанавливается в env, значение по умолчанию:

<example>
Input:
- id: 1
{{imt_sub_source_field}}: ...
- id: 2
{{imt_sub_source_field}}: ...
- id: 3
{{imt_sub_source_field}}: ...
Output:
- id: 1
{{imt_sub_source_field}}: ...
- id: 2
{{imt_sub_source_field}}: ...
- id: 3
{{imt_sub_source_field}}: ...
</example>

Вы можете переопределить это в env.

Расширенный пример: Рефлексивный перевод

Этот пример показывает, как использовать формат YAML для реализации более сложного потока перевода, включающего два шага: начальный перевод и оптимизированный перевод:

env:
imt_source_field: source
imt_trans_field: step2 # Финальный перевод использует поле step2
imt_sub_source_field: source
imt_sub_trans_field: step2
imt_yaml_item: |-
- id: {{id}}
{{imt_source_field}}: {{text}}
imt_subtitle_yaml_item: |-
- id: {{id}}
{{imt_sub_source_field}}: {{text}}

systemPrompt: |
Вы профессиональный и надежный машинный переводческий движок.
{{title_prompt}}{{summary_prompt}}{{terms_prompt}}

multiplePrompt: |
Вот входные данные YAML:
<yaml>
{{yaml}}
</yaml>

Пожалуйста, следуйте этим шагам:
1. Извлеките содержимое поля "source" из предоставленного объекта YAML.
2. Переведите извлеченное содержимое на {{to}}. Поместите этот начальный перевод в поле step1.
3. Оптимизируйте начальный перевод из step1, чтобы сделать его более естественным и понятным на {{to}}.
Поместите этот оптимизированный перевод в поле step2.
4. Отформатируйте результат как массив YAML с полями id, step1 и step2, как показано в этом примере:

- id: 1
step1: Начальный перевод
step2: Оптимизированный перевод

Пожалуйста, верните переведенный YAML напрямую без тегов <example_output> или дополнительной информации.

Описание рабочего процесса

  1. Формат ввода

    - id: 1
    source: "Hello world"
    - id: 2
    source: "How are you?"
  2. Шаги обработки AI

    • Шаг 1: Выполните начальный перевод
    • Шаг 2: Оптимизируйте перевод, чтобы сделать его более естественным и беглым
  3. Формат вывода

    - id: 1
    step1: "你好世界"
    step2: "你好,世界"
    - id: 2
    step1: "你怎么样?"
    step2: "你好吗?"