Go를 사용하여 Genkit 시작하기 (알파)

이제 Go용 Firebase Genkit 라이브러리가 미리보기로 제공됩니다. 왜냐하면 Go 라이브러리는 현재 알파 버전이므로 개발이 진행되고 있습니다. 따라서 프로토타입 제작 및 개발에만 탐색 분석

라이브러리 또는 이 문서에서 문제를 발견하면 신고해 주세요. GitHub 저장소에서 확인할 수 있습니다.

Genkit를 시작하려면 Genkit CLI를 설치하고 다음을 실행합니다. Go 프로젝트의 genkit init 이 페이지의 나머지 부분에서 방법을 확인하시기 바랍니다.

요구사항

  • Go 1.22 이상

  • Node.js 20 이상 (Genkit CLI 및 UI용)

    권장사항: nvmnvm-windows 도구는 특정 버전의 Node.js를 설치할 수 있는 편리한 방법입니다. 설치해야 합니다 이러한 도구는 사용자별로 노드를 설치하므로 시스템 전체에 적용할 필요가 없습니다.

    macOS 또는 Linux와 같은 Unix 계열 시스템에 nvm를 설치하려면 다음을 실행합니다. 명령어:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    

    그런 다음 nvm를 사용하여 노드를 설치하려면 새 셸을 열고 다음을 실행합니다. 명령어:

    nvm install 20
    

절차

  1. 다음 명령어를 실행하여 Genkit CLI를 설치합니다.

    npm i -g genkit
    

    이 명령어는 Genkit CLI를 노드 설치 디렉터리에 설치합니다. 노드 프로젝트 외부에서 사용할 수 있습니다.

  2. 새 프로젝트 디렉터리를 만듭니다.

    mkdir genkit-intro && cd genkit-intro
    
  3. Genkit 프로젝트를 초기화합니다.

    genkit init
    
    1. Go을 런타임 환경으로 선택합니다.

    2. 모델 선택:

      Gemini (Google AI)

      가장 간단하게 시작하는 방법은 Google AI Gemini API를 사용하는 것입니다. 입니다 거주 지역에서 사용할 수 있습니다.

      API 키를 생성합니다. Gemini API를 사용하는 방법을 알아봅니다 그런 다음 GOOGLE_GENAI_API_KEY를 설정합니다. 환경 변수를 키에 추가합니다.

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      거주 지역에서 Google AI Gemini API를 사용할 수 없는 경우 다음 사항을 고려해 보세요. Gemini 및 기타 모델도 제공하는 Vertex AI API를 사용합니다. 나 결제가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다. Platform API를 실행하고 몇 가지 추가 환경 변수를 설정합니다.

      gcloud services enable aiplatform.googleapis.com
      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      

      Vertex AI 가격 책정을 참조하세요.

    3. 모듈 이름으로 아무거나 지정합니다. 예: example/genkit-intro

    4. 나머지 질문에 대한 기본 답변을 선택하면 샘플 코드로 프로젝트 폴더를 초기화합니다.

    genkit init 명령어는 샘플 Go 모듈을 만들고 필수 종속 항목이 포함됩니다 main.go 파일에는 단일 흐름이 포함되어 있습니다. menuSuggestionFlow - LLM이 특정 항목에 대한 항목을 제안하도록 찾을 수 있습니다.

    이 파일은 다음과 같이 표시됩니다 (플러그인 구성 단계). Vertex AI를 선택한 경우 다르게 보일 수 있음).

    package main
    
    import (
        "context"
        "errors"
        "fmt"
        "log"
    
        // Import Genkit and the Google AI plugin
        "github.com/firebase/genkit/go/ai"
        "github.com/firebase/genkit/go/genkit"
        "github.com/firebase/genkit/go/plugins/googleai"
    )
    
    func main() {
        ctx := context.Background()
    
        // Initialize the Google AI plugin. When you pass nil for the
        // Config parameter, the Google AI plugin will get the API key from the
        // GOOGLE_GENAI_API_KEY environment variable, which is the recommended
        // practice.
        if err := googleai.Init(ctx, nil); err != nil {
            log.Fatal(err)
        }
    
        // Define a simple flow that prompts an LLM to generate menu suggestions.
        genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
            // The Google AI API provides access to several generative models. Here,
            // we specify gemini-1.5-flash.
            m := googleai.Model("gemini-1.5-flash")
            if m == nil {
                return "", errors.New("menuSuggestionFlow: failed to find model")
            }
    
            // Construct a request and send it to the 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
            }
    
            // Handle the response from the model API. In this sample, we just
            // convert it to a string. but more complicated flows might coerce the
            // response into structured output or chain the response into another
            // LLM call.
            text, err := resp.Text()
            if err != nil {
                return "", fmt.Errorf("menuSuggestionFlow: %v", err)
            }
            return text, nil
        })
    
        // Initialize Genkit and start a flow server. This call must come last,
        // after all of your plug-in configuration and flow definitions. When you
        // pass a nil configuration to Init, Genkit starts a local flow server,
        // which you can interact with using the developer UI.
        if err := genkit.Init(ctx, nil); err != nil {
            log.Fatal(err)
        }
    }
    

    Genkit를 사용해 앱의 AI 기능을 빌드하면서 더 정교한 입력 전처리와 같은 여러 단계가 있는 데이터 흐름 프롬프트 구성, 조직의 외부 정보 소스 통합, 검색 증강 생성 (RAG) 등의 기술을 사용할 수 있습니다.

  4. 이제 로컬에서 Genkit 기능과 샘플 프로젝트를 실행하고 살펴볼 수 있습니다. 있습니다. Genkit 개발자 UI를 다운로드하여 시작합니다.

    genkit start
    

    환영합니다
Genkit 개발자 UI

    이제 Genkit 개발자 UI가 컴퓨터에서 실행됩니다. 모델을 실행할 때는 또는 플로우를 기반으로 하는 경우 머신은 오케스트레이션 작업을 흐름의 단계가 함께 작동하도록 하는 데 필요한 외부 IP 주소 Gemini API와 같은 서비스는 계속해서 라이브 스트리밍 있습니다

    또한 개발 환경에 있으므로 Genkit는 트레이스를 저장하고 로컬 파일의 흐름 상태에 따라 다릅니다

  5. 다음을 실행하면 Genkit 개발자 UI가 자동으로 다운로드되고 열립니다. genkit start 명령어.

    개발자 UI를 사용하면 정의한 흐름과 모델링된 흐름을 볼 수 있습니다. 실행하고, 실행하고, 이전 실행의 트레이스를 검사할 수 있습니다. 사용해 보기 다음과 같습니다.

    • Run 탭에 있는 모든 흐름의 목록이 표시됩니다. 플러그인에서 구성한 모든 모델에서 사용할 수 있습니다.

      menuSuggestionFlow를 클릭하고 입력 텍스트( 예: "cat"). 모든 것이 순조롭게 진행되면 제안입니다.

    • Inspect 탭에 흐름 실행 기록이 표시됩니다. 각 흐름에 전달된 매개변수와 한 걸음 더 나갔습니다