Plugin AI Generatif Google

Plugin AI Generatif Google menyediakan antarmuka ke model Gemini Google melalui Gemini API.

Konfigurasi

Untuk menggunakan plugin ini, impor paket googleai dan panggil googleai.Init():

import "github.com/firebase/genkit/go/plugins/googleai"
if err := googleai.Init(ctx, nil); err != nil {
    return err
}

Plugin ini memerlukan kunci API untuk Gemini API, yang dapat Anda peroleh dari Google AI Studio.

Konfigurasi plugin untuk menggunakan kunci API Anda dengan melakukan salah satu hal berikut:

  • Tetapkan variabel lingkungan GOOGLE_GENAI_API_KEY ke kunci API Anda.

  • Tentukan kunci API saat Anda menginisialisasi plugin:

    if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil {
      return err
    }
    

    Namun, jangan sematkan kunci API Anda secara langsung di dalam kode. Gunakan fitur ini saja bersama dengan layanan seperti Cloud Secret Manager atau yang serupa.

Penggunaan

Model generatif

Untuk mendapatkan referensi ke model yang didukung, tentukan ID-nya:

langModel := googleai.Model("gemini-1.5-pro")

Model berikut didukung: gemini-1.0-pro, gemini-1.5-pro, dan gemini-1.5-flash.

Referensi model memiliki metode Generate() yang memanggil Google AI API:

genRes, err := langModel.Generate(ctx, ai.NewGenerateRequest(
    nil, ai.NewUserTextMessage("Tell me a joke.")), nil)
if err != nil {
    return err
}

Lihat Membuat konten untuk informasi selengkapnya.

Model penyematan

Untuk mendapatkan referensi ke model penyematan yang didukung, tentukan ID-nya:

embeddingModel := googleai.Embedder("text-embedding-004")

Model berikut didukung: text-embedding-004 dan embedding-001.

Referensi penyemat memiliki metode Embed() yang memanggil Google AI API:

embedRes, err := embeddingModel.Embed(ctx, &ai.EmbedRequest{
    Documents: []*ai.Document{ai.DocumentFromText(userInput, nil)},
})
if err != nil {
    return err
}

Anda juga dapat meneruskan Embedder ke metode Index() pengindeks dan metode retriever Metode Retrieve():

if err := myIndexer.Index(ctx, &ai.IndexerRequest{Documents: docsToIndex}); err != nil {
    return err
}
retrieveRes, err := myRetriever.Retrieve(ctx, &ai.RetrieverRequest{
    Document: ai.DocumentFromText(userInput, nil),
})
if err != nil {
    return err
}

Lihat Retrieval-augmented generation (RAG) untuk mengetahui informasi selengkapnya.