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

Для более подробного пошагового руководства см. пошаговое руководство.

Полезные ссылки

Комментарии (0)