Pierwsze kroki z Genkit w Go (alfa)

Biblioteki Genkit dla Go są teraz dostępne w wersji testowej. Biblioteki Go są obecnie w wersji alfa, więc w miarę rozwoju mogą ulegać zmianom w interfejsie API i funkcjonalności. Zalecamy używanie go tylko do tworzenia prototypów i eksploracji.

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

Aby rozpocząć korzystanie z Genkit, zainstaluj Genkit CLI i uruchomgenkit init w projekcie Go. W dalszej części tej strony znajdziesz instrukcje.

Wymagania

  • Go w wersji 1.22 lub nowszej. Więcej informacji znajdziesz w artykule Pobieranie i instalowanie w oficjalnych dokumentach Go.

  • Node.js w wersji 20 lub nowszej (w przypadku interfejsu wiersza poleceń i interfejsu użytkownika Genkit). W następnej sekcji znajdziesz krótki przewodnik po instalacji Node.

Instalowanie Genkit

  1. Jeśli nie masz jeszcze w systemie Node 20 lub nowszej wersji, zainstaluj ją teraz.

    Rekomendacja: narzędzia nvm i nvm-windows to wygodny sposób na zainstalowanie określonych wersji Node, jeśli nie są one jeszcze zainstalowane w Twoim systemie. Te narzędzia instalują Node na poziomie użytkownika, więc nie musisz wprowadzać zmian w całym systemie.

    Aby zainstalować nvm:

    Uruchom to polecenie:

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

    Pobierz i uruchom instalator zgodnie z opisem w dokumentacji nvm-windows.

    Następnie, aby zainstalować Node i npm, otwórz nową powłokę i uruchom to polecenie:

    nvm install 20
  2. Zainstaluj interfejs wiersza poleceń Genkit, uruchamiając to polecenie:

    npm i -g genkit

    To polecenie instaluje Genkit CLI w katalogu instalacji Node, aby można było go używać poza projektem Node.

Tworzenie i poznawanie przykładowego projektu

  1. Utwórz nowy katalog projektu:

    mkdir genkit-intro && cd genkit-intro
  2. Inicjowanie projektu Genkit:

    genkit init
    1. Jako środowisko wykonawcze wybierz Go.

    2. Wybierz model:

      Najprostszym sposobem na rozpoczęcie jest skorzystanie z interfejsu Gemini API od Google AI. Upewnij się, że ta usługa jest dostępna w Twoim regionie.

      Wygeneruj klucz API do interfejsu Gemini API za pomocą Google AI Studio. Następnie ustaw zmienną środowiskową GOOGLE_GENAI_API_KEY na swój klucz:

      export GOOGLE_GENAI_API_KEY=<your API key>

      Jeśli interfejs Google AI Gemini API jest niedostępny w Twoim regionie, rozważ użycie interfejsu Vertex AI API, który również oferuje modele Gemini i inne. Musisz mieć projekt Google Cloud z włączonymi płatnościami, włączyć interfejs AI Platform API i ustawić dodatkowe zmienne środowiskowe:

      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, aby zainicjować folder projektu za pomocą przykładowego kodu.

    Polecenie genkit init tworzy przykładowy moduł Go i instaluje wymagane zależności. Plik main.go zawiera pojedynczy przepływ menuSuggestionFlow, który powoduje, że model LLM sugeruje produkt dla restauracji o określonym temacie.

    Ten plik wygląda mniej więcej tak (jeśli wybierzesz Vertex AI, kroki konfiguracji wtyczki mogą wyglądać inaczej):

    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/googlegenai"
    )
    
    func main() {
    	ctx := context.Background()
    
    	// Initialize Genkit with 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.
    	g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}))
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	// Define a simple flow that prompts an LLM to generate menu suggestions.
    	genkit.DefineFlow(g, "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 := googlegenai.GoogleAIModel(g, "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 := genkit.Generate(ctx, g,
    			ai.WithModel(m),
    			ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}),
    			ai.WithPromptText(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input)))
    		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 := resp.Text()
    		return text, nil
    	})
    
    	<-ctx.Done()
    }
    
    

    Podczas tworzenia funkcji AI w aplikacji za pomocą Genkit prawdopodobnie utworzysz przepływy z wieloma krokami, np. wstępną obróbkę danych wejściowych, bardziej zaawansowane tworzenie promptów, integrację zewnętrznych źródeł informacji na potrzeby generowania wspomaganego wyszukiwaniem (RAG) i inne.

  3. Teraz możesz uruchomić i przetestować funkcje Genkit oraz przykładowy projekt lokalnie na swoim komputerze. Pobierz i uruchom interfejs dla deweloperów Genkit:

    genkit start

    Witamy w interfejsie Genkit dla deweloperów

    Na Twoim komputerze działa teraz interfejs Genkit dla deweloperów. Gdy w następnym kroku uruchomisz modele lub przepływy, maszyna wykona zadania orkiestracji, aby umożliwić współpracę poszczególnych kroków przepływu. Wywołania usług zewnętrznych, takich jak interfejs Gemini API, będą nadal kierowane do serwerów produkcyjnych.

    Ponieważ jesteś w środowisku programistycznym, Genkit będzie przechowywać ślady i stan przepływu w plikach lokalnych.

  4. Gdy uruchomisz polecenie genkit start, interfejs Genkit dla deweloperów zostanie pobrany i otwarty automatycznie.

    Interfejs dla deweloperów umożliwia wyświetlanie zdefiniowanych przepływów i skonfigurowanych modeli, ich uruchamianie oraz analizowanie śladów poprzednich uruchomień. Wypróbuj te funkcje:

    • Na karcie Uruchom znajdziesz listę wszystkich zdefiniowanych przez Ciebie przepływów oraz wszystkie modele skonfigurowane przez wtyczki.

      Kliknij menuSuggestionFlow i spróbuj uruchomić tę funkcję z tekstem wejściowym (np. "cat"). Jeśli wszystko pójdzie dobrze, otrzymasz sugestię menu dla restauracji z motywem kotów.

    • Na karcie Sprawdź znajdziesz historię wykonywania przepływu. W przypadku każdego przepływu możesz zobaczyć parametry przekazane do przepływu oraz ślad każdego kroku podczas jego wykonywania.