12-Factor Agents: Patterns of reliable LLM applications (Рубрика #AI)
С интересом посмотрел
выступление и дальше изучил
GitHub про 12 factor app для агентов. С этой темой выступал Dexter Horthy - опытный инженер и основатель компании
HumanLayer (стартап в Y Combinatir). Ключевая идея Декстера в том, что вместо одного большого агента стоит делать небольшие сфокусированные агенты - это похоже на ситуацию с монолитом и микросервисами. Декстер считает, что агенты - это просто софт, то есть если вы умеете в swith и while, то вы можете создавать агентов. Но для их создания лучше использовать не фреймворки, что позволяют получить 70 - 80% качества, а дальше требуется проводить реверс инжиниринг фреймворков, чтобы подтюнить агентов до оставшихся 20%. Автор предлагает набор из 12 факторов, что похожи на
12 факторов от Heroku, ставших потом частью принципов создания cloud native приложений. Ну а теперь пожалуй можно рассказать и про все 12 факторов
1. Natural Language to Tool Calls. Один из самых распространенных шаблонов в построении агентов - это преобразование естественного языка в структурированные вызовы инструментов. Это мощный шаблон, который позволяет вам создавать агентов, которые могут рассуждать о задачах и выполнять их.
2. Own your prompts. Не стоит передавать управление промптами на сторону фреймворка
3. Own your context window. LLM - это функции без состояния, которые превращают входы в выходы. Чтобы получить лучшие выходы, нужно дать им лучшие входы.
4. Tools are just structured outputs. Инструменты не должны быть сложными. По своей сути, они просто структурированный вывод из вашего LLM, который запускает детерминированный код.
5. Unify execution state and business state. Даже за пределами мира AI многие инфраструктурные системы пытаются отделить "состояние выполнения" от "бизнес-состояния". Для приложений ИИ это может включать сложные абстракции для отслеживания таких вещей, как текущий шаг, следующий шаг, статус ожидания, количество повторных попыток и т. д. Такое разделение создает сложность, которая может быть полезной, но может быть излишней для вашего варианта использования.
6. Launch/Pause/Resume with simple APIs. Агенты - это всего лишь программы, и у нас есть определенные ожидания относительно того, как их запускать, опрашивать, возобновлять и останавливать.
7. Contact humans with tool calls. Интеграция взаимодействия с людьми через инструменты (для принятия решений или доп информации)
8. Own your control flow. Владение control flow позволяет добавлять probes, тесты и многое другое
9. Compact Errors into Context Window. Обработка ошибок через контекстное окно без слепого добавления stack traces ошибок
10: Small, Focused Agents. Создание маленьких agents с 3-10 шагами вместо монолитных решений.
11. Trigger from anywhere, meet users where they are. Агенты должны быть доступны из разных входных точек: slack, email, API, ...
12. Make your agent a stateless reducer. Агентов стоит проектировать как stateless функции для лучшей масштабируемости
Если подводить итоги выступления, то
1. Фреймворки и строительные блоки для агентов
. Декстер не выступает против фреймворков, но предлагает использовать 12 факторов для того, чтобы делать более мощных и надежных агентов (возможно фреймворки потом будут поддерживать эти 12 факторов)
2. Инкрементальный подход. Самый быстрый путь для создателей агентов для получения качественного AI софта - брать маленькие, модульные концепты и включать их в существующий продукт.
3. Инженерная составляющая. Даже если LLM станут экспоненциально мощнее, core engineering техники останутся ценными для создания более надежного, масштабируемого и поддерживаемого Gen AI софта.
4. Взаимодействие людей и AI. По мнению автора, будущие агенты не должны быть полностью автономными - важно найти способы для агентов сотрудничать с людьми.
#AI #ML #Software #Architecture #Processes #DevEx #Devops #Agents