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

Тестовый файл LLM

Этот документ проверяет, понимает ли LLM, переводящая документацию, general_prompt в scripts/translate.py и языковой специфичный промпт в docs/{language code}/llm-prompt.md. Языковой специфичный промпт добавляется к general_prompt.

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

Использование:

  • Подготовьте языковой специфичный промпт — docs/{language code}/llm-prompt.md.
  • Выполните новый перевод этого документа на нужный целевой язык (см., например, команду translate-page в translate.py). Это создаст перевод в docs/{language code}/docs/_llm-test.md.
  • Проверьте, всё ли в порядке в переводе.
  • При необходимости улучшите ваш языковой специфичный промпт, общий промпт или английский документ.
  • Затем вручную исправьте оставшиеся проблемы в переводе, чтобы он был хорошим.
  • Переведите заново, имея хороший перевод на месте. Идеальным результатом будет ситуация, когда LLM больше не вносит изменений в перевод. Это означает, что общий промпт и ваш языковой специфичный промпт максимально хороши (иногда он будет делать несколько, казалось бы, случайных изменений, причина в том, что LLM — недетерминированные алгоритмы).

Тесты:

Фрагменты кода

Это фрагмент кода: foo. А это ещё один фрагмент кода: bar. И ещё один: baz quux.

Содержимое фрагментов кода должно оставаться как есть.

См. раздел ### Content of code snippets в общем промпте в scripts/translate.py.

Кавычки

Вчера мой друг написал: "Если вы написали incorrectly правильно, значит вы написали это неправильно". На что я ответил: "Верно, но 'incorrectly' — это неправильно, а не '"incorrectly"'".

Примечание

LLM, вероятно, переведёт это неправильно. Интересно лишь то, сохранит ли она фиксированный перевод при повторном переводе.

Автор промпта может выбрать, хочет ли он преобразовывать нейтральные кавычки в типографские. Допускается оставить их как есть.

См., например, раздел ### Quotes в docs/de/llm-prompt.md.

Кавычки во фрагментах кода

pip install "foo[bar]"

Примеры строковых литералов во фрагментах кода: "this", 'that'.

Сложный пример строковых литералов во фрагментах кода: f"I like {'oranges' if orange else "apples"}"

Хардкор: Yesterday, my friend wrote: "If you spell incorrectly correctly, you have spelled it incorrectly". To which I answered: "Correct, but 'incorrectly' is incorrectly not '"incorrectly"'"

... Однако кавычки внутри фрагментов кода должны оставаться как есть.

Блоки кода

Пример кода Bash...

# Вывести приветствие вселенной
echo "Hello universe"

...и пример вывода в консоли...

$ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid">main.py</u>
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span>  Starting server
        Searching for package file structure

...и ещё один пример вывода в консоли...

// Создать директорию "Code"
$ mkdir code
// Перейти в эту директорию
$ cd code

...и пример кода на Python...

wont_work()  # Это не сработает 😱
works(foo="bar")  # Это работает 🎉

...и на этом всё.

Код в блоках кода не должен изменяться, за исключением комментариев.

См. раздел ### Content of code blocks в общем промпте в scripts/translate.py.

Вкладки и цветные блоки

Информация

Некоторый текст

Примечание

Некоторый текст

Технические подробности

Некоторый текст

Проверка

Некоторый текст

Совет

Некоторый текст

Предупреждение

Некоторый текст

Опасность

Некоторый текст

Для вкладок и блоков Info/Note/Warning/и т.п. нужно добавить перевод их заголовка после вертикальной черты (|).

См. разделы ### Special blocks и ### Tab blocks в общем промпте в scripts/translate.py.

Текст ссылок должен переводиться, адрес ссылки не должен изменяться:

Текст ссылок должен переводиться, адрес ссылки должен указывать на перевод:

Ссылки должны переводиться, но их адреса не должны изменяться. Исключение — абсолютные ссылки на страницы документации FastAPI. В этом случае ссылка должна вести на перевод.

См. раздел ### Links в общем промпте в scripts/translate.py.

HTML-элементы "abbr"

Вот некоторые элементы, обёрнутые в HTML-элементы "abbr" (часть выдумана):

abbr даёт полную расшифровку

  • GTD
  • lt
  • XWT
  • PSGI

abbr даёт объяснение

  • кластер
  • Глубокое обучение

abbr даёт полную расшифровку и объяснение

  • MDN
  • I/O.

Атрибуты "title" элементов "abbr" переводятся по определённым правилам.

Переводы могут добавлять свои собственные элементы "abbr", которые LLM не должна удалять. Например, чтобы объяснить английские слова.

См. раздел ### HTML abbr elements в общем промпте в scripts/translate.py.

Заголовки

Разработка веб‑приложения — руководство

Привет.

Аннотации типов и -аннотации

Снова привет.

Супер- и подклассы

Снова привет.

