Плагин Vertex AI

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

Требования

Если вы хотите локально запускать потоки, использующие этот плагин, вам необходимо установить инструмент Google Cloud CLI .

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

Чтобы использовать этот плагин, импортируйте пакет vertexai и вызовите vertexai.Init() :

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

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

  • По умолчанию vertexai.Init() получает идентификатор вашего проекта Google Cloud из переменной среды GCLOUD_PROJECT .

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

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
      return err
    }
    
  • По умолчанию vertexai.Init() получает местоположение Vertex AI API из переменной среды GCLOUD_LOCATION .

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

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
      return err
    }
    
  • Чтобы предоставить учетные данные 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.

Применение

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

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

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

Поддерживаются следующие модели: gemini-1.0-pro , gemini-1.5-pro и gemini-1.5-flash .

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

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

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

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

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

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

Поддерживаются следующие модели: textembedding-gecko@003 , textembedding-gecko@002 , textembedding-gecko@001 , text-embedding-004 , textembedding-gecko-multilingual@001 , text-multilingual-embedding-002 и multimodalembedding .

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

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

Вы также можете передать Embedder методу Index() индексатора и методу 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
}

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