Команда Go for Devs подготовила перевод статьи о релизе Genkit Go 1.0 — open source AI-фреймворка от Google для экосистемы Go. Теперь можно быстро и безопасно создавать продакшен-ready AI-приложения с типобезопасными флоу, поддержкой RAG, вызова инструментов и богатым локальным тулчейном.
Мы рады представить Genkit Go 1.0 — первый стабильный, готовый к продакшену релиз открытого AI-фреймворка от Google для экосистемы Go. Вместе с релизом мы запускаем команду genkit init:ai-tools, которая ускорит ваш процесс AI-разработки.
Genkit — это open-source-фреймворк для создания полноценных AI-приложений. Он предлагает единый интерфейс для разных провайдеров моделей и удобные API для мультимодального контента, структурированных ответов, вызова инструментов, retrieval-augmented generation (RAG) и агентных сценариев. С Genkit Go вы можете быстро создавать и разворачивать AI-приложения для продакшена с характерной для Go скоростью, надёжностью и безопасностью.
TL;DR
Genkit Go теперь стабильный и готов к использованию в продакшене!
Ключевые возможности:
-
Типобезопасные AI-флоу на Go с валидацией по JSON-схемам
-
Единый интерфейс для моделей Google AI, Vertex AI, OpenAI, Ollama и других
-
Поддержка вызова инструментов, RAG и мультимодальности
-
Удобные инструменты для локальной разработки: отдельный CLI-бинари и Developer UI
-
Интеграция AI-ассистента для кодинга через команду
genkit init:ai-tools, включая поддержку Gemini CLI
Готовы писать код? Ознакомьтесь с нашим руководством для начала работы.
Что нового в Genkit Go 1.0
Готов к продакшену
Genkit Go 1.0 — это наше обязательство предоставить стабильную и надёжную основу для создания AI-приложений на Go. С этим релизом вы можете выводить AI-приложения в продакшен на Genkit, будучи уверены, что API стабилен и хорошо протестирован.
Как и в самом Go, предполагается, что программы, написанные на Genkit 1.*, будут по-прежнему компилироваться и корректно работать без изменений даже при выходе будущих релизов (Genkit 1.1, Genkit 1.2 и т.д.).
Типобезопасные AI-флоу
Одна из самых сильных сторон Genkit — флоу: функции для AI-сценариев с наблюдаемостью (observability), удобным тестированием и упрощённым развёртыванием. Ниже показано, как определить флоу на Go для генерации структурированных рецептов:
package main import ( "context" "encoding/json" "fmt" "log" "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googlegenai" ) // Определяем структуры данных type RecipeInput struct { Ingredient string `json:"ingredient" jsonschema:"description=Main ingredient or cuisine type"` DietaryRestrictions string `json:"dietaryRestrictions,omitempty" jsonschema:"description=Any dietary restrictions"` } type Recipe struct { Title string `json:"title"` Description string `json:"description"` PrepTime string `json:"prepTime"` CookTime string `json:"cookTime"` Servings int `json:"servings"` Ingredients []string `json:"ingredients"` Instructions []string `json:"instructions"` Tips []string `json:"tips,omitempty"` } func main() { ctx := context.Background() // Инициализируем Genkit с плагинами g := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}), genkit.WithDefaultModel("googleai/gemini-2.5-flash"), ) // Определяем типобезопасный флоу recipeFlow := genkit.DefineFlow(g, "recipeGeneratorFlow", func(ctx context.Context, input *RecipeInput) (*Recipe, error) { dietaryRestrictions := input.DietaryRestrictions if dietaryRestrictions == "" { dietaryRestrictions = "none" } prompt := fmt.Sprintf(`Create a recipe with the following requirements: Main ingredient: %s Dietary restrictions: %s`, input.Ingredient, dietaryRestrictions) // Генерируем структурированные данные с типобезопасностью recipe, _, err := genkit.GenerateData[Recipe](ctx, g, ai.WithPrompt(prompt), ) if err != nil { return nil, fmt.Errorf("failed to generate recipe: %w", err) } return recipe, nil }) // Запускаем флоу recipe, err := recipeFlow.Run(ctx, &RecipeInput{ Ingredient: "avocado", DietaryRestrictions: "vegetarian", }) if err != nil { log.Fatalf("could not generate recipe: %v", err) } // Печатаем структурированный рецепт recipeJSON, _ := json.MarshalIndent(recipe, "", " ") fmt.Println("Sample recipe generated:") fmt.Println(string(recipeJSON)) <-ctx.Done() // Используется только для локального тестирования }
Единый интерфейс работы с моделями
Genkit Go предоставляет единый, согласованный интерфейс для работы с несколькими вендорами моделей, включая Google AI, Vertex AI, OpenAI, Anthropic и Ollama. Подробнее о генерации контента с помощью AI-моделей:
// Use Google AI models resp, err := genkit.Generate(ctx, g, ai.WithModelName("googleai/gemini-2.5-flash"), ai.WithPrompt("What is the weather like today?"), ) // Use OpenAI models resp, err := genkit.Generate(ctx, g, ai.WithModelName("openai/gpt-4o"), ai.WithPrompt("How are you today?"), ) // Switch to Ollama for local models resp, err := genkit.Generate(ctx, g, ai.WithModelName("ollama/llama3"), ai.WithPrompt("What is the meaning of life?"), )
Вызов инструментов
Genkit Go упрощает предоставление вашим AI-моделям доступа к внешним функциям и API. Полное руководство по вызову инструментов см. здесь:
// Define a tool type WeatherInput struct { Location string `json:"location" jsonschema_description:"Location to get weather for"` } getWeatherTool := genkit.DefineTool(g, "getWeather", "Gets the current weather in a given location", func(ctx *ai.ToolContext, input WeatherInput) (string, error) { // Your weather API logic here return fmt.Sprintf("The current weather in %s is 72°F and sunny.", input.Location), nil }) // Use the tool in generation resp, err := genkit.Generate(ctx, g, ai.WithPrompt("What's the weather in San Francisco?"), ai.WithTools(getWeatherTool), )
Простое развёртывание
Развёртывайте ваши флоу как HTTP-эндпоинты с минимальными настройками. В руководствах по развёртыванию описаны и другие варианты:
// Create HTTP handlers for your flows mux := http.NewServeMux() mux.HandleFunc("POST /recipeGeneratorFlow", genkit.Handler(recipeFlow)) // Start the server log.Fatal(server.Start(ctx, "127.0.0.1:3400", mux))
Богатые инструменты для разработчиков
Genkit Go поставляется с полным набором инструментов, которые делают разработку AI-приложений быстрой и интуитивной. Весь локальный тулчейн доступен через единый CLI, который органично встраивается в ваш рабочий процесс разработки на Go.
Установка автономного CLI
Начните быстро с нашего отдельного CLI-бинаря — никакие дополнительные рантаймы не нужны:
Для macOS и Linux:
curl -sL cli.genkit.dev | bash
Для Windows: просто скачайте бинарь напрямую: cli.genkit.dev
CLI работает с Genkit-приложениями на любом поддерживаемом языке (JavaScript, Go, Python) и предоставляет несколько удобных команд для быстрого тестирования и итераций, например, запуск и проверку ваших флоу.
Интерактивный Developer UI
Developer UI — это визуальный интерфейс для тестирования и отладки ваших AI-приложений:
-
Интерактивное тестирование флоу: запускайте флоу с разными входными данными и смотрите аккуратно отрендеренные результаты
-
Отладка с подробным трейсингом: визуализируйте пошагово, что именно делает ваш AI-флоу
-
Мониторинг производительности: отслеживайте задержку, использование токенов и стоимость
-
Эксперименты с промптами: тестируйте разные промпты и конфигурации моделей
Запустите Developer UI вместе с вашим Go-приложением через CLI:
genkit start -- go run .
Вот как это выглядит на примере запуска и анализа флоу recipeGenerator, который мы создали ранее:

