Como parte da sua experiência de geração aumentada de recuperação (RAG, na sigla em inglês) no Vertex AI Agent Builder, você pode gerar respostas fundamentadas a comandos com base nas seguintes fontes de fundamentação:
- Pesquisa Google: use o Embasamento com a Pesquisa Google se você quiser conectar o modelo ao conhecimento mundial, a uma ampla variedade de tópicos ou a informações atualizadas na Internet. A integração com a Pesquisa Google oferece suporte à recuperação dinâmica, que permite gerar Resultados embasados com a Pesquisa Google apenas quando necessário. Portanto, a configuração de recuperação dinâmica avalia se um comando exige conhecimento sobre eventos recentes e ativa a integração com a Pesquisa Google. Para mais informações, consulte Recuperação dinâmica.
- Texto inline: use a fundamentação com texto inline para fundamentar a resposta em partes de texto chamadas texto de fato que são fornecidas na solicitação. Um texto de fato é uma declaração fornecida pelo usuário que é considerada factual para uma determinada solicitação. O modelo não verifica a autenticidade do texto do fato.
- Repositórios de dados da Vertex AI para Pesquisa: use o embasamento com a Vertex AI para Pesquisa se você quiser conectar o modelo aos seus documentos corporativos dos repositórios de dados da Vertex AI para Pesquisa.
Esta página descreve como gerar respostas com base nessas fontes de embasamento usando as seguintes abordagens:
Geração de respostas de uma única vez
Além disso, você pode transmitir as respostas do modelo. A geração de uma resposta embasada por streaming é um recurso experimental.
Você pode usar outros métodos para gerar respostas fundamentadas, de acordo com sua aplicação. Para mais informações, consulte APIs da Vertex AI para criar experiências de pesquisa e RAG.
Terminologia
Antes de usar o método de geração de respostas fundamentadas, é útil entender as entradas e saídas, como estruturar sua solicitação e a terminologia relacionada à RAG.
Termos da RAG
A RAG é uma metodologia que permite que os modelos de linguagem grandes (LLMs) gerem respostas com base na sua fonte de dados. Há duas etapas no RAG:
- Remoção: encontrar rapidamente os fatos mais relevantes pode ser um problema comum de pesquisa. Com a RAG, você pode recuperar rapidamente os fatos que são importantes para gerar uma resposta.
- Geração:o LLM usa os fatos recuperados para gerar uma resposta fundamentada.
Portanto, o método de geração de respostas fundamentadas recupera os fatos da fonte de fundamentação e gera uma resposta fundamentada.
Dados de entrada
O método de geração de respostas fundamentadas requer as seguintes entradas na solicitação:
Papel: o remetente de um determinado texto que é um usuário (
user
) ou um modelo (model
).Texto: quando o papel é
user
, o texto é um comando. Quando o papel émodel
, o texto é uma resposta com embasamento. A forma de especificar o papel e o texto em uma solicitação é determinada da seguinte maneira:- Para a geração de respostas de uma única vez, o usuário envia o texto de comando na solicitação e o modelo envia o texto de resposta na resposta.
- Para uma geração de respostas com vários turnos, a solicitação contém o par de comando e resposta
para todos os turnos anteriores e o texto do comando do usuário para o
turno atual. Portanto, em uma solicitação, o papel é
user
para um texto de comando emodel
para o texto de resposta.
Instrução do sistema: um preâmbulo do comando que governa o comportamento do modelo e modifica a saída de acordo com ele. Por exemplo, é possível adicionar um perfil à resposta gerada ou instruir o modelo a formatar o texto de saída de determinada maneira. Para a geração de respostas com várias rodadas, você precisa fornecer as instruções do sistema para cada rodada. Para mais informações, consulte Usar instruções do sistema.
Origem de embasamento: a origem em que a resposta é baseada e pode ser uma ou mais das seguintes opções:
Pesquisa Google: baseie as respostas com os resultados da Pesquisa Google. Quando a fonte de embasamento é a Pesquisa Google, é possível especificar uma configuração de recuperação dinâmica com um limite de recuperação dinâmica. Para mais informações, consulte Recuperação dinâmica.
Texto inline: baseie a resposta no texto de fato fornecido na solicitação. Um texto de fato é uma declaração fornecida pelo usuário que é considerada factual para uma determinada solicitação. O modelo não verifica a autenticidade do texto do fato. É possível fornecer no máximo 100 textos de fato em cada fonte de texto inline. Os textos de fato podem ser aceitos usando metaatributos, como título, autor e URI. Esses metaatributos são retornados na resposta ao citar os blocos que suportam a resposta.
Repositórios de dados da Vertex AI para Pesquisa: baseie a resposta nos documentos dos repositórios de dados da Vertex AI para Pesquisa. Não é possível especificar um repositório de dados de pesquisa de site como a fonte de referência.
Em uma determinada solicitação, é possível fornecer uma fonte de texto inline e uma da Vertex AI para Pesquisa. Não é possível combinar a Pesquisa Google com nenhuma dessas origens. Portanto, se você quiser basear suas respostas com os resultados da Pesquisa Google, envie uma solicitação separada especificando a Pesquisa Google como a única fonte de embasamento.
Você pode fornecer até 10 fontes de aterramento em qualquer ordem. Por exemplo, suponha que você forneça às fontes de aterramento a contagem abaixo, na ordem a seguir para conseguir um total de 10 fontes de aterramento:
- Três fontes de texto inline, cada uma com no máximo 100 textos de fatos
- Seis repositórios de dados da Vertex AI para Pesquisa
- Quatro fontes de texto inline, cada uma com no máximo 100 textos de fato
Cada origem recebe um índice na ordem em que é especificada na solicitação. Por exemplo, se você especificou uma combinação de origens na solicitação, o índice da origem será atribuído conforme ilustrado na tabela abaixo:
Fonte de embasamento Índice Texto inline 1 0 Texto inline 2 1 Repositório de dados da Pesquisa da Vertex AI 1 2 Texto inline 3 3 Repositório de dados da Pesquisa da Vertex AI 2 4 Esse índice é citado na resposta e é útil para rastrear a proveniência.
Especificações de geração: as especificações para a configuração do modelo que consiste nas seguintes informações:
- ID do modelo: especifica o modelo Gemini da Vertex AI a ser usado para a geração de respostas. Para conferir uma lista de modelos que podem ser usados para gerar respostas fundamentadas, consulte Modelos aceitos.
- Parâmetros do modelo: especifique os parâmetros que podem ser definidos para o modelo escolhido. Esses parâmetros são: idioma, temperatura, Top-P e Top-K. Para detalhes sobre esses parâmetros, consulte Parâmetros de modelo do Gemini.
Dados de saída
A resposta gerada pelo modelo é chamada de candidato e contém os seguintes dados. Nem todos os campos podem estar presentes na saída.
Função: o remetente da resposta fundamentada. A resposta sempre contém o texto da resposta fundamentada. Portanto, o papel em uma resposta é sempre um modelo.
Texto: uma resposta fundamentada.
Pontuação de fundamentação: um valor flutuante no intervalo [0, 1] que indica o quanto uma resposta é fundamentada nas fontes indicadas.
Metadados de aterramento: metadados sobre a origem de aterramento. Os metadados de aterramento contêm as seguintes informações:
Fragmentos de suporte: uma lista de fragmentos que oferecem suporte à resposta. Cada fragmento de suporte recebe um índice de fragmento de suporte que é útil ao rastrear a procedência. Cada bloco de suporte contém o seguinte:
- Texto do bloco: parte do texto citado literalmente da fonte de onde a resposta ou parte dela (chamada de texto da reivindicação) é extraída. Isso nem sempre está presente na resposta.
- Origem: um índice atribuído à origem na solicitação.
Metadados de origem: metadados sobre o bloco. Dependendo da origem, os metadados podem ser um dos seguintes:
- Para uma origem inline, os metadados podem ser os detalhes adicionais especificados na solicitação, como título, autor ou URI.
- Para o repositório de dados da Vertex AI Search, os metadados podem ser o ID do documento, o título do documento, o URI (local do Cloud Storage) ou o número da página.
- No Embasamento com a Pesquisa Google, quando um resultado com base é gerado, os metadados contêm um URI que redireciona para o editor do conteúdo usado para gerar o resultado com base. Os metadados também contêm o domínio do editor. Os URIs fornecidos permanecem acessíveis por até 30 dias após a geração do resultado com embasamento.
Suporte de fundamentação: informações de fundamentação para uma declaração na resposta. O suporte de aterramento contém as seguintes informações:
- Texto da reivindicação: a resposta ou parte dela que é comprovada com o texto do bloco de suporte.
- Índice do bloco de suporte: um índice atribuído ao bloco de suporte na ordem em que o bloco aparece na lista de blocos de suporte.
- Consultas de pesquisa na Web: as consultas de pesquisa sugeridas para as Sugestões da Pesquisa Google.
- Sugestões de pesquisa: se você receber
sugestões da Pesquisa Google com uma resposta, essa resposta é um "Resultado
com embasamento" sujeito aos termos de serviço do Embasamento com a Pesquisa Google. Para mais informações, consulte os Termos de Serviço
.
O campo
renderedContent
no camposearchEntryPoint
é o código fornecido para implementar as Sugestões de pesquisa Google. Para usar as Sugestões da Pesquisa Google, consulte Usar as Sugestões da Pesquisa Google.
Gerar uma resposta fundamentada em uma única vez
Esta seção descreve como gerar respostas com base nas seguintes fontes:
Baseie a resposta no texto inline e no repositório de dados da Vertex AI para Pesquisa
O exemplo a seguir mostra como enviar texto de comando especificando um texto inline
e um repositório de dados da Vertex AI para Pesquisa como a fonte de embasamento.
Não é possível especificar um repositório de dados de pesquisa de sites como a fonte de referência.
Este exemplo usa o método generateGroundedContent
.
REST
Envie a solicitação no curl a seguir.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_1", "attributes": { "title": "TITLE_1", "uri": "URI_1", "author": "AUTHOR_1" } } ] } }, { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_2", "attributes": { "title": "TITLE_2", "uri": "URI_2" } }, { "factText": "FACT_TEXT_3", "attributes": { "title": "TITLE_3", "uri": "URI_3" } } ] } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search" } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto do Google Cloud.PROMPT_TEXT
: o comando do usuário.SYSTEM_INSTRUCTION
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional.FACT_TEXT_N
: o texto inline para fundamentar a resposta. Você pode fornecer no máximo 100 textos de fatos.TITLE_N
: um campo opcional para definir o atributo meta de título para o texto inline.URI_N
: um campo opcional para definir o metaatributo URI do texto inline.AUTHOR_N
: um campo opcional para definir o metaatributo do autor para o texto inline.APP_ID_N
: o ID do app da Vertex AI para Pesquisa.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta com base. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de P máximo para o modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.
Python
Exemplo de geração de respostas de uma única etapa com base no texto inline e na Vertex AI para Pesquisa
No exemplo abaixo, a solicitação especifica as seguintes
fontes de fundamentação: um fato de texto inline e um repositório de dados da Vertex AI para Pesquisa. Este exemplo usa o método
generateGroundedContent
. Esse exemplo também usa uma instrução do sistema para encerrar a resposta com um
emoji de sorriso.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "How did google do in 2020? Where can I find Bigquery docs?" } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction", "attributes": { "title": "BigQuery Overview", "uri": "https://cloud.google.com/bigquery/docs/introduction" } } ] } }, { "searchSource": { "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Gerar respostas com base na Pesquisa Google
É possível basear as respostas geradas em dados da Web disponíveis publicamente.
Recuperação dinâmica
Você pode usar a recuperação dinâmica na sua solicitação para escolher quando desativar o embasamento com a Pesquisa Google. Isso é útil quando o comando não exige uma resposta com embasamento na Pesquisa Google e os modelos compatíveis podem fornecer uma resposta com base no conhecimento sem embasamento. Isso ajuda a gerenciar a latência, a qualidade e o custo com mais eficiência.
Pontuação e limite de previsão de recuperação dinâmica
Quando você envia uma solicitação para gerar uma resposta com embasamento, o Vertex AI Agent Builder atribui uma pontuação de previsão ao comando. A pontuação de previsão é um valor de ponto flutuante no intervalo [0,1]. O valor depende se a instrução pode se beneficiar ao basear a resposta com as informações mais atualizadas da Pesquisa Google. Portanto, uma instrução que exige uma resposta com embasamento nos fatos mais recentes da Web tem uma pontuação de previsão mais alta, e uma instrução para a qual uma resposta gerada pelo modelo é suficiente tem uma pontuação de previsão mais baixa.
Confira exemplos de algumas solicitações e as notas de previsão delas.
Comando | Pontuação de previsão | Comentário |
---|---|---|
"Escreva um poema sobre peônias" | 0,13 | O modelo pode confiar no próprio conhecimento, e a resposta não precisa de embasamento. |
"Sugira um brinquedo para uma criança de 2 anos" | 0.36 | O modelo pode confiar no próprio conhecimento, e a resposta não precisa de embasamento. |
"Você pode dar uma receita de guacamole de inspiração asiática?" | 0,55 | A Pesquisa Google pode dar uma resposta com embasamento, mas o embasamento não é estritamente necessário. O conhecimento do modelo pode ser suficiente |
"O que é o Agent Builder? Como o embasamento é cobrado no Agent Builder?" | 0,72 | Requer que a Pesquisa Google gere uma resposta com bom embasamento |
"Quem ganhou o último Grande Prêmio de F1?" | 0.97 | Requer que a Pesquisa Google gere uma resposta com bom embasamento |
Na solicitação de geração de resposta fundamentada, é possível especificar uma configuração de recuperação dinâmica com um limite. O limite é um valor de ponto flutuante no intervalo [0,1] e tem o valor padrão 0,7. Se o valor de limite for zero, a resposta será sempre com embasamento na Pesquisa Google. Para todos os outros valores de limite, o seguinte é aplicável:
- Se a pontuação da previsão for maior ou igual ao limite, a resposta será baseada na Pesquisa Google. Um limite mais baixo implica que mais comandos têm respostas geradas usando o Embasamento com a Pesquisa Google.
- Se a pontuação da previsão for menor que o limite, o modelo ainda poderá gerar a resposta, mas ela não será baseada na Pesquisa Google.
Para encontrar um bom limite que atenda às necessidades da sua empresa, crie um conjunto representativo de consultas que você espera encontrar. Em seguida, você pode classificar as consultas de acordo com a pontuação de previsão na resposta e selecionar um limite adequado para seu caso de uso.
Basear a resposta na Pesquisa Google
O exemplo a seguir mostra como gerar uma resposta fundamentada a partir de um comando,
especificando a Pesquisa Google como a fonte de informações. Este exemplo usa o
método generateGroundedContent
.
REST
Envie a solicitação no curl a seguir.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": DYNAMIC_RETRIEVAL_THRESHOLD } } } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto do Google Cloud.PROMPT_TEXT
: o comando do usuário.SYSTEM_INSTRUCTION
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta com base. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de P máximo para o modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.DYNAMIC_RETRIEVAL_THRESHOLD
: um campo opcional para definir o limite para invocar a configuração de recuperação dinâmica. É um valor de ponto flutuante no intervalo [0,1]. Se você adicionar o campodynamicRetrievalConfig
, mas não definir o campopredictor
outhreshold
, o valor de limite será 0,7. Se você não definir o campodynamicRetrievalConfig
, a resposta será sempre fundamentada.
Python
Exemplo de geração de resposta com base na Pesquisa Google
No exemplo abaixo, a solicitação especifica a Pesquisa Google como a
fonte de referência. Este exemplo usa o método
generateGroundedContent
. Esse exemplo também usa uma instrução do sistema para encerrar a resposta com um
emoji de sorriso.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [{ "role": "user", "parts": [{ "text": "What is vertex ai agent builder?" }] }], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": 0.6 } } } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } '
Gerar uma resposta fundamentada em várias rodadas
Na geração de respostas com vários turnos, em cada solicitação, você precisa enviar todo o texto trocado entre o usuário e o modelo em todos os turnos anteriores. Isso garante a continuidade e mantém o contexto para gerar a resposta para a última solicitação.
Para receber uma resposta com base na geração de respostas de várias etapas, faça o seguinte:
REST
Os exemplos a seguir mostram como enviar o texto de solicitação de acompanhamento em várias
rodadas. Esses exemplos usam o método generateGroundedContent
e baseiam as
respostas na Pesquisa Google.
Você pode usar etapas semelhantes para gerar respostas com base em outras fontes.
Envie a primeira solicitação na solicitação curl a seguir.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_1" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto do Google Cloud.PROMPT_TEXT_TURN_1
: o texto do comando do usuário no primeiro turno.SYSTEM_INSTRUCTION_TURN_1
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para gerar respostas com vários turnos, você precisa fornecer as instruções do sistema para cada turno.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta com base. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de P máximo para o modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.
Envie a segunda solicitação como uma ação de acompanhamento. Adicione a primeira instrução do usuário seguida pela resposta correspondente do modelo para o contexto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] }, { "role": "model", "parts": [ { "text": "ANSWER_TEXT_TURN_1" } ] }, { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_2" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_2" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto do Google Cloud.PROMPT_TEXT_TURN_1
: o texto do comando do usuário no primeiro turno.ANSWER_TEXT_TURN_1
: o texto da resposta do modelo na primeira vez.PROMPT_TEXT_TURN_2
: o texto do comando do usuário na segunda vez.SYSTEM_INSTRUCTION_TURN_2
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para gerar respostas com vários turnos, você precisa fornecer as instruções do sistema para cada turno.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta com base. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de P máximo para o modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.
Repita esse processo para receber mais respostas. Em cada turno, adicione todas as solicitações anteriores do usuário seguidas pelas respostas correspondentes do modelo.
Exemplo de geração de respostas com várias interações
No exemplo abaixo, a solicitação especifica três textos de fato inline
como a fonte de base para gerar respostas em duas rodadas. Este
exemplo usa o método generateGroundedContent
. Esse exemplo também usa uma
instrução do sistema para encerrar a resposta na primeira vez com um emoji sorridente.
REST
Envie a primeira solicitação na solicitação curl a seguir.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Envie a segunda solicitação como uma ação de acompanhamento. Adicione a primeira instrução do usuário seguida pela resposta correspondente do modelo para o contexto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] }, { "role": "model", "parts": [ { "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion. 😊 \n" } ] }, { "role": "user", "parts": [ { "text": "Rephrase the answer in an abstracted list." } ] } ], "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Mostrar respostas com base em dados
Você pode transmitir as respostas do modelo. Isso é útil nos casos em que a resposta é muito longa e o envio de toda a resposta de uma só vez causa um atraso significativo. O streaming da resposta divide a resposta em uma matriz de vários candidatos que contêm partes sequenciais do texto da resposta.
Para receber uma resposta com base em dados, faça o seguinte:
REST
O exemplo a seguir mostra como transmitir uma resposta com base em dados.
Este exemplo usa o
método streamGenerateGroundedContent
e fundamenta a resposta com a
Pesquisa Google sem a configuração de recuperação dinâmica. Você pode usar etapas semelhantes
para gerar respostas com base em outras fontes.
Envie a solicitação no curl a seguir.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K } } ]'
Substitua:
PROJECT_NUMBER
: o número do seu projeto do Google Cloud.PROMPT_TEXT
: o comando do usuário.SYSTEM_INSTRUCTION
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta com base. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de P máximo para o modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.
Python
Exemplo de streaming de respostas embasadas
No exemplo a seguir, a solicitação especifica a Pesquisa Google como a
origem de referência para transmitir uma resposta sem a configuração de recuperação
dinâmica. A resposta transmitida é distribuída em vários candidatos
de resposta. Este exemplo usa o método streamGenerateGroundedContent
.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "Summarize How to delete a data store in Vertex AI Agent Builder?" } ] } ], "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } ]'
Modelos compatíveis
Os seguintes modelos dão suporte ao embasamento:
- Gemini 1.5 Pro apenas com entrada de texto
- Gemini 1.5 Flash apenas com entrada de texto
- Gemini 1.0 Pro apenas com entrada de texto
Para saber mais sobre esses modelos do Gemini, consulte Versões e ciclo de vida do modelo Gemini.
Ao chamar o método generateGroundedContent
, você pode usar os seguintes
IDs de modelo:
ID do modelo | Atualização automática |
---|---|
default |
Sim |
gemini-1.0-pro |
Sim |
gemini-1.0-pro-001 |
Não |
gemini-1.0-pro-002 |
Não |
gemini-1.5-flash |
Sim |
gemini-1.5-flash-001 |
Não |
gemini-1.5-pro |
Sim |
gemini-1.5-pro-001 |
Não |
A seguir
Aprenda a usar o método de geração de embasamento com outras APIs de RAG para gerar respostas embasadas em dados não estruturados.