Единственное жёсткое правило для заголовков — LLM должна оставить часть хеша в фигурных скобках без изменений, чтобы ссылки не ломались.

См. раздел ### Headings в общем промпте в scripts/translate.py.

Для некоторых языковых инструкций см., например, раздел ### Headings в docs/de/llm-prompt.md.

Термины, используемые в документации

  • вы
  • ваш

  • например

  • и т.д.

  • foo как int

  • bar как str
  • baz как list

  • Учебник — Руководство пользователя

  • Расширенное руководство пользователя
  • Документация по SQLModel
  • Документация API
  • Автоматическая документация

  • Наука о данных

  • Глубокое обучение
  • Машинное обучение
  • Внедрение зависимостей
  • Аутентификация HTTP Basic
  • HTTP Digest
  • формат ISO
  • стандарт JSON Schema
  • JSON-схема
  • определение схемы
  • password flow
  • Мобильный

  • устаревший

  • спроектированный
  • некорректный
  • на лету
  • стандарт
  • по умолчанию
  • чувствительный к регистру
  • нечувствительный к регистру

  • обслуживать приложение

  • отдавать страницу

  • приложение

  • приложение

  • HTTP-запрос

  • HTTP-ответ
  • ответ с ошибкой

  • операция пути

  • декоратор операции пути
  • функция-обработчик пути

  • тело

  • тело запроса
  • тело ответа
  • JSON-тело
  • тело формы
  • тело файла
  • тело функции

  • параметр

  • body-параметр
  • path-параметр
  • query-параметр
  • cookie-параметр
  • параметр заголовка
  • параметр формы
  • параметр функции

  • событие

  • событие запуска
  • запуск сервера
  • событие остановки
  • событие lifespan

  • обработчик

  • обработчик события
  • обработчик исключений
  • обрабатывать

  • модель

  • Pydantic-модель
  • модель данных
  • модель базы данных
  • модель формы
  • объект модели

  • класс

  • базовый класс
  • родительский класс
  • подкласс
  • дочерний класс
  • родственный класс
  • метод класса

  • заголовок

  • HTTP-заголовки
  • заголовок авторизации
  • заголовок Authorization
  • заголовок Forwarded

  • система внедрения зависимостей

  • зависимость
  • зависимый объект
  • зависимый

  • ограниченный вводом/выводом

  • ограниченный процессором
  • конкурентность
  • параллелизм
  • многопроцессность

  • переменная окружения

  • переменная окружения
  • PATH
  • переменная PATH

  • аутентификация

  • провайдер аутентификации
  • авторизация
  • форма авторизации
  • провайдер авторизации
  • пользователь аутентифицируется
  • система аутентифицирует пользователя

  • CLI

  • интерфейс командной строки

  • сервер

  • клиент

  • облачный провайдер

  • облачный сервис

  • разработка

  • этапы разработки

  • dict

  • словарь
  • перечисление
  • enum
  • член перечисления

  • кодировщик

  • декодировщик
  • кодировать
  • декодировать

  • исключение

  • вызвать

  • выражение

  • оператор

  • фронтенд

  • бэкенд

  • обсуждение на GitHub

  • Issue на GitHub (тикет/обращение)

  • производительность

  • оптимизация производительности

  • тип возвращаемого значения

  • возвращаемое значение

  • безопасность

  • схема безопасности

  • задача

  • фоновая задача
  • функция задачи

  • шаблон

  • шаблонизатор

  • аннотация типов

  • аннотация типов

  • воркер сервера

  • воркер Uvicorn
  • воркер Gunicorn
  • воркер-процесс
  • класс воркера
  • рабочая нагрузка

  • деплой

  • развернуть

  • SDK

  • набор средств разработки ПО

  • APIRouter

  • requirements.txt
  • токен Bearer
  • несовместимое изменение
  • баг
  • кнопка
  • вызываемый объект
  • код
  • коммит
  • менеджер контекста
  • корутина
  • сессия базы данных
  • диск
  • домен
  • движок
  • фиктивный X
  • метод HTTP GET
  • элемент
  • библиотека
  • lifespan
  • блокировка
  • middleware (Промежуточный слой)
  • мобильное приложение
  • модуль
  • монтирование
  • сеть
  • origin (источник)
  • переопределение
  • полезная нагрузка
  • процессор
  • свойство
  • прокси
  • пулл-реквест (запрос на изменение)
  • запрос
  • ОЗУ
  • удалённая машина
  • статус-код
  • строка
  • тег
  • веб‑фреймворк
  • подстановочный знак
  • вернуть
  • валидировать

Это неполный и ненормативный список (в основном) технических терминов, встречающихся в документации. Он может помочь автору промпта понять, по каким терминам LLM нужна подсказка. Например, когда она продолжает возвращать действительно хороший перевод к неоптимальному. Или когда у неё возникают проблемы со склонением/спряжением термина на вашем языке.

См., например, раздел ### List of English terms and their preferred German translations в docs/de/llm-prompt.md.