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 com base em:
- 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. O embasamento na Pesquisa Google é compatível com anúncios dinâmicos recuperação que oferece a opção de gerar resultados embasados com Pesquisa Google apenas quando necessário. Portanto, a recuperação dinâmica avalia se um comando requer conhecimento sobre os dados e ativa o embasamento com a Pesquisa Google. Para mais informações, consulte Recuperação dinâmica.
- Texto inline: usar embasamento com texto inline para dividir a resposta em partes chamados texto de fatos, que são fornecidas na solicitação. Um texto de fato é uma declaração fornecida pelo usuário que é considerada factual para determinada solicitação. O modelo não verifica a autenticidade do texto do fato.
- Armazenamentos de dados da Vertex AI para Pesquisa: use o embasamento com Vertex AI para Pesquisa se quiser conectar o modelo ao seu documentos corporativos dos repositórios de dados da Vertex AI para Pesquisa.
Esta página descreve como gerar respostas embasadas com base nesses 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:
- Recuperação: identificar rapidamente os fatos mais relevantes pode ser uma tarefa um problema de pesquisa. Com a RAG, é possível recuperar rapidamente os fatos importante 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 com base em informações empíricas recupera os fatos da fonte de informações e gera uma resposta com base em informações empíricas.
Dados de entrada
O método de geração de respostas embasadas requer as seguintes entradas no 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 prompt e quando o função formodel
, o texto é uma resposta embasada. Como especificar a função e em uma solicitação é determinado 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 resposta em vários turnos, a solicitação contém o par de comando e resposta
de todas as rodadas anteriores e o texto de solicitação do usuário para
volta atual. Portanto, nessa solicitação, o papel é
user
. para um texto de comando emodel
para o texto da resposta.
Instrução do sistema: um preâmbulo do comando que governa o comportamento do modelo e modifica a saída de acordo. Por exemplo, é possível adicionar a resposta gerada ou instrua o modelo a formatar a saída o texto de uma 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.
Fonte de embasamento: a fonte em que a resposta está embasada e pode ser um ou mais dos seguintes:
Pesquisa Google: fundamentar as respostas com a Pesquisa Google resultados. 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: fundamentar a resposta em texto de fatos que é fornecidas na solicitação. Um texto de fato é uma declaração fornecida pelo usuário que é considerada factual para determinada solicitação. O modelo não verifica a autenticidade do texto. Você pode fornecer no máximo 100 fatos em cada texto inline. fonte. 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 oferecem suporte à resposta.
Armazenamentos de dados da Vertex AI para Pesquisa: fundamentar a resposta nos documentos dos repositórios de dados da Vertex AI para Pesquisa.
Em uma determinada solicitação, você pode fornecer uma fonte de texto inline e um Origem do repositório de dados da Vertex AI para Pesquisa. Não é possível combinar Pesquisa Google com uma dessas fontes. Portanto, se você quiser fundamentar suas respostas com os resultados da Pesquisa Google, envie uma uma solicitação separada especificando a Pesquisa Google como o único embasamento fonte.
Você pode fornecer no máximo 10 fontes de embasamento em qualquer ordem. Por exemplo: suponha que você fornece às fontes de embasamento a seguinte contagem, em a seguinte ordem para obter um total de 10 fontes de embasamento:
- Três fontes de texto inline, cada uma com no máximo 100 textos de fato
- Seis repositórios de dados da Vertex AI para Pesquisa
- Quatro fontes de texto inline, cada uma contendo no máximo 100 fatos mensagens de texto
Cada origem recebe um índice na ordem em que é especificada no 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 n.o 1 0 Texto inline 2 1 Armazenamento de dados da Pesquisa da Vertex AI 1 2 Texto inline 3 3 Armazenamento de dados da Pesquisa da Vertex AI 2 4 Esse índice é citado na resposta e é útil ao rastrear os procedência.
Especificações de geração: as especificações de configuração do modelo que consistem 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 compatíveis.
- Parâmetros do modelo: especifique os parâmetros que podem ser definidos para o modelo. que escolher usar. 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 dados a seguir. É possível que nem todos os campos estejam presentes na saída.
Função: o remetente da resposta embasada. A resposta sempre contém o em um texto de resposta embasado. Portanto, o papel em uma resposta é sempre um modelo.
Texto: uma resposta embasada.
Pontuação de embasamento: um valor flutuante no intervalo [0, 1] que indica o desempenho é embasada nas fontes fornecidas.
Metadados de embasamento: metadados sobre a fonte de embasamento. Os metadados de aterramento contêm as seguintes informações:
Blocos de suporte: uma lista de blocos que aceitam a 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 em chunk: parte do texto citado literalmente da fonte de qual a resposta ou parte dela (chamado de texto da reivindicação) é extraídos. 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 fonte in-line, os metadados podem ser os detalhes adicionais que foram 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 embasado é gerado, os metadados contêm um URI que redireciona para o editor do conteúdo usado para gerar o resultado embasado. 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 embasado.
Suporte de fundamentação: informações de fundamentação para uma declaração na resposta. O suporte de embasamento contém as seguintes informações:
- Texto da reivindicação: a resposta ou parte da resposta que é embasada 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 de pesquisa do Google.
- Sugestões de pesquisa: se você receber
às sugestões da Pesquisa Google, mas essa resposta for "Baseada
Resultado" sujeito aos termos de serviço do embasamento com a Pesquisa Google. Para mais informações, consulte
mais informações, consulte
Termos de Serviço
O campo
renderedContent
no camposearchEntryPoint
é o código fornecido para implementar as sugestões da Pesquisa Google. Para usar as sugestões da Pesquisa Google, consulte Usar a Pesquisa Google Suggestions (Sugestões).
Gerar uma resposta fundamentada em uma única vez
Esta seção descreve como gerar respostas embasadas nas seguintes fontes:
Fundamentar a resposta em texto inline e no repositório de dados da Vertex AI para Pesquisa
O exemplo a seguir mostra como enviar o texto de comando especificando um texto inline
e um repositório de dados da Vertex AI para Pesquisa como a origem de base.
Este exemplo usa o método generateGroundedContent
.
REST
Envie o prompt na seguinte solicitação curl.
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 fatos e textos.TITLE_N
: um campo opcional para definir o metaatributo título para o texto inline.URI_N
: um campo opcional para definir o metaatributo URI para o texto inline.AUTHOR_N
: um campo opcional para definir o metaatributo autor do texto inline.APP_ID_N
: o ID do app Vertex AI para Pesquisa.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que você quer usar para gerar o resposta embasada. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte o modelo do Gemini parâmetros.TOP_P
: um campo opcional para definir o valor top-p do 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 curva única embasada em 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 armazenamento 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 resposta 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 embasada na Pesquisa Google e na modelos compatíveis podem fornecer uma resposta 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 embasada, a Vertex AI Agent Builder atribui um 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 baseada 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 por modelo é suficiente tem uma pontuação de previsão mais baixa.
Confira exemplos de algumas instruçõ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. |
"Sugerir um brinquedo para uma criança de 2 anos" | 0.36 | O modelo pode confiar em seu 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 fornecer uma resposta embasada, mas o embasamento não é estritamente obrigatório. o conhecimento do modelo pode ser suficiente |
"O que é o Agent Builder? Como a conexão à terra é cobrada no Agent Builder?" | 0,72 | Exige que a Pesquisa Google gere uma resposta bem fundamentada |
"Quem ganhou o último Grande Prêmio de F1?" | 0.97 | Requer que a Pesquisa Google gere uma resposta bem fundamentada |
Na solicitação de geração de resposta embasada, é possível especificar uma funçã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 do limite for zero, a resposta será sempre fundamentada 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á fundamentada 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. Depois, você pode classificar as consultas de acordo com a pontuação de previsão na resposta e selecione uma um bom limite para seu caso de uso.
Baseie a resposta com a Pesquisa Google
O exemplo a seguir mostra como gerar uma resposta com base em um comando,
especificando a Pesquisa Google como a fonte de base. Este exemplo usa o
método generateGroundedContent
.
REST
Envie o prompt na seguinte solicitação curl.
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 Gemini que você quer usar para gerar o resposta embasada. Para conferir uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para amostragem. Recomendações do Google a uma temperatura de 0,0. Para mais informações, consulte o modelo do Gemini parâmetros.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 o modelo do Gemini parâmetros.DYNAMIC_RETRIEVAL_THRESHOLD
: um campo opcional para definir o limite para invocar a configuração de recuperação dinâmica. É um ponto flutuante valor no intervalo [0,1]. Se você adicionar odynamicRetrievalConfig
mas você não definir o campopredictor
outhreshold
, a o valor limite padrão é 0,7. Se você não definir o campodynamicRetrievalConfig
, a resposta será sempre fundamentada.
Python
Exemplo de geração de resposta com uma única interação com base na Pesquisa Google
No exemplo a seguir, a solicitação especifica a Pesquisa Google como
fonte de embasamento. 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 embasada pela geração de respostas em vários turnos, faça o seguinte:
REST
Os exemplos a seguir mostram como enviar texto de solicitação de acompanhamento por várias
vira. 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 o primeiro prompt na seguinte solicitação curl.
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 Gemini que você quer usar para gerar o resposta embasada. Para uma lista de IDs de modelo disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para amostragem. O Google recomenda uma temperatura de 0,0. Para mais informações, consulte o modelo do Gemini parâmetros.TOP_P
: um campo opcional para definir o valor top-p do modelo. Para mais informações, consulte o modelo do Gemini parâmetros.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. Adicionar a primeira instrução do usuário, seguida pela resposta correspondente do o modelo para 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. na primeira curva.ANSWER_TEXT_TURN_1
: o texto de resposta do na primeira rodada.PROMPT_TEXT_TURN_2
: o texto do comando do usuário. na segunda curva.SYSTEM_INSTRUCTION_TURN_2
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para geração de respostas em vários turnos, você deve fornecer as instruções do sistema para cada turno.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que você quer usar para gerar o resposta embasada. 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. Recomendações do Google a uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor top-p do 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 obter mais respostas de acompanhamento. Em cada turno, adicione todas as solicitações anteriores do usuário seguidas pelas respostas correspondentes do modelo.
Exemplo para geração de respostas em vários turnos
No exemplo abaixo, a solicitação especifica três textos de fato inline
como a fonte de base para gerar respostas em duas rodadas. Isso
o 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 o primeiro prompt na seguinte solicitação curl.
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 empíricas
É possível transmitir as respostas do modelo. Isso é útil para casos de uso em que a resposta é especialmente longa e envia 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 transmitida e embasada, faça o seguinte:
REST
O exemplo abaixo mostra como transmitir uma resposta embasada.
Este exemplo usa o
método streamGenerateGroundedContent
e fundamenta a resposta com a
Pesquisa Google sem a configuração de recuperação dinâmica. Siga etapas semelhantes
gerar respostas embasadas usando outras fontes de embasamento.
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 uma lista de IDs de modelo disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada para amostragem. Recomendações do Google a uma temperatura de 0,0. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor top-p do 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 o modelo do Gemini parâmetros.
Python
Exemplo de respostas embasadas em streaming
No exemplo a seguir, a solicitação especifica a Pesquisa Google como
de embasamento para transmitir uma resposta sem a recuperação dinâmica
configuração do Terraform. 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 o seguinte:
IDs de modelo:
ID do modelo | Atualizado automaticamente |
---|---|
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.