Como parte da sua experiência de geração aumentada de recuperação (RAG) nas aplicações de IA, pode gerar respostas fundamentadas a comandos com base nas seguintes fontes de fundamentação:
- Pesquisa Google: use a fundamentação com a Pesquisa Google se quiser associar o modelo a conhecimentos mundiais, a uma grande variedade de tópicos ou a informações atualizadas na Internet. A fundamentação com a Pesquisa Google suporta a obtenção dinâmica, o que lhe dá a opção de gerar resultados fundamentados com a Pesquisa Google apenas quando necessário. Por conseguinte, a configuração de obtenção dinâmica avalia se um comando requer conhecimentos sobre eventos recentes e ativa a fundamentação com a Pesquisa Google. Para mais informações, consulte a secção Obtenção dinâmica.
- Texto inline: use a fundamentação com texto inline para fundamentar a resposta em partes de texto denominadas texto de factos que são fornecidas no pedido. Um texto de factos é uma declaração fornecida pelo utilizador que é considerada factual para um determinado pedido. O modelo não verifica a autenticidade do texto de factos.
- Bases de dados do Vertex AI Search: use o fundamento com o Vertex AI Search se quiser associar o modelo aos seus documentos empresariais das bases de dados do Vertex AI Search.
Esta página descreve como gerar respostas fundamentadas com base nestas fontes de fundamentação através das seguintes abordagens:
Geração de respostas de interação única
Além disso, pode optar por transmitir as respostas do modelo. A geração de uma resposta fundamentada através do streaming é uma funcionalidade experimental.
Pode usar outros métodos para gerar respostas fundamentadas, de acordo com a sua aplicação. Para mais informações, consulte o artigo APIs Vertex AI para criar experiências de pesquisa e RAG.
Terminologia
Antes de usar o método de geração de respostas fundamentadas, é útil compreender as entradas e as saídas, como estruturar o seu pedido e a terminologia relacionada com a RAG.
Termos RAG
A RAG é uma metodologia que permite que os grandes modelos de linguagem (GMLs) gerem respostas baseadas na origem de dados da sua escolha. Existem duas fases na RAG:
- Obtenção: obter rapidamente os factos mais relevantes pode ser um problema de pesquisa comum. Com a RAG, pode obter rapidamente os factos importantes para gerar uma resposta.
- Geração: os factos obtidos são usados pelo MDI/CE para gerar uma resposta fundamentada.
Por conseguinte, o método de geração de respostas fundamentadas obtém os factos 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 no pedido:
Função: o remetente de um determinado texto que é um utilizador (
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 fundamentada. A forma como especifica a função e o texto num pedido é determinada da seguinte forma:- Para uma geração de respostas de interação única, o utilizador envia o texto do comando no pedido e o modelo envia o texto da resposta na resposta.
- Para uma geração de respostas em várias fases, o pedido contém o par comando-resposta
para todas as fases anteriores e o texto do comando do utilizador para a
fase atual. Por conseguinte, num pedido deste tipo, a função é
user
para um texto de comando emodel
para o texto de resposta.
Instrução do sistema: um preâmbulo para o seu comando que rege o comportamento do modelo e modifica o resultado em conformidade. Por exemplo, pode adicionar uma personagem à resposta gerada ou dar instruções ao modelo para formatar o texto de saída de uma determinada forma. Para a geração de respostas em várias interações, tem de fornecer as instruções do sistema para cada interação. Para mais informações, consulte o artigo Use instruções do sistema.
Fonte de fundamentação: a fonte na qual a resposta se baseia e pode ser uma ou mais das seguintes:
Pesquisa Google: baseie as respostas em resultados da Pesquisa Google. Quando a origem de fundamentação é a Pesquisa Google, pode especificar uma configuração de obtenção dinâmica com um limite de obtenção dinâmica. Para mais informações, consulte a secção Obtenção dinâmica.
Texto inline: basear a resposta em texto factual fornecido no pedido. Um texto de factos é uma declaração fornecida pelo utilizador que é considerada factual para um determinado pedido. O modelo não verifica a autenticidade do texto de factos. Pode fornecer um máximo de 100 textos de factos em cada fonte de texto incorporado. Os textos de factos podem ser suportados através de meta atributos, como o título, o autor e o URI. Estes meta atributos são devolvidos na resposta quando cita os fragmentos que suportam a resposta.
Armazenamento de dados do Vertex AI Search: fundamentar a resposta nos documentos dos armazenamentos de dados do Vertex AI Search. Não pode especificar um arquivo de dados de pesquisa de um Website como a origem de fundamentação.
Num determinado pedido, pode fornecer uma origem de texto incorporada e uma origem do arquivo de dados do Vertex AI Search. Não pode combinar a Pesquisa Google com nenhuma destas origens. Por conseguinte, se quiser fundamentar as suas respostas com resultados da Pesquisa Google, tem de enviar um pedido separado que especifique a Pesquisa Google como a única fonte de fundamentação.
Pode fornecer um máximo de 10 origens de fundamentação em qualquer ordem. Por exemplo, suponhamos que fornece as origens de base com a seguinte contagem, pela seguinte ordem, para obter um total de 10 origens de base:
- Três fontes de texto incorporadas, cada uma das quais pode conter um máximo de 100 textos de factos
- Seis armazéns de dados do Vertex AI Search
- Uma origem de texto inline, que contém um máximo de 100 textos de factos
É atribuído um índice a cada origem pela ordem em que é especificada no pedido. Por exemplo, se tiver especificado uma combinação de origens no seu pedido, o índice da origem é atribuído conforme ilustrado na tabela seguinte:
Origem da superfície de referência Índice Texto inline n.º 1 0 Texto inline n.º 2 1 Armazenamento de dados do Vertex AI Search n.º 1 2 Texto inline n.º 3 3 Vertex AI Search data store #2 4 Este í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 consistem nas seguintes informações:
ID do modelo: especifica o modelo do Vertex AI Gemini a usar para a geração de respostas. Para ver uma lista dos modelos que pode usar para gerar respostas fundamentadas, consulte o artigo Modelos suportados.
Parâmetros do modelo: especifique os parâmetros que pode definir para o modelo que optar por usar. Estes parâmetros são: idioma, temperatura, top-P e top-K. Para ver detalhes acerca destes parâmetros, consulte o artigo Parâmetros do modelo Gemini.
Código do idioma: o idioma da resposta gerada é geralmente definido para corresponder ao idioma do comando. Se não existir um único idioma no comando (por exemplo, se o comando for muito curto e puder ser válido em vários idiomas), o campo do código de idioma determina o idioma da resposta.
Para ver uma lista de códigos de idiomas, consulte Idiomas.
Latitude e longitude: especifica a latitude e a longitude do utilizador. Se a consulta contiver perguntas específicas da localização, como "Encontra um café perto de mim", estes campos são usados. Se não for possível determinar o idioma da consulta e o código de idioma não estiver definido, a latitude e a longitude são usadas para determinar o idioma da resposta.
Dados de saída
A resposta gerada pelo modelo é denominada 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 contém sempre o texto da resposta fundamentada. Por conseguinte, a função numa resposta é sempre um modelo.
Texto: uma resposta fundamentada.
Classificação de fundamentação: um valor flutuante no intervalo [0, 1] que indica o quão bem uma resposta está fundamentada nas fontes fornecidas.
Metadados de fundamentação: metadados sobre a origem da fundamentação. Os metadados de fundamentação contêm as seguintes informações:
Suporte de fragmentos: uma lista de fragmentos que suportam a resposta. A cada fragmento de apoio técnico é atribuído um índice de fragmento de apoio técnico útil para rastrear a proveniência. Cada bloco de apoio técnico contém o seguinte:
- Texto do fragmento: uma parte do texto citado literalmente da fonte da qual a resposta ou uma parte da resposta (denominada texto da reivindicação) é extraída. Esta opção pode nem sempre estar presente na resposta.
- Origem: um índice atribuído à origem no pedido.
Metadados de origem: metadados sobre o fragmento. Consoante a origem, os metadados de origem podem ser qualquer um dos seguintes:
- Para uma origem incorporada, os metadados podem ser os detalhes adicionais especificados no pedido, como o título, o autor ou o URI.
- Para o repositório de dados do Vertex AI Search, os metadados podem ser o ID do documento, o título do documento, o URI (localização do Cloud Storage) ou o número da página.
- Para a fundamentação com a Pesquisa Google, quando é gerado um resultado fundamentado, os metadados contêm um URI que redireciona para o publicador do conteúdo que foi usado para gerar o resultado fundamentado. Os metadados também contêm o domínio da editora. Os URIs fornecidos permanecem acessíveis durante um máximo de 30 dias após a geração do resultado fundamentado.
Apoio técnico de fundamentação: informações de fundamentação para uma afirmação na resposta. O apoio técnico de fundamentação contém as seguintes informações:
- Texto da reivindicação: a resposta ou uma parte da resposta que é fundamentada com o texto do fragmento de apoio técnico.
- Support chunk index: um índice atribuído ao fragmento de apoio técnico na ordem em que o fragmento aparece na lista de fragmentos de apoio técnico.
- Consultas de pesquisa na Web: as consultas de pesquisa sugeridas para as sugestões da Pesquisa Google.
- Sugestões de pesquisa: se receber
sugestões de pesquisa do Google com uma resposta, essa resposta é um
"resultado fundamentado" sujeito aos termos de serviço para fundamentação 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 o artigo Use as sugestões da Pesquisa Google.
Gerar uma resposta fundamentada num único turno
Esta secção descreve como gerar respostas baseadas nas seguintes fontes:
Fundamente a resposta no texto inline e no arquivo de dados do Vertex AI Search
O exemplo seguinte mostra como enviar texto de comando especificando um texto inline e um arquivo de dados do Vertex AI Search como a origem de fundamentação.
Não pode especificar um arquivo de dados de pesquisa de Websites como a origem de fundamentação.
Esta amostra usa o método generateGroundedContent
.
REST
Envie o comando no seguinte pedido 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 o seguinte:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT
: o comando do utilizador.SYSTEM_INSTRUCTION
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional.FACT_TEXT_N
: o texto inline para fundamentar a resposta. Pode fornecer um máximo de 100 textos de factos.TITLE_N
: um campo opcional para definir o meta atributo do título para o texto inline.URI_N
: um campo opcional para definir o atributo meta URI para o texto inline.AUTHOR_N
: um campo opcional para definir o meta atributo do autor para o texto inline.APP_ID_N
: o ID da app Vertex AI Search.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que quer usar para gerar a resposta fundamentada. Para ver uma lista dos IDs dos modelos disponíveis, consulte o artigo Modelos suportados.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. A Google recomenda uma temperatura de 0,0. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de top-P para o modelo. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K para o modelo. Para mais informações, consulte os 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 fragmento devolvido. Se não for possível determinar o idioma a partir da consulta, este campo é usado. O valor predefinido éen
. Para ver uma lista de códigos de idiomas, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Introduza o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Introduza o valor em graus decimais, por exemplo,131.04
.
Exemplo de geração de respostas de interação única baseada em texto inline e na Vertex AI Search
No exemplo seguinte, o pedido especifica as seguintes
origens de fundamentação: um facto de texto inline e um repositório de dados
da Vertex AI Search. 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 } } }'
Gere uma resposta fundamentada com a Pesquisa Google
Pode fundamentar as respostas geradas com dados da Web disponíveis publicamente.
Obtenção dinâmica
Pode usar a obtenção dinâmica no seu pedido para escolher quando desativar a fundamentação com a Pesquisa Google. Isto é útil quando o comando não requer uma resposta fundamentada na Pesquisa Google e os modelos suportados podem fornecer uma resposta com base nos respetivos conhecimentos sem fundamentação. Isto ajuda a gerir a latência, a qualidade e o custo de forma mais eficaz.
Limite e pontuação de previsão de obtenção dinâmica
Quando envia um pedido para gerar uma resposta fundamentada, as aplicações de IA atribuem uma classificação de previsão ao comando. A pontuação de previsão é um valor de vírgula flutuante no intervalo [0,1]. O seu valor depende de a instrução poder beneficiar da fundamentação da resposta com as informações mais atualizadas da Pesquisa Google. Por conseguinte, um comando que requer uma resposta baseada nos factos mais recentes na Web tem uma pontuação de previsão mais elevada, e um comando para o qual uma resposta gerada pelo modelo é suficiente tem uma pontuação de previsão mais baixa.
Seguem-se exemplos de alguns comandos e as respetivas classificações de previsão.
Comando | Pontuação de previsão | Comentário |
---|---|---|
"Escreve um poema sobre peónias" | 0,13 | O modelo pode basear-se nos seus conhecimentos e a resposta não precisa de fundamentação |
"Sugere um brinquedo para uma criança de 2 anos" | 0,36 | O modelo pode basear-se nos seus conhecimentos e a resposta não precisa de fundamentação |
"Podes dar-me uma receita de guacamole de inspiração asiática?" | 0,55 | A Pesquisa Google pode dar uma resposta fundamentada, mas o fundamento não é estritamente necessário. O conhecimento do modelo pode ser suficiente |
"O que são as aplicações de IA? Como é faturada a fundamentação nas aplicações de IA?" | 0,72 | Requer que a Pesquisa Google gere uma resposta bem fundamentada |
"Quem venceu o último Grande Prémio de F1?" | 0.97 | Requer que a Pesquisa Google gere uma resposta bem fundamentada |
No seu pedido de geração de respostas fundamentadas, pode especificar uma configuração de obtenção dinâmica com um limite. O limite é um valor de vírgula flutuante no intervalo [0,1] e é predefinido como 0,7. Se o valor do limite for zero, a resposta é sempre baseada na Pesquisa Google. Para todos os outros valores de limite, aplica-se o seguinte:
- Se a pontuação de previsão for igual ou superior ao limite, a resposta é fundamentada na Pesquisa Google. Um limite inferior implica que mais comandos têm respostas geradas com base na fundamentação com a Pesquisa Google.
- Se a pontuação de previsão for inferior ao limite, o modelo pode continuar a gerar a resposta, mas não está fundamentada na Pesquisa Google.
Para encontrar um bom limite que se adeque às necessidades da sua empresa, pode criar um conjunto representativo de consultas que espera encontrar. Em seguida, pode ordenar as consultas de acordo com a pontuação de previsão na resposta e selecionar um bom limite para o seu exemplo de utilização.
Fundamente a resposta com a Pesquisa Google
O exemplo seguinte mostra como gerar uma resposta fundamentada a partir de um comando especificando a Pesquisa Google como fonte de fundamentação. Este exemplo usa o método
generateGroundedContent
.
REST
Envie o comando no seguinte pedido 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 o seguinte:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT
: o comando do utilizador.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 obtenção dinâmica. É um valor de vírgula flutuante no intervalo [0,1]. Se adicionar o campodynamicRetrievalConfig
, mas não definir o campopredictor
outhreshold
, o valor limite é predefinido como 0,7. Se não definir o campodynamicRetrievalConfig
, a resposta é sempre fundamentada.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que quer usar para gerar a resposta fundamentada. Para ver uma lista dos IDs dos modelos disponíveis, consulte o artigo Modelos suportados.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. A Google recomenda uma temperatura de 0,0. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de top-P para o modelo. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K para o modelo. Para mais informações, consulte os 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 fragmento devolvido. Se não for possível determinar o idioma a partir da consulta, este campo é usado. O valor predefinido éen
. Para ver uma lista de códigos de idiomas, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Introduza o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Introduza o valor em graus decimais, por exemplo,131.04
.
Exemplo de geração de respostas únicas baseadas na Pesquisa Google
No exemplo seguinte, o pedido especifica a Pesquisa Google como a
fonte de base. 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 fundamentada em várias interações
Na geração de respostas em várias fases, em cada pedido, tem de enviar todo o texto trocado entre o utilizador e o modelo em todas as fases anteriores. Isto garante a continuidade e mantém o contexto para gerar a resposta ao comando mais recente.
Para obter uma resposta fundamentada através da geração de respostas em várias interações, faça o seguinte:
REST
Os exemplos seguintes mostram como enviar texto de comando de seguimento em vários turnos. Estes exemplos usam o método generateGroundedContent
e fundamentam as respostas com a Pesquisa Google.
Pode usar passos semelhantes para gerar respostas fundamentadas com outras origens de fundamentação.
Envie o primeiro comando no seguinte pedido 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 o seguinte:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT_TURN_1
: o texto do comando do utilizador no primeiro turno.SYSTEM_INSTRUCTION_TURN_1
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para a geração de respostas com várias interações, tem de fornecer as instruções do sistema para cada interação.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que quer usar para gerar a resposta fundamentada. Para ver uma lista dos IDs dos modelos disponíveis, consulte o artigo Modelos suportados.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. A Google recomenda uma temperatura de 0,0. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de top-P para o modelo. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K para o modelo. Para mais informações, consulte os 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 fragmento devolvido. Se não for possível determinar o idioma a partir da consulta, este campo é usado. O valor predefinido éen
. Para ver uma lista de códigos de idiomas, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Introduza o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Introduza o valor em graus decimais, por exemplo,131.04
.
Envie o segundo comando como acompanhamento. Adicione o primeiro comando do utilizador seguido da respetiva resposta 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 o seguinte:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT_TURN_1
: o texto do comando do utilizador no primeiro turno.ANSWER_TEXT_TURN_1
: o texto da resposta do modelo no primeiro turno.PROMPT_TEXT_TURN_2
: o texto do comando do utilizador no segundo turno.SYSTEM_INSTRUCTION_TURN_2
: um campo opcional para fornecer um preâmbulo ou algum contexto adicional. Para a geração de respostas com várias interações, tem de fornecer as instruções do sistema para cada interação.MODEL_ID
: um campo opcional para definir o ID do modelo Gemini que quer usar para gerar a resposta fundamentada. Para ver uma lista dos IDs dos modelos disponíveis, consulte o artigo Modelos suportados.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. A Google recomenda uma temperatura de 0,0. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de top-P para o modelo. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K para o modelo. Para mais informações, consulte os 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 fragmento devolvido. Se não for possível determinar o idioma a partir da consulta, este campo é usado. O valor predefinido éen
. Para ver uma lista de códigos de idiomas, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Introduza o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Introduza o valor em graus decimais, por exemplo,131.04
.
Repita este processo para obter mais respostas de seguimento. Em cada turno, adicione todos os comandos anteriores do utilizador, seguidos das respetivas respostas do modelo.
Exemplo de geração de respostas com várias interações
No exemplo seguinte, o pedido especifica três textos factuais incorporados
como a origem de fundamentação 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 no primeiro turno com um emoji de cara sorridente.
REST
Envie o primeiro comando no seguinte pedido 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 utilizador seguido da respetiva resposta 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" } }'
Faça stream de respostas fundamentadas
Pode optar por transmitir as respostas do modelo. Isto é útil nos exemplos de utilização em que a resposta é especialmente longa e o envio da resposta completa de uma só vez causa um atraso significativo. O streaming da resposta divide a resposta num conjunto de vários candidatos que contêm partes sequenciais do texto da resposta.
Para obter uma resposta fundamentada e transmitida, faça o seguinte:
REST
O exemplo seguinte mostra como transmitir uma resposta fundamentada.
Este exemplo usa o método streamGenerateGroundedContent
e fundamenta a resposta com a Pesquisa Google sem a configuração de obtenção dinâmica. Pode usar passos semelhantes
para gerar respostas fundamentadas com outras fontes de fundamentação.
Envie o comando no seguinte pedido 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 o seguinte:
PROJECT_NUMBER
: o número do seu projeto Google Cloud .PROMPT_TEXT
: o comando do utilizador.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 quer usar para gerar a resposta fundamentada. Para ver uma lista dos IDs dos modelos disponíveis, consulte o artigo Modelos suportados.TEMPERATURE
: um campo opcional para definir a temperatura usada para a amostragem. A Google recomenda uma temperatura de 0,0. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_P
: um campo opcional para definir o valor de top-P para o modelo. Para mais informações, consulte os parâmetros do modelo Gemini.TOP_K
: um campo opcional para definir o valor top-K para o modelo. Para mais informações, consulte os 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 fragmento devolvido. Se não for possível determinar o idioma a partir da consulta, este campo é usado. O valor predefinido éen
. Para ver uma lista de códigos de idiomas, consulte Idiomas.LATITUDE
: um campo opcional para definir a latitude. Introduza o valor em graus decimais, por exemplo,-25.34
.LONGITUDE
: um campo opcional para definir a longitude. Introduza o valor em graus decimais, por exemplo,131.04
.
Exemplo de respostas fundamentadas em streaming
No exemplo seguinte, o pedido especifica a Pesquisa Google como a fonte de base para transmitir uma resposta sem a configuração de obtenção dinâmica. A resposta transmitida é distribuída por vários candidatos a respostas. Esta amostra 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 suportados
Os seguintes modelos suportam a fundamentação:
- Gemini 1.5 Pro apenas com entrada de texto
- Gemini 1.5 Flash com entrada de texto apenas
Para saber mais acerca destes modelos Gemini, consulte o artigo Versões e ciclo de vida do modelo Gemini.
Quando chama o método generateGroundedContent
, pode usar os seguintes IDs de modelos:
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 |
O que se segue?
Saiba como usar o método de geração fundamentada com outras APIs RAG para gerar respostas fundamentadas a partir de dados não estruturados.