Pierwsze kroki z Genkit w Go (alfa)

Możesz już korzystać z biblioteki Firebase Genkit w Go. Ponieważ Biblioteki Go są obecnie w wersji alfa. Możesz zauważyć zmiany w interfejsach API i funkcjonalności, postęp prac nad rozwojem. Zalecamy korzystanie z niego tylko do prototypowania. do eksploracji.

Jeśli zauważysz problemy z bibliotekami lub tą dokumentacją, zgłoś je znajdziesz je w naszym repozytorium GitHub.

Aby zacząć korzystać z Genkit, zainstaluj interfejs wiersza poleceń Genkit i uruchom genkit init w projekcie Go. Instrukcje znajdziesz w dalszej części tej strony.

Wymagania

  • Go w wersji 1.22 lub nowszej

  • Node.js w wersji 20 lub nowszej (dla interfejsu wiersza poleceń i interfejsu Genkit)

    Zalecenia: nvm i Narzędzia nvm-windows to wygodny sposób na zainstalowanie określonych wersji środowiska Node, jeśli jeszcze nie jest dostępne zainstalowanego w systemie. Te narzędzia instalują Node dla poszczególnych użytkowników, dzięki czemu nie wymagają wprowadzania zmian w całym systemie.

    Aby zainstalować nvm w systemie typu Unix, takim jak macOS lub Linux, uruchom to polecenie:

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

    Następnie, aby zainstalować węzeł za pomocą nvm, otwórz nową powłokę i uruchom to polecenie polecenie:

    nvm install 20
    

Procedura

  1. Zainstaluj interfejs wiersza poleceń Genkit, uruchamiając to polecenie:

    npm i -g genkit
    

    To polecenie instaluje interfejs wiersza poleceń Genkit w katalogu instalacyjnym węzła z którego można korzystać poza projektem Node.

  2. Utwórz nowy katalog projektu:

    mkdir genkit-intro && cd genkit-intro
    
  3. Zainicjuj projekt Genkit:

    genkit init
    
    1. Wybierz Go jako środowisko wykonawcze.

    2. Wybierz model:

      Gemini (AI od Google)

      Najprostszym sposobem, aby zacząć, jest korzystanie z interfejsu Google AI Gemini API. Upewnij się, to dostępne w Twoim regionie.

      Wygeneruj klucz interfejsu API dla platformy Gemini API za pomocą Google AI Studio. Następnie ustaw GOOGLE_GENAI_API_KEY zmienną środowiskową do klucza:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      Jeśli interfejs Google AI Gemini API nie jest dostępny w Twoim regionie, rozważ za pomocą interfejsu Vertex AI API, który oferuje również Gemini i inne modele. Ty musi mieć projekt Google Cloud z włączonymi płatnościami, włączyć AI API platformy i ustaw kilka dodatkowych zmiennych środowiskowych:

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

      Zapoznaj się z cennikiem Vertex AI.

    3. Wpisz dowolną nazwę modułu. Na przykład: example/genkit-intro

    4. Wybierz domyślne odpowiedzi na pozostałe pytania, które zainicjować folder projektu przy użyciu przykładowego kodu.

    Polecenie genkit init tworzy przykładowy moduł Go i instaluje wymagane zależności. Plik main.go zawiera jeden proces, menuSuggestionFlow, co powoduje, że LLM zasugeruje element o określonej tematyce.

    Wygląda on mniej więcej tak (kroki konfiguracji wtyczki może wyglądać inaczej, jeśli wybrano 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)
        }
    }
    

    Tworząc funkcje AI w aplikacji w Genkit, prawdopodobnie z wieloma etapami, takimi jak wstępne przetwarzanie danych wejściowych, tworzenia promptów, integrowanie zewnętrznych źródeł informacji generowanie rozszerzone przez wyszukiwanie w zapisanych informacjach (RAG) itp.

  4. Teraz możesz uruchamiać i poznawać funkcje Genkit oraz przykładowy projekt lokalnie na komputerze. Pobierz i uruchom interfejs programisty Genkit:

    genkit start
    

    Witamy w
Interfejs programisty Genkit

    Interfejs dewelopera Genkit działa teraz na Twoim komputerze. Gdy uruchamiasz modele lub przepływów w następnym kroku, komputer wykona zadania administrowania które są niezbędne, aby kroki przepływu danych ze sobą współpracowały; połączenia z zewnętrznymi takie jak Gemini API będą nadal oparte na serwerów.

    Ponieważ pracujesz w środowisku programistycznym, Genkit przechowuje ślady stanu przepływu w plikach lokalnych.

  5. Interfejs programisty Genkit zostanie pobrany i otwarty automatycznie po uruchomieniu genkit start.

    Interfejs dewelopera pozwala zobaczyć zdefiniowane przepływy i modele skonfigurować je, uruchomić i zbadać ślady poprzednich uruchomień. Wypróbuj niektóre funkcje te funkcje:

    • Na karcie Uruchom zobaczysz listę wszystkich przepływów i modele skonfigurowane przez wtyczki.

      Kliknij menusuggestionFlow i spróbuj uruchomić je z tekstem do wprowadzania danych (na przykład: "cat"). Jeśli wszystko pójdzie dobrze, otrzymasz menu propozycji restauracji o kotach.

    • Na karcie Zbadaj zobaczysz historię wykonań przepływu. Dla każdej wartości możesz wyświetlić parametry przekazane do przepływu i ślad każdego etapu.