Genkit Go 1.0 및 향상된 AI 지원 개발 발표

2025년 9월 9일
Chris Gill Product Manager
Cameron Balahan Group Product Manager

Go 생태계를 위한 Google의 오픈소스 AI 개발 프레임워크의 안정적이면서도 프로덕션 환경에 바로 사용 가능한 최초의 버전인 Genkit Go 1.0의 출시를 발표하게 되어 기쁩니다. 이번 버전과 함께 AI 지원 개발 워크플로를 강화해 줄 genkit init: ai-tools 명령어도 도입할 예정입니다.

Genkit은 풀 스택 AI 기반 애플리케이션 개발용 오픈소스 프레임워크입니다. 여러 모델 공급자를 위한 통합 인터페이스와 멀티모달 콘텐츠, 구조화된 출력, 도구 호출, RAG(검색 증강 생성), 에이전트 워크플로를 위한 간소화된 API를 제공합니다. 이제는 Genkit Go를 사용하여 Go의 속도와 안전성, 신뢰성을 바탕으로 프로덕션 환경에서 바로 사용할 수 있는 AI 애플리케이션을 개발하고 배포할 수 있습니다.

TL;DR

Genkit Go, 안정화 단계 진입 및 프로덕션 준비 완료!

주요 특징:

  • Go 구조체와 JSON 스키마 검증을 통한 타입 안전 AI 흐름
  • Google AI, Vertex AI, OpenAI, Ollama 등을 지원하는 통합 모델 인터페이스
  • 도구 호출, RAG 및 멀티모달 지원
  • 독립 실행형 CLI 바이너리 및 개발자 UI가 있는 풍부한 로컬 개발 도구
  • Gemini CLI와 같은 도구를 위해 genkit init:ai-tools 명령어를 통한 AI 코딩 어시스턴트 통합

코딩을 시작할 준비가 되셨나요? 시작하기 가이드를 확인하세요.

Genkit Go 1.0의 새로운 기능

프로덕션 준비 완료

Genkit Go 1.0은 Go에서 AI 기반 애플리케이션을 개발할 수 있도록 안정적이고 신뢰할 수 있는 기반을 제공하겠다는 저희의 약속을 나타냅니다. 이번 버전을 통해 API가 안정적이고 충분히 검증되었다는 확신을 기반으로 하여 Genkit을 사용해 AI 기반 애플리케이션을 프로덕션 환경에 배포할 수 있습니다.

Go 자체와 마찬가지로, Genkit 1.*로 작성된 프로그램은 향후 Genkit의 '포인트' 버전(Genkit 1.1, Genkit 1.2 등)이 출시되더라도 변경 없이 계속해서 올바르게 컴파일 및 실행되도록 설계되었습니다.

타입 안전 AI 흐름

Genkit의 가장 강력한 특징 중 하나는 흐름으로, 관측 가능성과 간편한 테스트, 단순화된 배포 방법을 제시하는 AI 사용 사례를 위한 기능입니다. 구조화된 레시피를 생성하기 위해 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"
)
 
// Define your data structures
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()
 
    // Initialize Genkit with plugins
    g := genkit.Init(ctx,
        genkit.WithPlugins(&googlegenai.GoogleAI{}),
        genkit.WithDefaultModel("googleai/gemini-2.5-flash"),
    )
 
    // Define a type-safe flow
    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)
 
            // Generate structured data with type safety
            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
        })
 
    // Run the flow
    recipe, err := recipeFlow.Run(ctx, &RecipeInput{
        Ingredient:          "avocado",
        DietaryRestrictions: "vegetarian",
    })
    if err != nil {
        log.Fatalf("could not generate recipe: %v", err)
    }
 
    // Print the structured recipe
    recipeJSON, _ := json.MarshalIndent(recipe, "", "  ")
    fmt.Println("Sample recipe generated:")
    fmt.Println(string(recipeJSON))
 
    <-ctx.Done() // Used for local testing only
}
Go

통합 모델 인터페이스

Genkit Go는 Google AI, Vertex AI, OpenAI, Anthropic, Ollama를 비롯한 여러 AI 모델 공급자와 협력할 수 있도록 일관된 단일 인터페이스를 제공합니다. 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?"),
)
Go

도구 호출

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),
)
Go

간편한 배포

최소한의 설정으로 흐름을 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))
Go

풍부한 개발자 도구 제공

Genkit Go는 AI 애플리케이션을 빠르고 직관적으로 개발할 수 있도록 설계된 포괄적인 개발 도구 세트와 함께 제공합니다. 전체 로컬 툴체인은 Go 개발 워크플로와 원활하게 작동하는 단일 CLI를 통해 사용할 수 있습니다.

독립 실행형 CLI 설치

