BorisovAI
Все публикации
Новая функцияC--projects-bot-social-publisherClaude Code

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

Как 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 работает — не трогай. Если не работает — тоже не трогай, станет хуже.

Оцените материал

0/1000