Google I/O에서 Node.js를 위한 Firebase Genkit을 출시한 후, Firebase 팀과 Go 팀은 Go 커뮤니티에 Genkit을 제공하기 위해 협력했습니다. 뛰어나다고 알려진 Go 언어의 단순성, 확장성, 보안을 활용하여 Go 고유의 방식으로 AI 기반 애플리케이션과 클라우드 서비스를 개발하기 위한 오픈소스 프레임워크인 Genkit for Go를 발표하게 되어 기쁩니다.
개발자는 Go의 성능과 동시 실행 이점을 Genkit의 라이브러리 및 도구와 결합하여 두 기술의 잠재력을 최대한 활용하는 생성형 AI 애플리케이션을 만들 수 있습니다. 몇 가지 가능한 사용 사례는 다음과 같습니다.
Genkit for Go는 현재 알파 버전으로 제공되므로 실험과 탐색 분석에 매우 적합합니다. AI 기반 프로젝트의 프로토타입을 만들고 의견을 공유해 주시기 바랍니다. 여러분의 의견을 Genkit for Go 로드맵에 바로 반영해 Go 개발자가 프로덕션 환경에서 바로 사용할 수 있고 확장 가능한 차세대 AI 애플리케이션을 개발할 수 있도록 지원하겠습니다.
Genkit는 AI 기반 애플리케이션 개발을 위한 개발자 우선 프레임워크입니다. 순수 Go로 작성된 Go 라이브러리는 Go 언어의 관용구와 규칙을 포괄하므로 Go 개발자가 곧바로 익숙하게 사용하면서 생산성을 발휘할 수 있습니다. Genkit는 사용자 지정 기능과 제어 기능을 희생하지 않고도 정교한 AI 워크플로 개발을 단순화하는 가볍고 구성 가능한 추상화를 제공합니다.
생성형 AI 애플리케이션 개발 시 Genkit로 생산성을 높이는 몇 가지 방법을 소개합니다.
func main() {
ctx := context.Background()
// Google AI 플러그인을 초기화합니다.
if err := googleai.Init(ctx, nil); err != nil {
log.Fatal(err)
}
// LLM이 메뉴 추천 항목을 생성하도록 요청하는 간단한 flow를 정의합니다.
// Flow는 Genkit 도구와 통합되고 다단계 워크플로에 대한
// 관측 가능성을 제공하는 기능입니다.
genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
// Google AI에서 gemini-1.5-flash 모델을 초기화합니다.
m := googleai.Model("gemini-1.5-flash")
if m == nil {
return "", errors.New("menuSuggestionFlow: failed to find model")
}
// 요청을 구성하여 모델 API(Google AI)로 보냅니다.
resp, err := m.Generate(ctx,
ai.NewGenerateRequest(
&ai.GenerationCommonConfig{Temperature: 1},
ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
nil)
if err != nil {
return "", err
}
// 모델 API의 응답을 처리합니다.
text, err := resp.Text()
if err != nil {
return "", fmt.Errorf("menuSuggestionFlow: %v", err)
}
return text, nil
})
// Genkit flow 서버를 초기화합니다.
if err := genkit.Init(ctx, nil); err != nil {
log.Fatal(err)
}
}
최고의 AI 생성 결과를 달성하려면 모델, 구성, 프롬프트, 출력 형태를 신중하게 고려해야 합니다. Genkit는 프롬프트 엔지니어링 프로세스를 간소화하는 간단한 파일 형식인 Dotprompt를 제공합니다.
Dotprompt를 사용하면 단일 .prompt
파일 내에서 다채로운 프롬프트 템플릿, 입출력 스키마, 모델 선택 및 모델 구성 옵션을 모두 정의할 수 있습니다. 덕분에 모든 것을 체계적으로 정리할 수 있으므로 Go 코드와 함께 프롬프트의 테스트, 버전 관리, 배포를 수월하게 수행할 수 있습니다.
---
model: vertexai/gemini-1.5-pro
config:
temperature: 0.9
input:
schema:
location: string
style?: string
name?: string
default:
location: a restaurant
---
귀하는 세계에서 가장 친절한 AI 비서이며 현재 {{location}}에서 근무 중입니다.
{{style}}{{/if}} 스타일로 이름이 {{name}}{{/if}}{{#if style}}인 {{#if name}} 게스트를 맞이하세요.
Genkit for Go의 핵심은 공급자에 구애받지 않는 가벼운 프레임워크입니다. Google은 Google 및 타사 공급자의 특정 모델, 벡터 데이터베이스, 클라우드 서비스와 원활하게 통합할 수 있도록 다양한 플러그인을 제공하며 이러한 플러그인의 규모는 점점 커지고 있습니다.
이번 버전에서는 Genkit for Go가 다음 플러그인을 제공합니다.
Genkit의 플러그인 시스템은 모든 모델, 벡터 데이터베이스, 평가 프로그램, 도구 등에 개방적이고 확장 가능하도록 설계되었습니다. 커뮤니티에서 자체 플러그인을 게시하여 Genkit의 생태계에 공헌해 주실 것을 적극 권장합니다.
곧 Google 설명서에 Genkit for Go 플러그인 개발 가이드를 추가할 예정이니 기대해 주세요!
AI 기반 앱 개발에는 효과적인 프롬프트 작성, 예측 불가능한 출력 디버깅, 검색 프로세스 최적화 등의 고유한 과제가 수반됩니다. 일반적인 IDE 유틸리티를 뛰어넘는 전용 도구 세트를 통해 이러한 복잡성을 효과적으로 다룰 수 있다고 생각합니다.
Genkit의 CLI와 직관적인 브라우저 기반 개발자 UI는 간편하게 생성형 AI를 개발할 수 있는 강력한 툴킷을 제공합니다.
이러한 도구로 다음을 수행할 수 있습니다.
VS Code 또는 Project IDX 내에서 작업하고 싶다면 IDE의 통합 브라우저에서 Genkit 개발자 UI를 열고 코드와 나란히 사용할 수 있습니다.
배포할 준비가 되면 Genkit는 프로덕션 환경에서 AI 기반 애플리케이션을 모니터링하여 사용자에게 예상대로 제공되는지 확인하는 데 도움을 줍니다. Genkit의 Google Cloud 원격 분석 플러그인을 사용하면 AI 기반 앱에서 Google Cloud의 운영 제품군으로 로그, 측정항목, 트레이스를 쉽게 내보낼 수 있습니다.
Google은 Google Cloud 통합을 즉시 제공하는 한편, 널리 사용되는 OpenTelemetry 표준을 통해 Genkit의 계측을 구현했습니다. 이 표준은 인기 있는 많은 관측 가능성 플랫폼과 통합될 수 있습니다.
현재 알파 버전으로 제공되는 Genkit for Go를 사용하여 AI 워크플로를 애플리케이션에 통합하고 성장하는 Go AI 개발자 커뮤니티에 참여할 수 있습니다.
시작하려면 Genkit for Go 시작하기 가이드를 확인해 보세요.
IDX의 사전 구성된 작업공간에서 Genkit 템플릿을 열 수도 있습니다.
여러분과의 협력을 간절히 원합니다!
함께 Go에서 AI의 발전을 위해 번창하는 생태계를 구축해 봅시다. Genkit로 무엇을 개발하실지 정말 기대됩니다!