Плагин Google Generative AI

Плагин Google Generative AI предоставляет интерфейсы к моделям Google Gemini через Gemini API или Gemini API в Vertex AI .

Конфигурация

Конфигурация зависит от того, какого провайдера вы выберете:

Google ИИ

Чтобы использовать этот плагин, импортируйте пакет googlegenai и передайте googlegenai.GoogleAI в WithPlugins() в инициализаторе Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))

Плагину требуется API-ключ для Gemini API, который вы можете получить в Google AI Studio .

Настройте плагин для использования вашего ключа API, выполнив одно из следующих действий:

  • Установите для переменной среды GEMINI_API_KEY свой ключ API.

  • Укажите ключ API при инициализации плагина:

    ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
    

    Однако не встраивайте ключ API непосредственно в код! Используйте эту функцию только в сочетании с такой службой, как Cloud Secret Manager или аналогичной.

Вертексный ИИ

Чтобы использовать этот плагин, импортируйте пакет googlegenai и передайте googlegenai.VertexAI в WithPlugins() в инициализаторе Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))

Плагин требует, чтобы вы указали идентификатор своего проекта Google Cloud, регион , к которому вы хотите отправлять запросы Vertex API, и учетные данные вашего проекта Google Cloud.

  • По умолчанию googlegenai.VertexAI получает идентификатор вашего проекта Google Cloud из переменной среды GOOGLE_CLOUD_PROJECT .

    Вы также можете передать это значение напрямую:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • По умолчанию googlegenai.VertexAI получает местоположение Vertex AI API из переменной среды GOOGLE_CLOUD_LOCATION .

    Вы также можете передать это значение напрямую:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • Чтобы предоставить учетные данные API, вам необходимо настроить учетные данные Google Cloud Application по умолчанию.

    1. Чтобы указать свои учетные данные:

      • Если вы запускаете поток из среды Google Cloud (Cloud Functions, Cloud Run и т. д.), это устанавливается автоматически.

      • В вашей локальной среде разработки сделайте это, запустив:

      gcloud auth application-default login
    2. Кроме того, убедитесь, что учетной записи предоставлена ​​роль IAM пользователя Vertex AI ( roles/aiplatform.user ). См. документацию по контролю доступа Vertex AI.

Использование

Генеративные модели

Чтобы получить ссылку на поддерживаемую модель, укажите ее идентификатор googlegenai.GoogleAIModel или googlgenai.VertexAIModel :

model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")

Альтернативно вы можете создать ModelRef , который связывает имя модели с ее конфигурацией:

modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
    Temperature: 0.5,
    MaxOutputTokens: 500,
    // Other configuration...
})

Поддерживаются следующие модели: gemini-1.5-pro , gemini-1.5-flash , gemini-2.0-pro , gemini-2.0-flash и другие экспериментальные модели.

Ссылки на модели имеют метод Generate() , который вызывает API Google:

resp, err := genkit.Generate(ctx, g, ai.WithModel(modelRef), ai.WithPrompt("Tell me a joke."))
if err != nil {
      return err
}

log.Println(resp.Text())

Дополнительную информацию см. в разделе «Создание контента с помощью моделей искусственного интеллекта» .

Встраивание моделей

Чтобы получить ссылку на поддерживаемую модель внедрения, укажите ее идентификатор googlegenai.GoogleAIEmbedder или googlgenai.VertexAIEmbedder :

embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")

Поддерживаются следующие модели:

  • Google ИИ

    text-embedding-004 и embedding-001

  • Вертексный ИИ

    textembedding-gecko@003 , textembedding-gecko@002 , textembedding-gecko@001 , text-embedding-004 , textembedding-gecko-multilingual@001 , text-multilingual-embedding-002 и multimodalembedding

Ссылки на Embedder имеют метод Embed() , который вызывает Google AI API:

resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
      return err
}

Вы также можете передать Embedder методу Index() индексатора и методу Retrieve() ретривера:

if err := ai.Index(ctx, myIndexer, ai.WithDocs(docsToIndex...)); err != nil {
      return err
}
resp, err := ai.Retrieve(ctx, myRetriever, ai.WithDocs(userInput))
if err != nil {
      return err
}

Дополнительную информацию см. в разделе Генерация с расширенным поиском (RAG) .