Skip to content

ПР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-схемы подтверждает форму ответа, но не его истинность.

Что сделать

  1. Подключите детерминированный mock-fixture и проверьте схему, версию, системы координат и допустимые диапазоны полей SceneDescription v1.
  2. Постройте ключ кэша из хэша изображения, рабочего промпта, ID модели, конфигурации и версии схемы. Настройте правило отказа от ответа на размеченном наборе: низкая уверенность ведёт к unknown.
  3. Неисправный кэш игнорирует промпт, модель или конфигурацию и возвращает старую сцену. Воспроизведите коллизию ключа и добавьте регрессионный тест: изменение любого компонента — 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.

Официальные и первичные справочники

Учебные материалы: CC BY 4.0 · Код: Apache-2.0