Тестовый файл 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
.