Google Üretken Yapay Zeka eklentisi

Google Üretken Yapay Zeka eklentisi, Google'ın Gemini modellerine arayüz sağlar Gemini API aracılığıyla iletişim kurabilirsiniz.

Yapılandırma

Bu eklentiyi kullanmak için googleai paketini içe aktarın ve googleai.Init() çağrısı yapın:

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

Eklenti, Gemini API için şu API'den alabileceğiniz bir API anahtarı gerektirir: Google AI Studio.

Aşağıdakilerden birini yaparak eklentiyi, API anahtarınızı kullanacak şekilde yapılandırın:

  • GOOGLE_GENAI_API_KEY ortam değişkenini API anahtarınıza ayarlayın.

  • Eklentiyi başlatırken API anahtarını belirtin:

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

    Ancak API anahtarınızı doğrudan koda yerleştirmeyin. Yalnızca bu özelliği kullan Google Cloud Secret Manager gibi bir hizmetle birlikte kullanılabilir.

Kullanım

Üretici modeller

Desteklenen bir modele referans almak için tanımlayıcıyı belirtin:

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

Şu modeller desteklenir: gemini-1.0-pro, gemini-1.5-pro ve gemini-1.5-flash.

Model referansları, Google AI API'yi çağıran bir Generate() yöntemine sahiptir:

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

Daha fazla bilgi için İçerik oluşturma bölümüne bakın.

Modelleri yerleştirme

Desteklenen bir yerleştirme modeline referans almak için tanımlayıcısını belirtin:

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

Şu modeller desteklenir: text-embedding-004 ve embedding-001.

Yerleştirme referansları, Google AI API'yi çağıran bir Embed() yöntemine sahiptir:

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

Bir Yerleştirme aracını, dizinleyicinin Index() yöntemine ve bir retriever'ın yöntemine de iletebilirsiniz. Retrieve() yöntemi:

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
}

Daha fazla bilgi için Almayla artırılmış oluşturma (RAG) bölümüne bakın.