Команда 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