Solução de problemas do Memory Bank da Agent Platform

Este documento descreve como resolver problemas comuns ao usar o Memory Bank da Agent Platform na Agent Platform. Ele fornece etapas de solução de problemas para casos em que nenhuma recordação é gerada e explica como verificar a conclusão da operação.

Nenhuma recordação foi gerada

O processo de geração de dados de memória inclui uma etapa crucial: determinar se as informações no conteúdo de origem são significativas o suficiente para serem mantidas. Uma resposta vazia indica que o processo foi executado, 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 não geração de recordações, siga estas etapas em ordem:

Verificar se a geração de dados de memória foi acionada

Primeiro, confirme se o processo de geração de dados de memória foi iniciado. A geração de memória é iniciada invocando GenerateMemories (client.agent_engines.memories.generate(...)).

Se você estiver usando o VertexAiMemoryBankService do ADK, a geração de dados de memória não será acionada automaticamente. Você precisa garantir que o agente ou aplicativo tenha chamado explicitamente o método add_session_to_memory para acionar o processo.

O método add_session_to_memory usa um objeto Session como entrada e usa os eventos da sessão como a fonte de dados para a geração de dados de memória. O método 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 dados de memória não tiver sido acionada, os eventos do objeto Session talvez não sejam preenchidos. Isso é possível mesmo que você tenha interagido com a sessão, principalmente se estiver usando o 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 dados de memória foi concluído

A geração de dados 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 dados 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 dados de memória seja concluída.

Ao usar o VertexAiMemoryBankService do ADK, add_session_to_memory é uma operação sem bloqueio. Ele apenas aciona a geração de dados 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 dados 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 mais comuns incluem:

  • Erros de recursos esgotados para o Gemini ao usar o pagamento por uso. Com a cota compartilhada dinâmica (DSQ), não há limites de cota predefinidos no seu uso. Para garantir alta disponibilidade para o Memory Bank e ter níveis de serviço previsíveis para suas cargas de trabalho de produção, consulte Capacidade de processamento provisionada.

  • Dados de origem inválidos, como usar funções diferentes de model e user no seu Content.

Determinar se a conversa foi significativa

Se o processo foi acionado, concluído com sucesso 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 "temas de memória" para identificar quais informações são significativas. 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 poucos disparos ajuda a instância do Memory Bank a se adaptar às suas expectativas, ensinando as nuances de quais informações devem ser mantidas e com qual fraseado. Você pode pensar em personalizar seu Memory Bank em duas etapas: contar e mostrar. Os tópicos da Memória informam ao Memory Bank 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 a aprender os padrões, as nuances e as frases que você espera que ele entenda.