Genkit Go 1.0: AI-фреймворк для продакшена

от автора

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

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

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


ссылка на оригинал статьи https://habr.com/ru/articles/946248/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *