Nesta página, apresentamos a recuperação com agente e explicamos como usá-la com o método stream answers.
Sobre a recuperação agêntica
A recuperação com agente usada com o método de respostas de stream pode gerar resultados melhores para determinados casos de uso, por exemplo, para ativar a recuperação de várias passagens em apps com vários repositórios de dados ou para personalizar a geração de respostas para diferentes classes de consultas.
Usar a recuperação com agente adiciona alguma complexidade aos seus apps, mas, em troca, oferece mais controle sobre os resultados.
A Pesquisa de agentes inclui um agente predefinido que pode ser usado para personalizar o comportamento de um mecanismo de pesquisa. Isso permite mais personalização do que está disponível na interface de configurações do app ou no método resposta de streaming sem recuperação de agente.
Pesquisa combinada com e sem recuperação agêntica
A recuperação com agente é particularmente útil para apps de pesquisa combinada. Sem a recuperação agêntica, a pesquisa usa uma distribuição de dados de passagem única que consulta todos os seus repositórios de dados de uma só vez. Em contraste, a recuperação com agentes permite a pesquisa de várias passagens. O agente planeja e executa pesquisas sequencialmente, escolhendo as melhores ferramentas para cada etapa. Ele pode combinar resultados de vários repositórios de dados da Pesquisa do agente e usar ferramentas como a Pesquisa Google e o Google Maps.
Por exemplo, você tem repositórios de dados separados para políticas globais da empresa e detalhes do escritório regional. Um usuário pergunta: "Quais são as regras de compliance do nosso escritório em Tóquio?"
Sem recuperação com agente: consulta simultaneamente o repositório de políticas e o repositório do escritório regional com a string de consulta completa. Isso pode retornar resultados fragmentados.
Com a recuperação de agente: o agente planeja a execução. Primeiro, ele recupera detalhes sobre o escritório de Tóquio na loja regional. Em seguida, usando esse contexto específico, ele realiza uma segunda pesquisa segmentada no repositório de políticas.
O agente sintetiza essas descobertas em uma resposta única, coerente e mais precisa.
A recuperação agêntica também permite fazer consultas de pesquisa em vários turnos (perguntas de acompanhamento) em apps de pesquisa combinada. Sem a recuperação com agente, a pesquisa em várias etapas funciona apenas com apps de repositório de dados único. Para manter o contexto da conversa em várias interações, combine a recuperação agêntica com uma sessão da plataforma do agente (opcional).
Classificação de consultas personalizadas
Os métodos answer e streaming answer
fornecem dois tipos de classificação de consulta: ADVERSARIAL_QUERY e NON_ANSWER_SEEKING_QUERY.
Com a recuperação generativa, você pode definir outros tipos de classificação para corresponder aos fluxos de trabalho da sua empresa. O sistema usa um classificador para determinar a intenção do usuário e encaminha a solicitação para a configuração de agente adequada.
Por exemplo, da consulta, você determina que a intenção é rastrear um pedido e especificou uma classificação TRACK_ORDER. Em vez de executar uma pesquisa genérica em todos os repositórios de dados, o sistema carrega um agente especializado equipado com as ferramentas e os dados necessários para recuperar o status do envio.
Como ativar e usar a recuperação com agentes
Há duas maneiras de ativar a recuperação com agente:
Agente de respostas predefinido do Google:se você já tiver um app de pesquisa na Pesquisa do agente, poderá ativar a recuperação de agente definindo
enable_agent_invocation=trueem solicitações de API ao enviar consultas para o app. Nesse caso, você mantém a configuração de veiculação de pesquisa atual.App personalizado no modo de IA:ao criar um app da Pesquisa do agente, você define um tipo diferente de configuração de veiculação, a configuração de veiculação
default_agent_answer. Isso também pode ser chamado de mecanismo personalizado do modo de IA, porque "app" e "mecanismo" são usados de forma intercambiável na Pesquisa do agente.
Antes de começar
Antes de usar a recuperação com agente, faça o seguinte:
Configurar um mecanismo de raciocínio para sessões de várias rodadas
Para manter o contexto da conversa em várias interações, crie um Agent Runtime na plataforma de agentes do Gemini Enterprise engine (também chamado de mecanismo de raciocínio).
Ao fazer uma solicitação streamAnswer, transmita o nome do recurso do
tempo de execução do agente como o campo reasoningEngine na
solicitação streamAnswer.
Ative a plataforma de agente no seu projeto do Google Cloud .
Crie uma instância do Agent Runtime (também chamada de mecanismo de raciocínio) usando a API REST do Agent Engine (ou o Kit de Desenvolvimento de Agente). A instância hospeda as sessões usadas pelo método
streamAnswer.O nome do recurso da instância tem o formato:
projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
Conceda ao agente de serviço do Discovery Engine acesso ao mecanismo de raciocínio atribuindo o papel
roles/aiplatform.reasoningEngineServiceAgentà conta de serviço do Discovery Engine:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
em que
PROJECT_NUMBERé o número do projeto que hospeda o mecanismo de inferência. Essa permissão permite que o back-end de resposta de streaming crie, leia e adicione eventos a sessões em seu nome.Revise as cotas aplicáveis. As sessões com suporte do Agent Runtime consomem cotas da API Agent Platform. As cotas relevantes são:
aiplatform.googleapis.com/session_write_requests: criar, excluir ou atualizar sessões do ambiente de execução do agente por minuto.aiplatform.googleapis.com/session_event_append_requests— adiciona um evento às sessões do Agent Runtime por minuto.
Para mais informações, consulte Cotas do Agent Engine da plataforma de agentes do Gemini Enterprise.
Anote o nome do recurso do ambiente de execução do agente porque você precisa transmiti-lo como o campo
reasoningEnginena solicitaçãostreamAnswer.
Opcional: configurar um app personalizado no modo de IA
Por padrão, a recuperação com agente usa o agente de respostas do Google predefinido. Isso classifica as consultas em intents DEFAULT_ANSWER_SEEKING e DO_NOT_ANSWER.
Você pode criar um app personalizado no modo de IA quando quiser personalizar ferramentas ou adicionar
suporte para novas classes de intents de consulta. Cada intent personalizada (ou frame)
declara as condições em que o agente classifica uma consulta na intent
e as instruções e ferramentas que ele usa para processá-la.
Crie o mecanismo usando o método REST
engines.createcom um blocoengine_config.answer_agent.A configuração é estruturada da seguinte maneira:
engine { name: "YOUR_AI_MODE_ENGINE" display_name: "YOUR_AI_MODE_ENGINE_DISPLAY_NAME" engine_config { answer_agent { frames { vertical_intent: "YOUR_CUSTOM_INTENT" vertical_intent_prompt { instructions: "Instructions for when to classify a user query as YOUR_CUSTOM_INTENT." } initial_prompt { instructions: "Instructions for the agent on how to process a user query classified as YOUR_CUSTOM_INTENT." tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_1" page_size: 10 } tool_description: "This tool can help search corpus 1." } tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_2" page_size: 10 } tool_description: "This tool can help search corpus 2." } } } } } } engine_id: "SAMPLE_MULTI_SEARCH_RETRIEVAL"
Depois de criar o mecanismo, encaminhe as solicitações pela configuração de veiculação
default_agent_answerdele:projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
Para receber ajuda com o design ou registro de um app personalizado no modo de IA, entre em contato com o suporte.
Transmitir uma resposta usando a recuperação agêntica
O comando a seguir mostra como chamar o método streaming answer com a recuperação generativa ativada. Semelhante à saída sem recuperação generativa, essa chamada transmite uma resposta gerada na forma de uma série de respostas JSON.
Se você configurou um mecanismo de raciocínio, inclua o nome do recurso dele no campo reasoningEngine para manter a sessão em todas as interações.
REST
Para pesquisar e receber resultados com uma resposta gerada transmitida, faça o seguinte:
Execute o seguinte comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/SERVING_CONFIG_ID:streamAnswer" \ -d '{ "query": { "text": "QUERY" }, "session": "SESSION", "enableAgentInvocation": true, "userPseudoId": "USER_PSEUDO_ID", "reasoningEngine": "projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID" }'Substitua:
PROJECT_ID: o ID do seu projeto do Google Cloud .APP_ID: o ID do app Pesquisa do agente que você quer consultar.SERVING_CONFIG_ID: para usar um app personalizado no modo de IA, defina comodefault_agent_answer. Para usar o agente de respostas do Google predefinido, defina comodefault_search.PROJECT_NUMBER: o número do projeto que hospeda o mecanismo de raciocínio.QUERY: uma string de texto livre que contém a pergunta ou consulta de pesquisa.SESSION: se você estiver continuando uma conversa de várias rodadas, este será o nome do recurso de sessão retornado na resposta da rodada anterior, por exemplo,projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID. Se não estiver continuando uma conversa, defina como-, um hífen.USER_PSEUDO_ID: um identificador exclusivo usado para rastrear o visitante.LOCATION_ID: o local do seu mecanismo de raciocínio, por exemplo,us-central1.REASONING_ENGINE_ID: o ID da instância do Agent Engine que você criou.
Python
Para mais informações, consulte a documentação de referência da API Python do Agent Search.
Para autenticar na Pesquisa do agente, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
O exemplo a seguir usa o cliente Python do Discovery Engine (v1alpha) para chamar stream_answer_query com a invocação do agente ativada. Transmita o campo reasoning_engine para sessões de várias rodadas.
from google.api_core.client_options import ClientOptions from google.cloud import discoveryengine_v1alpha def run_stream_answer_query(): PROJECT_ID = "YOUR_PROJECT_ID" LOCATION = "global" # or a specific region COLLECTION_ID = "default_collection" ENGINE_ID = "YOUR_ENGINE_ID" # Use "default_search" for the predefined Google answer agent, or # "default_agent_answer" if you have configured a custom AI_MODE app. SERVING_CONFIG_ID = "default_search" USER_ID = "user-id" QUERY_TEXT = "YOUR_QUERY_TEXT" REASONING_ENGINE_ID = "YOUR_REASONING_ENGINE_ID" # Use "-" to start a new session, or pass the sessionId returned in # the previous turn's response to continue an existing session. SESSION_ID = "-" SESSION_REF = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/sessions/{SESSION_ID}" ) SERVING_CONFIG_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/servingConfigs/{SERVING_CONFIG_ID}" ) REASONING_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/" f"reasoningEngines/{REASONING_ENGINE_ID}" ) client_options = ClientOptions( api_endpoint="discoveryengine.googleapis.com" ) client = discoveryengine_v1alpha.ConversationalSearchServiceClient( client_options=client_options ) request = discoveryengine_v1alpha.AnswerQueryRequest( query=discoveryengine_v1alpha.Query(text=QUERY_TEXT), serving_config=SERVING_CONFIG_ENGINE, user_pseudo_id=USER_ID, enable_agent_invocation=True, session=SESSION_REF, reasoning_engine=REASONING_ENGINE, ) print(f"Starting StreamAnswerQuery agentic session with: {request}") stream = client.stream_answer_query(request) try: for response in stream: print(f"Received response: {response}") except Exception as e: print(f"Error during streaming: {e}") if __name__ == "__main__": run_stream_answer_query()
Instalar a versão de prévia do SDK do Discovery Engine
O SDK do Discovery Engine facilita a interação com os serviços Google Cloud nos seus aplicativos. O SDK ajuda no tratamento de erros e na autenticação, além de oferecer recursos como novas tentativas automáticas, tratamento de paginação e gerenciamento operação de longa duração.
Como o recurso de recuperação com agente está em uma lista de permissões, o SDK que você precisa para trabalhar com ele é diferente das bibliotecas de cliente do Discovery Engine disponíveis para todos.
Para acessar a versão de prévia do SDK do Discovery Engine, faça o seguinte:
Entre em contato com o suporte para acessar a pasta do Google Drive com a prévia do SDK.
Baixe o pacote para seu idioma.
Alterações na API
Como esse recurso está em uma lista de permissões, a documentação de referência da API na página do método streaming answer não mostra todos os campos disponíveis e necessários para usar a recuperação de agente com o método stream answer. Os campos ausentes são documentados da seguinte forma.
Campos do corpo da solicitação
enableAgentInvocation(booleano): definatruepara mudar para o processamento com agente usando a configuração de veiculação de pesquisa atual. Esse campo é opcional se você estiver especificando uma configuração de veiculaçãoanswer_agentcom um app de modo de IA personalizado.reasoningEngine(string): o nome do recurso do ambiente de execução do agente que hospeda as sessões do agente, formatado comoprojects/*/locations/*/reasoningEngines/*.
Campos de resposta
Quando a recuperação com agente está ativada, cada
Answer.Reference gerado inclui:
queries(string repetida): a lista de consultas que o agente emitiu para produzir a referência.
Serviço de sessões
A API REST do serviço de sessão não é compatível com os métodos
create ou update. No entanto, ele é compatível com os outros métodos:
list, get e delete.
A API RPC do serviço de sessão não é compatível com as operações Update ou Create em recursos de sessão usados para conversas de várias rodadas.
No entanto, ele oferece suporte ao outro serviço: operações List, Get e
Delete em recursos de sessão usados para conversas de várias rodadas.