Об этом проекте

Floret — это многоразовый движок на Go, предназначенный для создания интерактивных агентов ИИ, которые могут использовать инструменты. Он владеет модельным циклом и полным жизненным циклом допущенного агента, обрабатывая канонические сообщения, потоки, ходы, запуски, инструменты, одобрения, задачи, артефакты, контекст, субагентов, восстановление, состояние провайдера, кэш подсказок и наблюдаемые факты выполнения. Хост-приложение отвечает за пользовательский интерфейс продукта, учетные данные, профили провайдеров, авторизацию ресурсов, маршрутизацию, состояние чтения, загрузки до допуска и диагностику транспорта. Floret явно не является фреймворком графового рабочего процесса, оркестратором многоагентных систем или слоем сохранения продукта. Ключевые особенности включают: - **Управление устойчивым жизненным циклом**: Управляет идентификаторами потоков, ходов и запусков с каноническим журналированием как единственным источником истины. - **Интеграция инструментов**: Поддерживает локальные определения инструментов, разрешения, ресурсы, эффекты и результаты, включая безопасный инструмент для получения публичного текста по HTTP/HTTPS (`web_fetch`). - **Обработка контекста**: Поддерживает канонические сообщения, ссылки и элементы контекста, поддерживая уплотнение и восстановление. - **Шлюз провайдера**: Абстрагирует провайдеров моделей через контракт `provider.Gateway` с официальными конструкторами для совместимых с OpenAI и DeepSeek провайдеров. - **Абстракция хранения**: Предоставляет непрозрачные интерфейсы хранения с официальными реализациями в памяти и SQLite, поддерживая расширенную интеграцию хранения через SPI. - **Наблюдаемость**: Генерирует санитизированные события выполнения и проекции для хоста для мониторинга выполнения агента. - **Субагенты**: Поддерживает иерархические структуры агентов с явными отношениями родитель-потомок. - **Одобрение и взаимодействие**: Управляет одобрениями пользователей, запросами на ввод и ответами на взаимодействие, включая обработку скрытых секретов. Граница выполнения определяется `runtime.Host`, который предоставляет типизированные сервисы жизненного цикла для управления потоками, включая создание, разветвление, удаление, отправку, ответ, отмену, повтор и подписку. Floret обеспечивает согласованное чтение через канонические представления и поддерживает скоординированный запуск и восстановление хранения для сред с несколькими хранилищами. Он включает управление метаданными модели через офлайн-снимок models.dev и накладывает строгую валидацию ввода модели с ограниченными возможностями регенерации для неверных аргументов инструментов.