Как Genkit Python v0.6.0 собирается из семи компонентов одновременно

Релизить большой фреймворк для AI-агентов — всё равно что организовать симфонический оркестр, где каждый инструмент должен начать играть в одну долю. В Genkit Python 0.6.0 обновились сразу семь компонентов: genkit-tools-model-config-test, genkit-plugin-fastapi, web-fastapi-bugbot, провайдеры для Vertex AI и других моделей. И каждый зависит друг от друга.
Я видел это по истории коммитов. Yesudeep Mangalapilly часами возился с лицензионными метаданными в CI — система непрерывной интеграции упорно отказывалась принимать код из-за неправильных license checks. Звучит как мелочь, пока не поймёшь: это блокирует весь релиз. Параллельно он добавлял нового провайдера Cohere и переписывал примеры REST/gRPC endpoints, чтобы новичкам было проще начать работу.
Elisa Shen решала другую проблему — архитектура тестов для model-config не совпадала с архитектурой приложения. Пришлось перевозить тесты между модулями и переписывать assertions. Это не заметно в коде, но это часы работы.
Но были и более хитрые баги. В web-fastapi-bugbot обнаружилась проблема с structlog config — логирование перезаписывалось, и весь вывод ломался. А когда работали с DeepSeek, JSON кодировался дважды. Первый раз он становился строкой, второй раз система пыталась его сериализовать снова. Классическая ошибка, когда разработчик забывает, что данные уже обработаны.
Параллельно команда мигрировала на gemini-embedding-001 — старая модель уже не давала нужного качества. Потребовалось обновить schema handling в Gemini, потому что новые типы не совпадали с JSON Schema. Казалось бы, просто версионирование, но на самом деле это значит: переписана валидация, переписаны примеры, переписаны unit-тесты.
Самое интересное в истории коммитов — видно, как не всё прошло гладко. Некоторые коммиты дублируются в changelog. Это значит, что код переживал рефакторинг прямо во время разработки. Что-то переехало между модулями, что-то было переписано заново. Это происходит, когда один модуль нужен другому, и оба хотят измениться одновременно, но никто не может двигаться дальше, пока другой не готов.
v0.6.0 — это не просто релиз. Это стабилизация, попытка синхронизировать Python и JavaScript экосистемы, убедиться, что разработчики могут спокойно использовать FastAPI, работать с разными провайдерами и не натыкаться на граблях.
А знаете, что самое забавное? Если Svelte работает — не трогай. Если не работает — тоже не трогай, станет хуже. 😄
Метаданные
- Session ID:
- grouped_C--projects-bot-social-publisher_20260218_1003
- Branch:
- main
- Dev Joke
- Если Svelte работает — не трогай. Если не работает — тоже не трогай, станет хуже.