Você pode conectar o Gemini às suas fontes de dados externas usando a API Search. Assim, você pode usar qualquer serviço de pesquisa como fonte de embasamento para o Gemini, o que ajuda a garantir que as respostas sejam baseadas nas informações mais recentes e relevantes dos seus sistemas. Isso é especialmente útil para dados específicos da empresa que não estão disponíveis publicamente.
Nesta página, explicamos como configurar e usar o embasamento com qualquer API de pesquisa e o Gemini.
Como o embasamento com sua API Search funciona
Quando você faz o embasamento com sua API de pesquisa, o Gemini pode consultar um endpoint de API externa que você fornece. Assim, o Gemini pode usar sua funcionalidade de pesquisa personalizada como uma ferramenta para melhorar as respostas. Ele permite interações mais dinâmicas e contextualizadas, já que o modelo pode buscar informações nas fontes de dados especificadas quando necessário.
Durante uma solicitação de geração, o Gemini pode fazer uma chamada para o endpoint de API externa com uma consulta de pesquisa. Em seguida, sua API vai retornar snippets de dados relevantes. O Gemini usa esses snippets como uma fonte de verdade para gerar uma resposta mais precisa e embasada.
É possível combinar o embasamento usando sua API de pesquisa com outras fontes, como a Pesquisa Google. Uma solicitação de geração aceita até 10 fontes de embasamento e consultas com várias ferramentas em que o Gemini pode aproveitar diferentes fontes de informação para gerar a melhor resposta possível.
Modelos compatíveis
Os seguintes modelos são compatíveis com o embasamento usando sua API:
Para mais informações, consulte Modelos do Gemini.
Antes de começar
Para usar o embasamento com a API Search, faça o seguinte:
- Verifique se a API Vertex AI está ativada no seu projeto Google Cloud.
- Se você planeja seguir o guia de configuração detalhado para criar um novo endpoint de API Search, verifique se a Google Cloud CLI está instalada e inicializada.
Requisitos da API Search
Para usar sua infraestrutura de pesquisa atual com o Gemini, o endpoint de API precisa atender aos seguintes requisitos:
Esquema da API
- Método HTTP:
POST
Corpo da solicitação (do Gemini para sua API):
{ "query": "the user's search query string" }
Corpo da resposta (da sua API para o Gemini): uma matriz JSON de objetos. Cada objeto representa um resultado da pesquisa e precisa conter os campos "snippet" e "uri".
[ { "snippet": "A text snippet containing the answer or relevant information.", "uri": "A URI/URL linking to the source of the information, or a relevant identifier." }, { "snippet": "Another piece of information.", "uri": "https://example.com/another-source" } ]
Se nenhum resultado for encontrado, o endpoint de API vai retornar uma matriz vazia.
Autenticação
O embasamento com sua API de pesquisa é compatível com o uso da chave de API, que protege
o endpoint de API. O Gemini envia essa chave de API como um parâmetro de consulta
chamado key
.
Usar o embasamento com sua API de pesquisa e um endpoint compatível
Se você já tiver um endpoint de API que atenda aos requisitos de esquema e autenticação, poderá configurá-lo diretamente nas chamadas da API Gemini.
Configurar a ferramenta externalApi
Ao fazer uma solicitação para a API Gemini, inclua o parâmetro "tools"
com uma ferramenta de recuperação configurada para o externalApi
. Os campos principais incluem:
api_spec: "SIMPLE_SEARCH"
: informa ao Gemini para usar o esquema de entrada e saída predefinido.endpoint
: o URL completo do endpoint do API Gateway, comohttps://YOUR_GATEWAY_HOSTNAME/v0/search
.apiAuth.apiKeyConfig.apiKeyString
: a chave de API que o Gemini usa para autenticar com sua API. O Gemini anexa essa chave como?key=<YOUR_API_KEY>
ao URL do endpoint.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- LOCATION: a região para processar a solicitação, como
us-central1
. - PROJECT_ID: o ID do seu projeto Google Cloud .
- MODEL_ID: o ID de um modelo compatível do Gemini, como
gemini-2.0-flash-001
. - USER_PROMPT: as instruções de texto a serem incluídas no comando.
- EXTERNAL_API_ENDPOINT: o URL completo do endpoint seguro do gateway de API que o Gemini chama, como
https://YOUR_GATEWAY_HOSTNAME/v0/search
. Esse endpoint precisa obedecer ao esquema de API especificado. - EXTERNAL_API_KEY: a chave de API que você gerou e configurou para seu gateway de API. O Gemini usa essa chave para autenticar com seu endpoint.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
Solicitar corpo JSON:
{
"contents": [{
"role": "user",
"parts": [{
"text": "USER_PROMPT"
}]
}],
"tools": [{
"retrieval": {
"externalApi": {
"api_spec": "SIMPLE_SEARCH",
"endpoint": "EXTERNAL_API_ENDPOINT",
"apiAuth": {
"apiKeyConfig": {
"apiKeyString": "EXTERNAL_API_KEY"
}
}
}
}
}]
}
Para enviar a solicitação, use uma destas opções:
curl
O comando a seguir pressupõe que você fez login na CLI gcloud com sua conta de usuário executando gcloud CLI init ou gcloud CLI auth login ou usando o Cloud Shell, que faz login automaticamente na CLI gcloud. É possível verificar a conta ativa executando CLI gcloud auth list.
Salve o corpo da solicitação em um arquivo chamado request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"
Powershell
O comando a seguir pressupõe que você fez login na CLI gcloud com sua conta de usuário executando gcloud CLI init ou gcloud CLI auth login. Para verificar a conta ativa, execute CLI gcloud auth list.
Salve o corpo da solicitação em um arquivo chamado request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "You can make an appointment on the website https://dmv.gov/"
}
]
},
"finishReason": "STOP",
"safetyRatings": [
"..."
],
"groundingMetadata": {
"retrievalQueries": [
"How to make appointment to renew driving license?"
],
"groundingChunks": [
{
"retrievedContext": {
"uri": "https://...",
"snippet": "Snippet text about driving license renewal"
}
}
],
"groundingSupport": [
{
"segment": {
"startIndex": 25,
"endIndex": 147
},
"segment_text": "ipsum lorem ...",
"supportChunkIndices": [1, 2],
"confidenceScore": [0.9541752, 0.97726375]
},
{
"segment": {
"startIndex": 294,
"endIndex": 439
},
"segment_text": "ipsum lorem ...",
"supportChunkIndices": [1],
"confidenceScore": [0.9541752, 0.9325467]
}
]
}
}
],
"usageMetadata": {
"..."
}
}
Configurar um endpoint de API de pesquisa
Se você não tiver um endpoint de API que atenda aos requisitos, esta seção vai orientar você na configuração de um usando o Cloud Functions e o API Gateway.
Criar seu wrapper de API externa com o Cloud Functions
Uma função do Cloud pode atuar como um intermediário que recebe consultas do Gemini, emite consultas adequadas para sua infraestrutura de pesquisa atual, como um banco de dados, um mecanismo de pesquisa interno ou uma pesquisa vetorial, e formata os resultados no esquema que o Gemini entende.
Para mais informações, consulte a documentação das funções do Cloud Run.
Exemplo de configuração de função do Cloud (Python)
Este exemplo usa uma lista de produtos codificada para demonstração. Você vai precisar substituir a lógica de recuperação de dados por chamadas ao seu sistema de pesquisa real.
main.py
import functions_framework import json from flask import jsonify @functions_framework.http def custom_search_wrapper_minimal(request): """ HTTP Cloud Function to provide a minimal, fixed response for Gemini grounding. """ if request.method != 'POST': return 'Only POST requests are accepted', 405 request_json = request.get_json(silent=True) if not request_json or 'query' not in request_json: return jsonify({"error": "Invalid request. JSON body with 'query' field is required."}), 400 user_query = request_json['query'] print(f"Received query: '{user_query}'. Responding with fixed data.") # --- FIXED RESPONSE --- # This is a hardcoded response. In a real scenario, you would # use the 'user_query' to fetch relevant data. fixed_results = [ { "snippet": "This is a fixed snippet from your custom Search API. The original query was: " + user_query, "uri": "https://example.com/docs/fixed-test-data" }, { "snippet": "Another piece of fixed information to demonstrate the list format.", "uri": "https://example.com/another-fixed-source" } ] # --- END OF FIXED RESPONSE --- return jsonify(fixed_results)
requirements.py
functions-framework>=3.0.0 Flask>=2.0.0
Implantação: navegue até o diretório que contém
main.py
erequirements.txt
e execute:gcloud functions deploy custom_search_wrapper \ --runtime python311 \ --trigger-http \ --entry-point custom_search_wrapper \ --region YOUR_REGION \ --allow-unauthenticated \ --gen2
- Substitua YOUR_REGION pela região Google Cloud escolhida, como
us-central1
. --allow-unauthenticated
é especificado porque o gateway de API processa a autenticação.
- Substitua YOUR_REGION pela região Google Cloud escolhida, como
Proteger o Cloud Functions com o gateway de API e uma chave de API
O API Gateway oferece um ponto de entrada gerenciado e seguro para seus Cloud Functions e permite aplicar a autenticação de chave de API.
Para mais informações, consulte a documentação do API Gateway.
Crie uma especificação OpenAPI (
openapi-spec.yaml
): esse arquivo define como o gateway de API expõe suas Cloud Functions. Ele especifica que o gateway espera uma solicitaçãoPOST
para o caminho/v0/search
e exige uma chave de API enviada como um parâmetro de consulta chamadokey
.swagger: '2.0' info: title: Custom Search API for Gemini Grounding description: Wraps an internal search function, secured by API Key for Gemini. version: 1.0.0 schemes: - https produces: - application/json consumes: - application/json paths: /v0/search: # TODO: This will be part of API endpoint URL change if necessary post: summary: Custom search endpoint for Gemini operationId: customSearchForGemini # TODO: Change if needed x-google-backend: address: YOUR_CLOUD_FUNCTION_TRIGGER_URL # TODO: Replace with your Cloud Function trigger URL parameters: - name: body in: body required: true schema: type: object properties: query: type: string security: - api_key_query: [] responses: '200': description: Search results schema: type: array items: type: object properties: snippet: type: string uri: type: string '400': description: Invalid request '401': description: Unauthorized (Missing or invalid API key) '500': description: Internal server error securityDefinitions: api_key_query: type: apiKey name: key # Gemini will send its API key using this query parameter name in: query
Implante o API Gateway: depois de substituir as seguintes variáveis, execute os comandos da CLI gcloud:
- YOUR_PROJECT_ID: o ID do projeto do Google Cloud .
- YOUR_REGION: a região Google Cloud que você
usou para o Cloud Functions, como
us-central1
.
# 1. Create an API gcloud api-gateway apis create custom-search-gemini-api --project=YOUR_PROJECT_ID # 2. Create an API Config from your OpenAPI spec gcloud api-gateway api-configs create v1 \ --api=custom-search-gemini-api \ --openapi-spec=openapi-spec.yaml \ --project=YOUR_PROJECT_ID \ --display-name="Version 1" # 3. Create a Gateway gcloud api-gateway gateways create custom-search-gateway \ --api=custom-search-gemini-api \ --api-config=v1 \ --location=YOUR_REGION \ --project=YOUR_PROJECT_ID
Após a implantação, o nome do host (URL do gateway) tem o seguinte formato:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev
Você pode usar o nome do host para criar o URL completo do endpoint do Gemini. Exemplo:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev/v0/search
Criar e restringir uma chave de API: você precisa criar uma chave de API que o Gemini usa para acessar seu endpoint do API Gateway. Para mais informações, consulte Gerenciar chaves de API.
Para criar e restringir uma chave de API, faça o seguinte:
No console Google Cloud , acesse a página Gateway de API / Ativar APIs.
Se a API API Gateway não estiver ativada, clique em Iniciar e em Ativar.
Selecione Credenciais.
Clique em Criar credenciais e selecione Chave de API.
Clique em Mostrar chave e copie a chave de API gerada. Armazene a chave em um local seguro. Essa chave é usada pelo Gemini.
Clique em Editar chave de API ou no nome da chave.
Na seção Restrições de API, faça o seguinte:
Selecione a opção Restringir chave.
Selecione o serviço gerenciado do gateway de API. Ele precisa ter o nome da sua API, como
Custom Search API for Gemini Grounding API
.Se a chave não estiver incluída ou se você pretende gerenciar o gateway com a API usando essa chave, verifique se a API API Gateway (
apigateway.googleapis.com
) está selecionada. Para o embasamento, a chave precisa de acesso ao serviço de API específico hospedado pelo gateway de API.
Clique em Salvar. O endpoint do gateway de API está protegido e, ao usá-lo, é necessário transmitir a chave de API como um parâmetro de consulta. Exemplo:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev/v0/search?key=YOUR_GENERATED_API_KEY
Considerações sobre a API Search
Considere o seguinte para escolher a API de pesquisa:
- Qualidade do snippet: o texto do snippet retornado pela sua API é crucial. Ele precisa ser conciso, mas informativo o suficiente para o Gemini usar como base factual para a resposta.
- Latência: sua API de pesquisa precisa responder rapidamente. A alta latência na sua API aumenta o tempo de resposta geral do Gemini.
- Tratamento de erros: implemente um tratamento de erros robusto nas suas Cloud Functions ou na API Search. Se a API apresentar erros ou expirar com frequência, isso vai afetar negativamente a capacidade do Gemini de gerar respostas embasadas.