Plug-in da Vertex AI

O plug-in da Vertex AI fornece interfaces para vários modelos de IA generativa do Google usando a API Vertex AI.

Requisitos

Se você quiser executar localmente fluxos que usam esse plug-in, precisará da ferramenta CLI do Google Cloud instalada.

Configuração

Para usar esse plug-in, importe o pacote vertexai e chame vertexai.Init():

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

O plug-in exige que você especifique o ID do projeto do Google Cloud, o região para a qual você quer fazer solicitações da API Vertex, e seu projeto do Google Cloud credenciais.

  • Por padrão, vertexai.Init() busca o ID do projeto do Google Cloud da GCLOUD_PROJECT.

    Você também pode passar esse valor diretamente:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
      return err
    }
    
  • Por padrão, vertexai.Init() recebe o local da API Vertex AI do GCLOUD_LOCATION.

    Você também pode passar esse valor diretamente:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
      return err
    }
    
  • Para fornecer credenciais de API, você precisa configurar o aplicativo Google Cloud Default Credentials.

    1. Para especificar suas credenciais:

      • Se você estiver executando seu fluxo em um ambiente do Google Cloud (Cloud Functions, Cloud Run e outros), isso é definido automaticamente.

      • No ambiente de desenvolvimento local, faça isso executando o seguinte:

      gcloud auth application-default login
      
    2. Além disso, confirme se a conta recebeu o papel do IAM de usuário da Vertex AI (roles/aiplatform.user). Consulte o controle de acesso da Vertex AI documentos.

Uso

Modelos geradores

Para acessar uma referência a um modelo compatível, especifique o identificador dele:

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

Os seguintes modelos são compatíveis: gemini-1.0-pro, gemini-1.5-pro e gemini-1.5-flash

As referências de modelo têm um método Generate() que chama a API Vertex AI:

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

Consulte Como gerar conteúdo para mais informações.

Como incorporar modelos

Para acessar uma referência a um modelo de embedding compatível, especifique o identificador dele:

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

Os seguintes modelos são compatíveis: textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001 e text-embedding-004. textembedding-gecko-multilingual@001, text-multilingual-embedding-002 e multimodalembedding.

As referências do incorporador têm um método Embed() que chama a API Vertex AI:

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

Você também pode transmitir um incorporador ao método Index() de um indexador e ao método Método 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
}

Consulte Geração aumentada de recuperação (RAG, na sigla em inglês) para mais informações.