Donna — предсказуемость и управляемость для ваших агентов ru en
Ищу early adopters для своей агентной утилиты.
Назвал Donna — https://github.com/Tiendil/donna
С её помощью ваши агенты будут генерировать стейт-машины, пока выполняют стейт-машины, созданные другими стейт-машинами.
Donna позволяет агентам выполнять сотни последовательных операций без отклонения от заданного потока исполнения. Ветвления, циклы, вложенные вызовы, рекурсия — всё возможно.
Большинство прочих инструментов просто шлют мета-инструкции агентам и надеются, что те не ошибутся. Конечно, агенты ошибаются: путают шаги, пропускают операции, несут отсебятину. Donna честно выполняет стейт-машины: хранит состояние, стек вызовов, контролирует поток исполнения. Агенты выполняют только конкретные команды от Donna.
При этом Donna — не оркестратор, а просто утилита, поэтому её можно подключить куда угодно, не нужно API ключей, паролей, etc.
Концепцию можно описать в двух утверждениях:
- Большинство высокоуровневой работы алгоритмизируется значительно лучше, чем это кажется.
- Большинство низкоуровневой работы алгоритмизируется значительно хуже, чем это кажется.
Поэтому мы должны стараться отдавать агентам низкоуровневые задачи с небольшим чётким контекстом, а высокоуровневые задачи определять алгоритмически.
Например, вместо того, чтобы просить агента «провалидируй код и поправь проблемы», мы можем описать чёткую последовательность действий:
- Запусти тесты, если тесты провалились, проанализируй вывод, поправь и вернись на шаг 1.
- Отформатируй код.
- Проверь код линтером, если есть ошибки, проанализируй вывод, поправь код и вернись на шаг 1.
- …
Пример выше упрощён. Более сложную версию можно найти в коде Feeds Fun.
Смотреть на такие стейт-машины (workflow в терминах Donna) можно как на формально определённые, валидируемые skills 2.0.
При этом workflow — это читаемый Markdown-файл. То есть его может создать как человек, так и агент.
Поэтому с помощью Donna агент может создавать стейт-машины для самого себя и выполнять их.
Например, Donna поставляется с workflow, который:
- Выбирает самый подходящий workflow для создания Request for Change (RFC) документа и запускает его.
- По созданному RFC создаёт стейт-машину для реализации изменений, описанных в RFC.
- Запускает выполнение новой стейт-машины.
- Выбирает самый подходящий workflow для полировки кода и запускает его.
- Выбирает самый подходящий workflow для обновления CHANGELOG и запускает его.
В дополнение к стейт-машинам, Donna реализует абстракции для управления артефактами (документация, workflow). Это позволяет ей валидировать их, навигировать по ним (без нечёткого поиска), устанавливать коллекции артефактов как Python пакеты. Например, вы можете поставлять инструкции по взаимодействию с вашим проектом сразу вместе с его библиотекой.
Само собой, всё расширяемо вашим Python кодом: вы можете добавлять свои операции для workflow, свои типы артефактов, свои источники артефактов, etc.
Больше информации можно найти на странице проекта: https://github.com/Tiendil/donna
Я очень заинтересован в обратной связи: как вы используете или хотели бы использовать Donna, с какими проблемами столкнулись, какой функциональности не хватает — что угодно. Можно создавать issues на GitHub, писать в комментариях к этому посту, или писать мне в личку.
Звёздочки репозиторию тоже нужны ;-)
Читать далее
- Модная типизация в Python
- Генерация подземелий — от простого к сложному
- Prompt engineering: строим промпты от бизнес кейсов
- Опыт использования Julia
- Автоматический генератор нелинейных квестов
- World Builders 2023: Предпочтения игроков в стратегии
- Открываем лор Сказки под лицензией CC BY 4.0
- Feeds Fun — читалка новостей с тегами и ChatGPT
- Мои GPT-шки и prompt engineering
- Используем DALL-E для геймдева