Este documento mostra como resolver problemas comuns ao usar o banco de memória do Vertex AI Agent Engine.
Nenhuma recordação foi gerada
O processo de geração de memória inclui uma etapa crucial: determinar se as informações no conteúdo de origem são significativas o suficiente para persistir. Uma resposta vazia indica que o processo foi executado com êxito, mas não encontrou informações que atendessem aos critérios para serem salvas. Se você esperava que as recordações fossem geradas, este guia pode ajudar a identificar um possível erro ou configuração incorreta.
Para resolver o problema de por que as recordações não estão sendo geradas, siga estas etapas em ordem:
Verificar se a geração de memória foi acionada
Primeiro, confirme se o processo de geração de memória foi iniciado. A geração de memória é iniciada ao invocar GenerateMemories
(client.agent_engines.memories.generate(...)
).
Se você estiver usando o VertexAiMemoryBankService
do ADK, a geração de memória não será acionada automaticamente. Você precisa garantir que seu agente ou aplicativo tenha chamado explicitamente o método add_session_to_memory
para acionar o processo.
add_session_to_memory
usa um objeto Session
como entrada e os eventos da sessão como fonte de dados para a geração de memória. Ele só chama a instância do Memory Bank se houver eventos preenchidos no objeto de sessão. Se o aplicativo ou agente do ADK estiver invocando add_session_to_memory
, mas a geração de memória não tiver sido acionada, os eventos do objeto Session
poderão não ser preenchidos. Isso é possível mesmo que você tenha interagido com a sessão, principalmente se estiver usando adk.Runner
. Para resolver esse problema, busque a sessão e os eventos dela no ambiente em que você está invocando add_session_to_memory
:
session = await session_service.get_session(
app_name=app_name,
user_id=user_id,
session_id=session.id
)
# Confirm that events are populated.
print(session.events)
memory_service.add_session_to_memory(session)
Verificar se o LRO de geração de memória foi concluído
A geração de memória é uma operação de longa duração (LRO) e pode levar alguns segundos para ser concluída. A latência exata depende da duração da conversa de entrada e da complexidade das informações processadas.
Ao usar o SDK do Agent Engine, a geração de memória é uma operação de bloqueio por padrão. Assim, client.generate_memories(...)
bloqueia a execução do código até que a LRO de geração de memória seja concluída.
Ao usar o VertexAiMemoryBankService
do ADK, add_session_to_memory
é uma operação não bloqueadora. Ele apenas aciona a geração de memória e não espera a conclusão da LRO.
Procurar erros na resposta da operação
A resposta da LRO pode ter uma mensagem de erro semelhante que indica que a geração de memória não foi bem-sucedida. Exemplo:
RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}
Os erros comuns incluem:
Erros de recurso esgotado para o Gemini ao usar o pagamento por uso. Com a cota compartilhada dinâmica (DSQ), não há limites de cota predefinidos para seu uso. Para garantir a alta disponibilidade do Memory Bank e ter níveis de serviço previsíveis para suas cargas de trabalho de produção, consulte Capacidade provisionada.
Dados de origem inválidos, como usar funções diferentes de
model
euser
no seuContent
.
Determinar se a conversa foi relevante
Se o processo foi acionado, concluído com êxito e não produziu erros, é provável que o Memory Bank tenha determinado que nenhuma informação na conversa de origem era significativa o suficiente para ser mantida.
O Memory Bank usa "tópicos de memória" para identificar quais informações são relevantes. Se o conteúdo da conversa não se alinhar a nenhum tópico configurado, nenhuma recordação será gerada.
Se você acredita que as informações deveriam ter sido mantidas, personalize a configuração da instância do Memory Bank para se alinhar melhor às suas expectativas.
Configurar tópicos de memória permite definir quais informações precisam ser mantidas. Configurar exemplos de aprendizado com poucos exemplos ajuda a instância do Memory Bank a se adaptar às suas expectativas, ensinando a ela as nuances de quais informações devem ser mantidas e com qual fraseado. Você pode pensar em personalizar seu banco de memória em duas etapas: contar e mostrar. Os tópicos da Memória informam ao Banco de Memória quais informações devem ser mantidas. Os poucos exemplos mostram ao Memory Bank que tipo de informação deve resultar em uma memória específica, ajudando-o a aprender os padrões, as nuances e as frases que você espera que ele entenda.