Appearance
ПР10. Адаптер VLM: схема, неопределённость и кэш
Работа относится к проектной траектории. Рассчитывайте на одну лабораторную пару и примерно 2,5 часа самостоятельной доработки.
Цель
Собрать адаптер сцены SceneDescription v1 в режимах mock/cache/live и доказать, что невалидный, неуверенный или устаревший ответ превращается в unknown, а любое изменение image/prompt/model/config даёт новый ключ кэша.
Критерии зачтено
Работа зачтена, когда выполнены все три стадии и прошла автопроверка:
| Стадия | Что требуется |
|---|---|
| 1 · Собрать | mock-fixture, проверки схемы/версии/систем координат/диапазонов, cache-ключ из всех компонентов |
| 2 · Сломать | кэш игнорирует промпт, модель или конфигурацию и возвращает старую сцену |
| 3 · Доказать | коллизия ключа воспроизведена и закрыта регрессионным тестом; offline-тесты не зависят от live API |
| Автопроверка | check_practice.py PR10 проверит config/vlm*.yaml, fixtures/vlm/*.json, evidence/pr10/{schema-check.txt,abstain.md} и заявления public_tests_passed, defect_reproduced, defect_fixed, offline_verified |
Что получится
Адаптер будет выдавать SceneDescription v1 в режимах mock, cache и live, проверять JSON-схему и возвращать unknown, если ответ невалиден, неуверен или устарел. VLM не получает доступа к команде движения.
Пакеты и понятия
scene_adapter— пакет адаптера сцены; результат —SceneDescription v1: наблюдение о сцене, никогда не команда приводу.- Три режима одного интерфейса:
mock— локальный fixture;cache— результат записан и переиспользуется по ключу;live— только явно внедрённый backend (без него — ошибка, обязательные тесты не зависят от live API). - Ключ кэша строится из хэша изображения + рабочего промпта + ID модели + конфигурации + версии схемы: изменение любого компонента даёт
cache miss. unknown— полноценный результат для невалидного, неуверенного или устаревшего ответа. Прохождение JSON-схемы подтверждает форму ответа, но не его истинность.
Что сделать
- Подключите детерминированный mock-fixture и проверьте схему, версию, системы координат и допустимые диапазоны полей
SceneDescription v1. - Постройте ключ кэша из хэша изображения, рабочего промпта, ID модели, конфигурации и версии схемы. Настройте правило отказа от ответа на размеченном наборе: низкая уверенность ведёт к
unknown. - Неисправный кэш игнорирует промпт, модель или конфигурацию и возвращает старую сцену. Воспроизведите коллизию ключа и добавьте регрессионный тест: изменение любого компонента —
cache miss, поле управления в ответе — отказ всего ответа.
Сохраните конфигурацию, локальные JSON-fixtures и evidence/pr10/{schema-check.txt,abstain.md,report.json}. Live API необязателен.
Проверка
bash
colcon test --packages-select scene_adapter
python3 -m unittest project/tests/test_vertical_slice.py
python3 /path/to/course/tools/check_practice.py PR10 --submission .Готово, если offline-режим полностью проходит тесты, низкая уверенность ведёт к unknown, а схема не содержит полей управления. Дополнительно: сравните две live-модели на одном сохранённом наборе без раскрытия ключей.
Как работаем на лабораторной
После разбора ошибок восприятия вручную проверьте три fixtures: валидный ответ, низкую уверенность и лишнее поле. Затем добавьте тест ключа кэша или отчёт по порогу отказа от ответа.
Общий порядок: runbook · troubleshooting.
Если использовался ИИ, применяются правила курса.
Правила интеграции
- корректная JSON-схема не означает истинный или безопасный ответ;
unknownявляется допустимым публичным результатом;- поле управления или другое неизвестное поле отклоняет весь исходный ответ;
- изменение image/prompt/model/config/schema должно давать новый cache key;
- текст внутри изображения считается недоверенным вводом;
- основная проверка не зависит от live API.