독립 실행형 CLI 바이너리로 빠르게 시작하세요. 다른 런타임 설치가 필요하지 않습니다.

MacOS 및 Linux의 경우:

curl -sL cli.genkit.dev | bash
Shell

Windows의 경우: cli.genkit.dev에서 직접 다운로드하세요.

CLI는 지원되는 모든 언어(자바스크립트, Go, Python)의 Genkit 애플리케이션에서 작동하며, 흐름 실행 및 평가처럼 빠르게 테스트하고 반복할 수 있도록 몇 가지 편리한 명령어를 제공합니다.

대화형 개발자 UI

개발자 UI는 AI 애플리케이션을 테스트하고 디버깅하기 위한 시각적 인터페이스를 제공합니다.

  • 대화식으로 흐름 테스트: 다양한 입력으로 흐름을 실행하고 깔끔하게 렌더링된 결과 확인
  • 상세한 추적을 통한 디버그: AI 흐름이 단계적으로 수행하는 작업을 정확하게 시각화
  • 성능 모니터링: 지연 시간과 토큰 사용량 및 비용 추적
  • 프롬프트 실험: 다양한 프롬프트 및 모델 구성 테스트

CLI를 통해 Go 애플리케이션과 함께 개발자 UI를 실행합니다.

genkit start -- go run .
Shell

앞서 언급한 recipeGenerator 흐름을 실행 및 검사할 때 실행 화면은 다음과 같습니다.

genkit init:ai-tools 소개

또한 개발 중에 AI 어시스턴트와 작업하는 방식을 혁신할 genkit init:ai-tools 명령어를 소개하게 되어 기쁩니다. 자바스크립트 및 Go 개발자가 모두 사용할 수 있는 이 기능은 인기 있는 AI 코딩 어시스턴트가 Genkit 프레임워크 및 도구 환경과 원활하게 작동하도록 자동으로 구성합니다. Genkit의 AI 지원 개발에 대해 자세히 알아보세요.

이 기능을 사용하려면 Genkit CLI를 설치하고 다음을 실행하세요.

genkit init:ai-tools
Shell

명령어를 실행하면 다음이 수행됩니다.

  1. 기존 AI 어시스턴트 구성 감지 및 현재 설정 유지
  2. 강력한 개발 도구로 Genkit MCP 서버 설치
    • lookup_genkit_docs: genkit.dev에서 Genkit 설명서 검색
    • list_flows: 현재 Genkit 앱의 모든 흐름 나열
    • run_flow: 테스트 입력으로 흐름 실행
    • get_trace: 디버깅 및 분석을 위한 실행 추적 가져오기
  1. AI 어시스턴트를 위한 포괄적인 언어별 지침이 포함된 GENKIT.md 파일 생성.

지원되는 AI 도구

이 명령어에는 다음을 위한 지원이 기본 제공됩니다.

  • Gemini CLI - Google의 CLI 기반 AI 코딩 어시스턴트
  • Firebase Studio - Firebase의 에이전트 방식의 클라우드 기반 개발 환경
  • Claude Code - Anthropic의 코딩 어시스턴트
  • Cursor - AI 기반 코드 편집기

다른 도구의 경우, 'generic' 옵션을 선택하여 수동으로 통합할 수 있는 GENKIT.md 파일을 가져올 수 있습니다.

향상된 개발 환경

AI 어시스턴트 통합으로 다음을 수행할 수 있습니다.

  • Genkit Go API에 대해 질문하고 정확한 최신 정보를 반영한 답변 받기
  • 권장사항을 따르는 Go 전용 Genkit 코드 생성
  • AI 어시스턴트가 추적을 분석하도록 하여 흐름 디버그
  • AI 생성 입력으로 애플리케이션 테스트
  • Go에 특화된 패턴 및 관용적 코드에 대한 도움말 얻기

빠른 시작

1. 새 프로젝트 생성

mkdir my-genkit-app && cd my-genkit-app
go mod init example/my-genkit-app
Shell

2. Genkit 및 CLI 설치

go get github.com/firebase/genkit/go
curl -sL cli.genkit.dev | bash
Shell

3. AI 어시스턴트 통합 설정

genkit init:ai-tools
Shell

4. 위의 예시를 사용하여 첫 번째 흐름 생성

5. 개발자 UI 시작

genkit start -- go run .
Shell

더 자세한 내용을 둘러보려면 시작하기 가이드를 참조하세요.

자세히 알아보기

Genkit Go 1.0은 Go의 성능과 신뢰성을 Genkit의 프로덕션 준비 완료된 AI 프레임워크 및 도구 환경과 결합합니다. 여러분이 개발할 결과물이 정말 기대됩니다!

즐겁게 코딩하세요! 🚀