fastapi/docs/ru/docs/_llm-test.md

18 KiB
Raw Blame History

Тестовый файл 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 — недетерминированные алгоритмы).

Тесты:

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

//// tab | Тест

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

////

//// tab | Информация

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

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

////

Кавычки

//// tab | Тест

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

/// note | Примечание

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

///

////

//// tab | Информация

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

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

////

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

//// tab | Тест

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"'"

////

//// tab | Информация

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

////

Блоки кода

//// tab | Тест

Пример кода 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")  # Это работает 🎉

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

////

//// tab | Информация

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

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

////

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

//// tab | Тест

/// info | Информация Некоторый текст ///

/// note | Примечание Некоторый текст ///

/// note | Технические подробности Некоторый текст ///

/// check | Проверка Некоторый текст ///

/// tip | Совет Некоторый текст ///

/// warning | Предупреждение Некоторый текст ///

/// danger | Опасность Некоторый текст ///

////

//// tab | Информация

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

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

////

//// tab | Тест

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

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

////

//// tab | Информация

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

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

////

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

//// tab | Тест

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

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

  • GTD
  • lt
  • XWT
  • PSGI

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

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

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

  • MDN
  • I/O.

////

//// tab | Информация

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

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

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

////

Заголовки

//// tab | Тест

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

Привет.

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

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

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

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

////

//// tab | Информация

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

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

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

////

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

//// tab | Тест

  • вы

  • ваш

  • например

  • и т.д.

  • 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 (источник)

  • переопределение

  • полезная нагрузка

  • процессор

  • свойство

  • прокси

  • пулл-реквест (запрос на изменение)

  • запрос

  • ОЗУ

  • удалённая машина

  • статус-код

  • строка

  • тег

  • веб‑фреймворк

  • подстановочный знак

  • вернуть

  • валидировать

////

//// tab | Информация

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

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

////