Представляем genkit init:ai-tools
Мы рады представить команду genkit init:ai-tools, которая меняет подход к работе с AI-ассистентами во время разработки. Эта функция, теперь доступная как для JavaScript-, так и для Go-разработчиков, автоматически настраивает популярные AI-ассистенты для бесшовной работы с фреймворком и инструментами Genkit. Подробнее об AI-поддержке разработки в Genkit читайте здесь.
Чтобы использовать её, установите Genkit CLI и выполните:
genkit init:ai-tools
Запуск команды выполняет следующее:
-
Определяет существующие конфигурации AI-ассистентов и сохраняет ваши текущие настройки
-
Устанавливает Genkit MCP-сервер с мощными инструментами для разработки:
-
lookup_genkit_docs: поиск по документации Genkit с сайта genkit.dev
-
list_flows: список всех флоу в вашем Genkit-приложении
-
run_flow: запуск флоу с тестовыми входными данными
-
get_trace: получение трейсинга выполнения для отладки и анализа
-
-
Создаёт файл
GENKIT.mdс подробными инструкциями для AI-ассистентов на вашем языке разработки
Поддерживаемые AI-инструменты
Команда поддерживает:
-
Gemini CLI — CLI-ассистент для кодинга от Google
-
Firebase Studio — облачная агентная среда разработки от Firebase
-
Claude Code — AI-ассистент от Anthropic
-
Cursor — редактор кода с поддержкой AI
Для других инструментов можно выбрать опцию generic, чтобы получить файл GENKIT.md, который можно интегрировать вручную.
Улучшенный опыт разработки
С интеграцией AI-ассистентов вы сможете:
-
Задавать вопросы об API Genkit Go и получать точные и актуальные ответы
-
Генерировать код на Go с использованием Genkit по лучшим практикам
-
Отлаживать флоу, анализируя трейсинги вместе с AI-ассистентом
-
Тестировать приложения с помощью AI-сгенерированных входных данных
-
Получать подсказки по идиоматичным паттернам и подходам в Go
Русскоязычное Go сообщество

Друзья! Эту статью перевела команда «Go for Devs» — сообщества, где мы делимся практическими кейсами, инструментами для разработчиков и свежими новостями из мира Go. Подписывайтесь, чтобы быть в курсе и ничего не упустить!
Быстрый старт
-
Создайте новый проект:
mkdir my-genkit-app && cd my-genkit-app go mod init example/my-genkit-app
-
Установите Genkit и CLI:
go get github.com/firebase/genkit/go curl -sL cli.genkit.dev | bash
-
Настройте интеграцию с AI-ассистентом:
genkit init:ai-tools
-
Создайте свой первый флоу, используя примеры выше
-
Запустите Developer UI:
genkit start -- go run .
Для более подробного пошагового руководства см. пошаговое руководство.
Полезные ссылки
-
Документация: genkit.dev
-
Пошаговое руководство: Go quickstart
-
Справочник Go API: pkg.go.dev
-
Примеры: GitHub samples
-
Сообщество: Genkit Discord
ссылка на оригинал статьи https://habr.com/ru/articles/946248/
Добавить комментарий