Анонсирован Genkit для Dart: фреймворк для ИИ-приложений
Google анонсировала - open-source фреймворк для создания полноценных ИИ-приложений на Dart и Flutter. Это не просто очередная обертка над API, а инструмент, который позволяет строить сложные ИИ-сценарии с типизацией, тестированием и удобным UI для отладки. Пока в предварительной версии, но уже выглядит многообещающе.
Что такое Genkit Dart и зачем он нужен:
Сейчас ИИ-функции проникают повсюду: кто-то строит вокруг них новые продукты, кто-то добавляет умные фичи в существующие. Genkit Dart закрывает сразу несколько потребностей:
Единый API для работы с разными моделями (Google Gemini, OpenAI, Anthropic и другие совместимые).
Строгая типизация ответов - никаких неожиданных форматов.
Возможность писать логику один раз и запускать ее где угодно: на сервере, в облаке или прямо внутри Flutter-приложения.
Удобный локальный UI для тестирования и отладки промптов.
Как это работает:
Фреймворк предлагает несколько сценариев использования, в зависимости от того, где должна выполняться ИИ-логика и как вы хотите управлять ключами.
Все внутри Flutter (для прототипов):
Самый простой способ - писать всю логику прямо в приложении. Подходит для прототипов или случаев, когда пользователь сам вводит свой API-ключ. Но здесь есть важное предупреждение: публиковать в сторе приложение с зашитым ключом - плохая идея, его легко вытащат.
Бэкенд + Flutter с общей типизацией:
Когда логика сложная или ключи нужно прятать, весь ИИ-код уезжает на сервер. Flutter-приложение вызывает его как удаленный метод. Благодаря тому, что и фронт, и бэк на Dart, можно переиспользовать общие схемы данных и сохранить строгую типизацию от конца до конца.
Прокси-сервер для моделей:
Компромиссный вариант: на сервере поднимается тонкая прослойка, которая проксирует запросы к ИИ-моделям, добавляя авторизацию и валидацию. Ключи API хранятся на сервере, а Flutter-приложение общается с ним как с обычным Genkit-клиентом.
Что внутри:
Genkit предоставляет не только клиент для вызовов, но и целый набор инструментов для построения надёжных ИИ-приложений:
Поддержка мультишаговых потоков (flows): можно строить сложные цепочки вызовов.
Интеграция с инструментами (tools): модель может вызывать внешние функции для получения данных.
Структурированный вывод: схемы описываются через schemantic, ответы приходят строго типизированными.
Наблюдаемость: локальный веб-интерфейс для просмотра трассировок, тестирования промптов и отладки.
Пример из жизни:
В статье показан типичный сценарий: планировщик путешествий. Приложение принимает пункт назначения и количество дней, вызывает модель с запросом на составление маршрута, а модель при необходимости может запросить погоду через отдельный инструмент. Вся логика описана как типобезопасный путь, который потом можно либо запустить локально, либо выставить как API.
Кому это будет полезно:
Командам, которые хотят переиспользовать Dart-код между фронтом и бэком.
Разработчикам, уставшим от неожиданных форматов ответов ИИ-моделей.
Тем, кто строит сложные агентные сценарии и хочет удобно их отлаживать.
Всем, кто ищет альтернативу разрозненным вызовам к разным API.
Вывод:
Genkit Dart - это попытка внести порядок в хаос ИИ-разработки. Вместо того чтобы каждый раз городить свои обертки над моделями, можно взять готовый фреймворк с типизацией, тестируемостью и удобным UI. Пока это превью, но направление выглядит правильным. Если вы работаете с Dart/Flutter и думаете, как добавить в проект ИИ-фичи - присмотритесь.