alterna ai
ALTERNA AI / ГЛАВА 20 · 01

20.1 Определяем вход и ожидаемый результат

Все блоки системы уже встречались в курсе.

Перед соединением блоков договоримся, что система получает, что выдаёт и когда должна остановиться.

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

Граница системы должна быть строже поведения модели

Финальная система начинается не с весов, а с проверяемого контракта. Он задаёт форму запроса и ответа, типы полей, допустимые диапазоны, версию tokenizer, способ завершения генерации и семантику ошибок. Модель может вернуть неожиданный текст, но внешний API не должен принимать неожиданные типы или молча угадывать намерение клиента. В частности, Python считает bool подтипом int, поэтому проверка целого диапазона обязана отдельно исключать логические значения.

В локальном контракте запрос содержит ровно prompt: str и max_new_tokens: int от 1 до 8. Запрет неизвестных полей помогает обнаружить опечатку вместо того, чтобы проигнорировать её. Ответ отделяет сгенерированные token IDs от citations и причины остановки; эти поля нельзя восстанавливать парсингом произвольной строки. Версия схемы делает несовместимое изменение явным.

Продолжение. Визуальная модель проводит один запрос через границу untrusted input → validation → normalized request → model runtime → typed response. На каждом переходе видны schema version, принятое решение и машинно-читаемый код ошибки. Контракт также фиксирует maximum prompt length, encoding, timeout и поведение при недоступном источнике, чтобы клиент не зависел от случайного текста исключения.

Граница применимости. Валидация формы не доказывает безопасность смысла prompt и не заменяет authorization. Слишком широкий контракт расширяет поверхность атаки, а слишком узкий мешает развитию API. Изменение tokenizer, chat template или stop policy может быть несовместимым даже при прежнем JSON; такие зависимости входят в версионируемый model contract.

def validate_request_20a(value_20a):
    if not isinstance(value_20a, dict) or set(value_20a) != {'prompt', 'max_new_tokens'}:
        return False
    limit_20a = value_20a['max_new_tokens']
    return (isinstance(value_20a['prompt'], str) and
            isinstance(limit_20a, int) and not isinstance(limit_20a, bool) and
            1 <= limit_20a <= 8)

# Полный исполняемый пример — по ссылке ниже.

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Узкая спецификация делает failure и проверку наблюдаемыми.

Проверяем совместимость частей. Как этот вопрос продолжает полученный результат?

Python-примеры главы 20 Академическая база →