Como parte da sua experiência de Geração Aumentada de Recuperação (RAG) nos aplicativos de IA, você pode gerar respostas embasadas para comandos com base nas seguintes fontes:
- Pesquisa Google: use o embasamento com a Pesquisa Google se 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 o embasamento com texto inline para embasar a resposta em partes de texto chamadas de 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 uma determinada solicitação. O modelo não verifica a autenticidade do texto com fatos.
- Repositórios de dados da Vertex AI para Pesquisa: use o embasamento com a Vertex AI para Pesquisa se quiser conectar o modelo aos seus documentos empresariais dos repositórios de dados da Vertex AI para Pesquisa.
Nesta página, descrevemos como gerar respostas embasadas com base nessas fontes usando as seguintes abordagens:
Geração de respostas com interação única
Além disso, você pode transmitir as respostas do modelo. Gerar uma resposta embasada por streaming é um recurso experimental.
Você pode usar outros métodos para gerar respostas embasadas, de acordo com seu aplicativo. 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 modelos de linguagem grandes (LLMs) gerem respostas embasadas na fonte de dados escolhida. Há duas etapas no RAG:
- Recuperação: encontrar os fatos mais relevantes rapidamente pode ser um problema comum de pesquisa. Com a RAG, você pode recuperar rapidamente os fatos importantes para gerar uma resposta.
- Geração:os fatos recuperados são usados pelo LLM para gerar uma resposta fundamentada.
Portanto, o método de geração de respostas fundamentadas recupera os fatos da fonte de embasamento e gera uma resposta fundamentada.
Dados de entrada
O método de geração de respostas fundamentadas exige as seguintes entradas na solicitação:
Função: o remetente de um determinado texto, que pode ser um usuário (
user
) ou um modelo (model
).Texto: quando a função é
user
, o texto é um comando, e quando a função émodel
, o texto é uma resposta com embasamento. A maneira de especificar a função e o texto em uma solicitação é determinada da seguinte forma:- Para uma geração de resposta única, o usuário envia o texto do comando na solicitação e o modelo envia o texto da resposta na resposta.
- Para uma geração de respostas em várias etapas, a solicitação contém o par solicitação-resposta
de todas as etapas anteriores e o texto da solicitação do usuário para a
etapa atual. Portanto, em uma solicitação desse tipo, a função é
user
para um texto de comando emodel
para o texto de resposta.
Instrução do sistema: um preâmbulo da sua solicitação que rege o comportamento do modelo e modifica a saída de acordo. Por exemplo, você pode adicionar uma persona à resposta gerada ou instruir o modelo a formatar o texto de saída de uma determinada maneira. Para gerar respostas em 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 se baseia e que pode ser uma ou mais das seguintes opções:
Pesquisa Google: embasar 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 em texto de fatos 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 com fatos. É possível fornecer no máximo 100 textos de fatos em cada fonte de texto inline. Os textos de fatos podem ser compatíveis com o uso de metatributos, como título, autor e URI. Esses atributos são retornados na resposta ao citar os trechos que apoiam a resposta.
Repositórios de dados da Vertex AI para Pesquisa: embasar 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 sites como fonte de embasamento.
Em uma determinada solicitação, é possível fornecer uma fonte de texto inline e uma fonte de repositório de dados da Vertex AI para Pesquisa. Não é possível combinar a Pesquisa Google com nenhuma dessas fontes. Portanto, se quiser embasar suas respostas com os resultados da Pesquisa Google, envie uma solicitação separada especificando a Pesquisa Google como a única fonte de embasamento.
É possível fornecer no máximo 10 fontes de embasamento em qualquer ordem. Por exemplo, suponha que você forneça as fontes de embasamento com a seguinte contagem, na seguinte ordem, para obter um total de 10 fontes:
- 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
- Uma fonte de texto inline, contendo no máximo 100 textos de fatos
Cada fonte recebe um índice na ordem em que é especificada na solicitação. Por exemplo, se você especificou uma combinação de fontes na sua solicitação, o índice de origem será atribuído conforme ilustrado na tabela a seguir:
Fonte de embasamento Índice Texto inline 1 0 Texto inline nº 2 1 Repositório de dados da Pesquisa da Vertex AI nº 1 2 Texto inline #3 3 Repositório de dados da Vertex AI para Pesquisa nº 2 4 Esse índice é citado na resposta e é útil ao rastrear a origem.
Especificações de geração: as especificações para configuração do modelo que consistem nas seguintes informações:
ID do modelo: especifica o modelo do Gemini da Vertex AI a ser usado para geração de respostas. Para conferir uma lista de modelos que podem ser usados para gerar respostas embasadas, consulte Modelos compatíveis.
Parâmetros do modelo: especifique os parâmetros que podem ser definidos para o modelo que você escolheu usar. São eles: idioma, temperatura, top-P e top-K. Para detalhes sobre esses parâmetros, consulte Parâmetros do modelo do Gemini.
Código do idioma: o idioma da resposta gerada geralmente é definido para corresponder ao idioma do comando. Se não houver um único idioma no comando (por exemplo, se o comando for muito curto e puder ser válido em vários idiomas), o campo de código de idioma vai determinar o idioma da resposta.
Para uma lista de códigos de idioma, consulte Idiomas.
Latitude e longitude: especifica a latitude e a longitude do usuário. Se a consulta contiver perguntas específicas de local, como "Encontre um café perto de mim", esses campos serão usados. Se o idioma da consulta não puder ser determinado e o código de idioma não estiver definido, a latitude e a longitude serão usadas para determinar o idioma da resposta.
Dados de saída
A resposta gerada pelo modelo é chamada de candidata e contém os seguintes dados. Nem todos os campos podem estar presentes na saída.
Função: o remetente da resposta embasada. A resposta sempre contém o texto da resposta embasada. Portanto, a função em uma resposta é sempre um modelo.
Texto: uma resposta fundamentada.
Pontuação de embasamento: um valor de ponto flutuante no intervalo [0, 1] que indica o quanto uma resposta é embasada nas fontes fornecidas.
Metadados de embasamento: metadados sobre a fonte de embasamento. Os metadados de embasamento contêm as seguintes informações:
Trechos de suporte: uma lista de trechos que apoiam a resposta. Cada trecho de suporte recebe um índice que é útil ao rastrear a origem. Cada trecho de suporte contém o seguinte:
- Texto de trecho: uma parte do texto citada textualmente da fonte de que a resposta ou parte dela (chamada de texto da declaraçã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 trecho. Dependendo da fonte, os metadados podem ser:
- Para uma fonte 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 para Pesquisa, 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 embasamento. 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 embasamento: informações de embasamento para uma declaração na resposta. O suporte de embasamento contém as seguintes informações:
- Texto da declaração: a resposta ou parte dela que é fundamentada com o texto do trecho de apoio.
- Índice do trecho de suporte: um índice atribuído ao trecho de suporte na ordem em que ele aparece na lista de trechos 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 para Embasamento com a Pesquisa Google. Para mais
informações, consulte
Termos de
serviço.
O campo
renderedContent
emsearchEntryPoint
é o código fornecido para implementar as sugestões da Pesquisa Google. Para usar as Sugestões da Pesquisa Google, consulte Usar as Sugestões da Pesquisa Google.
Gerar uma resposta embasada em uma única interação
Esta seção descreve como gerar respostas embasadas 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 um texto de solicitação 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 no site como fonte de embasamento.
Este exemplo usa o método generateGroundedContent
.
REST
Envie o comando 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 }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto 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. É possível fornecer no máximo 100 textos de fatos.TITLE_N
: um campo opcional para definir o atributo meta de título do texto inline.URI_N
: um campo opcional para definir o atributo meta de URI do texto inline.AUTHOR_N
: um campo opcional para definir o atributo de metadados do autor para o texto inline.APP_ID_N
: o ID do app 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 embasada. Para uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada na 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 top-P do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor de top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.LANGUAGE_CODE
: um campo opcional que pode ser usado para definir o idioma da resposta gerada e do texto do trecho retornado. Se o idioma não puder ser determinado pela consulta, esse campo será usado. O valor padrão éen
. Para conferir uma lista de códigos de idioma, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Insira o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Insira o valor em graus decimais, por exemplo,131.04
.
Exemplo de geração de respostas em uma única interação embasada em texto inline e na Vertex AI para Pesquisa
No exemplo a seguir, a solicitação especifica estas 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
. Este exemplo também usa uma instrução do sistema para terminar 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" }, "user_context": { "languageCode: "en", "latLng": { "latitude": 37.422131, "longitude": -122.084801 } } }'
Gerar respostas embasadas com a Pesquisa Google
Você pode embasar as respostas geradas com 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, os aplicativos de IA atribuem 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 são aplicativos de IA? Como o embasamento é cobrado nos aplicativos de IA?" | 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 respostas embasadas, é 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 embasada de um comando
especificando a Pesquisa Google como a fonte de embasamento. Este exemplo usa o método
generateGroundedContent
.
REST
Envie o comando 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 }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT
: o comando do usuário.SYSTEM_INSTRUCTION
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional.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 os campospredictor
outhreshold
, o valor de limite será 0,7. Se você não definir o campodynamicRetrievalConfig
, a resposta sempre será embasada.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta embasada. Para uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada na 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 top-P do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor de top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.LANGUAGE_CODE
: um campo opcional que pode ser usado para definir o idioma da resposta gerada e do texto do trecho retornado. Se o idioma não puder ser determinado pela consulta, esse campo será usado. O valor padrão éen
. Para conferir uma lista de códigos de idioma, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Insira o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Insira o valor em graus decimais, por exemplo,131.04
.
Exemplo de geração de resposta de uma só atividade com base na Pesquisa Google
No exemplo a seguir, a solicitação especifica a Pesquisa Google como a fonte de embasamento. Este exemplo usa o método generateGroundedContent
. Este exemplo também usa uma instrução do sistema para terminar 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 ai applications?" }] }], "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 embasada em várias rodadas
Na geração de respostas em várias etapas, em cada solicitação, você precisa enviar todo o texto trocado entre o usuário e o modelo em todas as etapas anteriores. Isso garante a continuidade e mantém o contexto para gerar a resposta ao comando mais recente.
Para receber uma resposta embasada com a geração de respostas em várias etapas, faça o seguinte:
REST
Os exemplos a seguir mostram como enviar texto de solicitação de acompanhamento em várias
interações. Esses exemplos usam o método generateGroundedContent
e embasam as respostas com a Pesquisa Google.
Você pode usar etapas semelhantes para gerar respostas embasadas usando outras fontes.
Envie o primeiro comando 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 }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT_TURN_1
: o texto do comando do usuário na primeira vez.SYSTEM_INSTRUCTION_TURN_1
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para geração de respostas em várias etapas, você precisa fornecer as instruções do sistema para cada etapa.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta embasada. Para uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada na 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 top-P do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor de top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.LANGUAGE_CODE
: um campo opcional que pode ser usado para definir o idioma da resposta gerada e do texto do trecho retornado. Se o idioma não puder ser determinado pela consulta, esse campo será usado. O valor padrão éen
. Para conferir uma lista de códigos de idioma, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Insira o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Insira o valor em graus decimais, por exemplo,131.04
.
Envie o segundo comando como acompanhamento. Adicione o primeiro comando do usuário seguido da resposta correspondente do 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 }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Substitua:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT_TURN_1
: o texto do comando do usuário na primeira vez.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 geração de respostas em várias etapas, você precisa fornecer as instruções do sistema para cada etapa.MODEL_ID
: um campo opcional para definir o ID do modelo do Gemini que você quer usar para gerar a resposta embasada. Para uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada na 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 top-P do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor de top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.LANGUAGE_CODE
: um campo opcional que pode ser usado para definir o idioma da resposta gerada e do texto do trecho retornado. Se o idioma não puder ser determinado pela consulta, esse campo será usado. O valor padrão éen
. Para conferir uma lista de códigos de idioma, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Insira o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Insira o valor em graus decimais, por exemplo,131.04
.
Repita esse processo para receber mais respostas de acompanhamento. Em cada turno, adicione todos os comandos anteriores do usuário seguidos pelas respostas correspondentes do modelo.
Exemplo de geração de respostas com várias interações
No exemplo a seguir, a solicitação especifica três textos de fatos in-line
como a fonte de embasamento para gerar respostas em dois turnos. Este exemplo usa o método generateGroundedContent
. Este exemplo também usa uma instrução do sistema para terminar a resposta na primeira vez com um emoji de carinha sorridente.
REST
Envie o primeiro comando 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 o segundo comando como acompanhamento. Adicione o primeiro comando do usuário seguido da resposta correspondente do 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/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 embasadas
Você pode transmitir as respostas do modelo. Isso é útil em casos de uso 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 fundamentada e transmitida, faça o seguinte:
REST
O exemplo a seguir mostra como transmitir uma resposta embasada.
Este exemplo usa o método
streamGenerateGroundedContent
e embasa a resposta com a
Pesquisa Google sem a configuração de recuperação dinâmica. Você pode usar etapas semelhantes
para gerar respostas embasadas usando outras fontes.
Envie o comando 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/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 }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } } ]'
Substitua:
PROJECT_NUMBER
: o número do seu projeto 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 embasada. Para uma lista de IDs de modelos disponíveis, consulte Modelos compatíveis.TEMPERATURE
: um campo opcional para definir a temperatura usada na 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 top-P do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor de top-K do modelo. Para mais informações, consulte Parâmetros do modelo Gemini.LANGUAGE_CODE
: um campo opcional que pode ser usado para definir o idioma da resposta gerada e do texto do trecho retornado. Se o idioma não puder ser determinado pela consulta, esse campo será usado. O valor padrão éen
. Para conferir uma lista de códigos de idioma, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Insira o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Insira o valor em graus decimais, por exemplo,131.04
.
Exemplo de respostas embasadas por streaming
No exemplo a seguir, a solicitação especifica a Pesquisa Google como a fonte de embasamento para transmitir uma resposta sem a configuração de recuperação dinâmica. A resposta transmitida é distribuída em vários candidatos a 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 AI Applications?" } ] } ], "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
- Flash 1.5 do Gemini 1.5 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 | Atualizado automaticamente |
---|---|
default |
Sim |
gemini-1.5-flash |
Sim |
gemini-1.5-flash-001 |
Não |
gemini-1.5-flash-002 |
Não |
gemini-1.5-pro |
Sim |
gemini-1.5-pro-001 |
Não |
gemini-1.5-pro-002 |
Não |
A seguir
Aprenda a usar o método de geração embasada com outras APIs de RAG para gerar respostas embasadas com dados não estruturados.