Memulai Genkit menggunakan Go (alfa)

Library Firebase Genkit untuk Go kini tersedia untuk pratinjau. Karena Library Go saat ini dalam versi Alfa, Anda mungkin melihat perubahan API dan fungsi sebagai kemajuan pengembangan mereka. Sebaiknya gunakan hanya untuk pembuatan prototipe dan sebagian besar eksplorasi ide yang saya lakukan.

Jika Anda menemukan masalah terkait library atau dokumentasi ini, laporkan di repositori GitHub kita.

Untuk mulai menggunakan Genkit, instal Genkit CLI dan jalankan genkit init dalam project Go. Bagian selanjutnya dari halaman ini akan menunjukkan caranya.

Persyaratan

  • Go versi 1.22 atau yang lebih baru

  • Node.js 20 atau yang lebih baru (untuk Genkit CLI dan UI)

    Rekomendasi: nvm dan Alat nvm-windows adalah cara mudah untuk menginstal versi {i> node<i} tertentu jika belum yang diinstal di sistem Anda. Alat-alat ini menginstal Node per pengguna, sehingga Anda tidak perlu membuat perubahan di seluruh sistem.

    Untuk menginstal nvm di sistem yang mirip Unix, seperti macOS atau Linux, jalankan perintah berikut berikut:

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

    Kemudian, untuk menginstal Node menggunakan nvm, buka shell baru dan jalankan perintah berikut berikut:

    nvm install 20
    

Prosedur

  1. Instal Genkit CLI dengan menjalankan perintah berikut:

    npm i -g genkit
    

    Perintah ini menginstal Genkit CLI ke direktori penginstalan Node Anda sehingga dapat digunakan di luar project Node.

  2. Buat direktori project baru:

    mkdir genkit-intro && cd genkit-intro
    
  3. Lakukan inisialisasi project Genkit:

    genkit init
    
    1. Pilih Go sebagai lingkungan runtime.

    2. Pilih model Anda:

      Gemini (AI Google)

      Cara termudah untuk memulai adalah menggunakan Gemini API AI Google. Pastikan ini tersedia di wilayah Anda.

      Membuat kunci API untuk Gemini API menggunakan Google AI Studio. Lalu, setel GOOGLE_GENAI_API_KEY variabel lingkungan ke kunci Anda:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      Jika Gemini API AI Google tidak tersedia di wilayah Anda, pertimbangkan menggunakan Vertex AI API yang juga menawarkan Gemini dan model lainnya. Anda harus memiliki project Google Cloud yang mendukung penagihan, mengaktifkan AI Platform API, lalu tetapkan beberapa variabel lingkungan tambahan:

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

      Lihat harga Vertex AI.

    3. Tentukan apa pun untuk nama modul. Contoh: example/genkit-intro

    4. Pilih jawaban default untuk pertanyaan lainnya, yang akan melakukan inisialisasi folder project Anda dengan beberapa kode contoh.

    Perintah genkit init membuat contoh modul Go dan menginstal dependensi yang diperlukan. File main.go berisi satu alur, menuSuggestionFlow, yang meminta LLM menyarankan item untuk restoran dengan tema tertentu.

    File ini terlihat seperti berikut (langkah-langkah konfigurasi plugin akan mungkin akan terlihat berbeda jika Anda memilih 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)
        }
    }
    

    Saat membangun fitur AI aplikasi dengan Genkit, Anda mungkin akan membuat dengan beberapa langkah, seperti pra-pemrosesan input, prompt, mengintegrasikan sumber informasi eksternal Retrieval-augmented Generation (RAG), dan lainnya.

  4. Sekarang Anda dapat menjalankan dan menjelajahi fitur Genkit serta project contoh secara lokal di komputer Anda. Download dan mulai UI Developer Genkit:

    genkit start
    

    Selamat datang di
UI Developer Genkit

    UI Developer Genkit kini berjalan di komputer Anda. Saat Anda menjalankan model atau alur di langkah berikutnya, mesin Anda akan melakukan tugas orkestrasi yang diperlukan untuk membuat langkah-langkah dari alur Anda bekerja sama; panggilan ke eksternal layanan seperti Gemini API akan terus dilakukan terhadap server web.

    Selain itu, karena Anda berada di lingkungan pengembangan, Genkit akan menyimpan trace dan status flow di file lokal.

  5. UI Developer Genkit akan didownload dan terbuka secara otomatis saat Anda menjalankan Perintah genkit start.

    UI Developer memungkinkan Anda melihat alur mana yang telah ditentukan dan memodelkan Anda mengonfigurasi, menjalankannya, dan memeriksa rekaman aktivitas operasi sebelumnya. Cobalah beberapa fitur berikut:

    • Pada tab Run, Anda akan melihat daftar semua alur yang Anda miliki ditentukan dan model apa pun yang telah dikonfigurasi oleh plugin.

      Klik menuSuggestionFlow lalu coba jalankan dengan beberapa teks input (untuk contoh, "cat"). Jika semua berjalan lancar, Anda akan diberi hadiah saran untuk restoran bertema kucing.

    • Pada tab Inspect, Anda akan melihat histori eksekusi flow. Untuk setiap , Anda dapat melihat parameter yang diteruskan ke flow dan trace dari setiap langkah saat mereka berjalan.