Непонятен механизм получения результатов поручения
Под результатом выполнения поручений подразумевается:
- некий id, однозначно идентифицирующий поручение. В норме это должно быть id поручения на стороне Smithy
- статус выполнения поручения: зарегистрировано, в работе, завершено
- успешность выполнения поручения: успешно выполнено, неуспешно выполнено
- ответ от АИ в свободной форме
Сейчас я вижу следующие способы получения результатов выполнения поручений и их недостатки:
- АИ-агент использует инструмент, внутри которого происходит запрос к api-эндпоинту получения результатов поручения. Проблемы:
- АИ-агент не имеет доступа к id поручения
- формализация других полей результата имитируется АИ-агентом через промтинг
- если АИ-агент упадёт (отвалится по таймауту на любом из этапов или упадет с exception), то статус поручения во внешнем сервисе всегда будет "в работе"
- кажется, с т.з. архитектуры это неверное решение
- Внешний сервис регулярно опрашивает API-сервер Smithy по id поручения для получения результатов. Проблемы:
- в результатах отсутствует успешность выполнения поручения
- в результатах отсутствует ответ от АИ в свободной форме
- Внешний сервис регулярно опрашивает веб-сокет Smithy по id поручения. Проблемы:
- отсутствует статус выполнения поручения, только ответ АИ-агента в свободной форме
- высокий риск потери результатов поручений из-за особенностей работы веб-сокета
- если АИ-агент упадёт (отвалится по таймауту на любом из этапов или упадет с exception), то статус поручения во внешнем сервисе всегда будет "в работе"
Как я это вижу: АИ-агент после завершения работы над поручением передаёт ответ в свободной форме и параметр успех/неуспех выполнения поручения наверх, на уровень поручений. Чтобы по API можно было вытащить все необходимые поля для получения результата.
Edited by Андрей Алексеев