Как проверить контроллер Computer Use API без подключения модели

19 офлайн-тестов на Python: проверка действий, идентификаторов снимков и результата формы. Код подключения включён, но с реальным API не проверен.

Как проверить контроллер Computer Use API без подключения модели

В интеграции Computer Use есть два отдельных вопроса: возвращает ли модель поддерживаемые действия и умеет ли приложение выполнить их, не приняв сообщение об успехе за результат? Здесь мы начинаем со второго. Python-контроллер и 19 офлайн-тестов работают без API-ключа, браузерной сессии и расходов на модель.

Скачать контроллер. Тесты прошли на Python 3.9.6, включая повтор из свежего архива. Адаптер run_live.py не запускался и не проверялся с реальным провайдером. Настоящих снимков API-сеанса, измерений потребления ресурсов и доказательств совместимости здесь нет.

Сначала запустите локальные тесты

Достаточно Python 3.9+ и стандартной библиотеки. Из каталога api-kit:

python3 -B -m unittest discover -s . -p 'test_*.py' -v

15 случаев относятся к контроллеру, четыре — к записям получателя. Ответы модели и среда выполнения имитируются, без сети и браузера. Байты вместо скриншотов не являются изображениями и не подходят для отправки провайдеру.

ФайлНазначение
controller.pyПроверка действий, возврат наблюдений, остановка по результату
test_controller.pyСинтетические ответы и имитация среды выполнения
test_receiver.pyПроверка изменений записей в памяти
run_live.pyАдаптер Playwright/HTTPS Responses для последующей проверки
README.mdКоманды и условия реального подключения

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

Модель выбирает действие, среда выполнения управляет браузером, а независимый проверяющий код оценивает результат приложения. В учебной форме используйте уникальный адрес @example.test для каждой попытки.

Сравнивайте /submissions до запуска и во время выполнения. Прежняя последовательность должна остаться неизменной, а в конце должна добавиться ровно одна запись с ожидаемым адресом. Старая запись, дубликат, другой адрес и зелёный баннер не проходят эту проверку. Условие относится только к стенду; в рабочей системе нужен собственный признак результата, например ID сохранённого черновика.

Следуйте одному протоколу

Код опирается на структурированные действия из руководства OpenAI Computer Use. Контроллер отправляет первый снимок, принимает упорядоченные действия computer_call, выполняет разрешённые операции и возвращает изображение в computer_call_output с соответствующим call_id. Следующий запрос содержит previous_response_id.

Идентификаторы связывают наблюдение с запросом действия. Изображение с неправильным ID не заменяет корректный результат инструмента. Документация служит основанием протокола, но не доказывает совместимость незапущенного адаптера с конкретной моделью.

Перед подключением проверьте вместе модель, эндпоинт и схему инструмента. Успех текстового запроса не доказывает поддержку Computer Use. В наборе нет выбранного по умолчанию провайдера или модели и не заявлена совместимость с маршрутами Ofox.

Проверяйте действия до исполнения

Поддерживаются левый клик, ввод до 200 символов, выбранные одиночные клавиши, ограниченная прокрутка и снимок. Координаты должны помещаться в текущем изображении; логические значения, неконечные числа и некорректные структуры отклоняются. Максимум — 12 действий в ответе и по умолчанию четыре обращения к модели. Неизвестное действие останавливает выполнение.

В одном ответе допускается один computer call. Повторный ID, незавершённый ответ и ожидающая решения проверка безопасности приводят к остановке, а не автоматическому согласию. Это не полная реализация всех действий и согласований.

Результат проверяется до и после каждого действия, чтобы после асинхронного сохранения не нажать кнопку повторно. Адаптер также кратко опрашивает получателя после клика или клавиши. Эти правила проверены локально, но не доказывают работоспособность настоящего браузерного соединения.

Что установили 19 тестов

Проверены неправильные структуры и координаты, неподдерживаемый ввод, соответствие вызова и снимка, предел шагов, повторные вызовы, ранняя остановка и точные изменения записей. Регрессионные случаи запрещают дальнейшие действия после завершения, а также дубликаты и неверный адрес.

Для завершённых ответов с корректным ID журнал сохраняет данные об использовании (usage), включая финальный ответ без действий. При ошибке исполнения сохраняются попытки действий. Синтетические данные об использовании не отражают фактических начислений, а код не гарантирует файл отчёта при любой ошибке запуска. Тесты не измеряют точность модели, зрительное понимание и успех реальных задач.

Условия реального запуска

run_live.py создаёт новый контекст Playwright Chromium, ограничивает обычные запросы страниц источником (origin) локального стенда и требует явно заданный HTTPS Responses URL. Он не подключается к личному профилю. Неожиданный источник страницы или новая вкладка останавливают выполнение. Это ограничение не является универсальной защитной песочницей.

По документации Playwright установите отдельное окружение и запишите реальные версии пакета и браузера. Зависимости адаптера пока не установлены и не закреплены как проверенные. Переменные COMPUTER_RESPONSES_URL, COMPUTER_MODEL, COMPUTER_API_KEY задаются через окружение; ключ не должен попасть в архив или репозиторий.

Нужны разрешения на браузер и расходы. Адаптер нельзя использовать для обхода отказа доступа. Для каждой попытки берите новый синтетический адрес и каталог результата. Четыре вызова и лимит выходных токенов не являются денежным бюджетом: отдельно проверьте тариф и лимит аккаунта. Тайм-аут не исключает начислений; перед повтором изучите данные об использовании и сохранённые записи формы.

Для принятия интеграции сохраните модель, хост, версии, задачу, очищенные от секретов ответы, ID, снимки и итоговые записи. Повторите из чистого окружения с новым адресом и сообщите оба результата отдельно. Нельзя заменить неработающий инструмент текстовым ответом и назвать это успешным Computer Use. Сейчас подтверждены только 19 офлайн-тестов.

Часто задаваемые вопросы

Можно ли считать пример проверенной интеграцией с API?
Нет. Контроллер и получатель прошли 19 офлайн-тестов, но адаптер не запускался. Совместимость с провайдером, настоящий браузер и расходы не проверены.