Resolução de problemas do banco de memória

Este documento mostra como resolver problemas comuns ao usar o banco de memória do Vertex AI Agent Engine.

Não foram geradas memórias

O processo de geração de memórias inclui um passo crucial: determinar se as informações no conteúdo de origem são suficientemente significativas para persistirem. Uma resposta vazia indica que o processo foi executado com êxito, mas não encontrou informações que cumprissem os critérios para serem guardadas. Se esperava que fossem geradas memórias, este guia pode ajudar a identificar um potencial erro ou configuração incorreta.

Para resolver problemas com o motivo pelo qual as memórias não estão a ser geradas, siga estes passos pela ordem indicada:

Verifique se a geração de memórias foi acionada

Primeiro, confirme se o processo de geração de memórias foi realmente iniciado. A geração de memórias é iniciada através da invocação de GenerateMemories (client.agent_engines.memories.generate(...)).

Se estiver a usar o VertexAiMemoryBankService do ADK, a geração de memória não é acionada automaticamente. Tem de se certificar de que o seu agente ou aplicação chamou explicitamente o método add_session_to_memory para acionar o processo.

add_session_to_memory recebe um objeto Session como entrada e usa os eventos da sessão como a origem de dados para a geração de memória. Só chama a sua instância do Memory Bank se existirem eventos preenchidos no objeto de sessão. Se a sua aplicação ou agente ADK estiver a invocar add_session_to_memory, mas a geração de memória não tiver sido acionada, os eventos do objeto Session podem não ser preenchidos. Isto é possível mesmo que tenha interagido com a sessão, especialmente se estiver a usar o adk.Runner. Para resolver este problema, obtenha a sessão e os respetivos eventos para o ambiente onde está a invocar 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)

Verifique se o LRO de geração de memória está concluído

A geração de memórias é uma operação de longa duração (LRO) e pode demorar alguns segundos a ser concluída. A latência exata depende da duração da conversa de entrada e da complexidade das informações que estão a ser processadas.

Quando usa o SDK Agent Engine, a geração de memória é uma operação de bloqueio por predefinição. Assim, client.generate_memories(...) bloqueia a execução do código até que o LRO de geração de memória esteja concluído.

Quando usa o ADK, VertexAiMemoryBankService é uma operação não bloqueadora.add_session_to_memory Apenas aciona a geração de memória e não aguarda a conclusão da LRO.

Procure erros na resposta da operação

A resposta LRO pode incluir uma mensagem de erro semelhante que indica que a geração de memória não foi bem-sucedida. Por 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 recursos esgotados para o Gemini quando usa o pagamento conforme o uso. Com a quota partilhada dinâmica (DSQ), não existem limites de quota predefinidos na sua utilização. Para ajudar a garantir a elevada disponibilidade do Memory Bank e obter níveis de serviço previsíveis para as suas cargas de trabalho de produção, consulte o Débito processado.

  • Dados de origem inválidos, como usar funções que não sejam model e user no seu Content.

Determine se a conversa foi significativa

Se o processo foi acionado, concluído com êxito e não produziu erros, é provável que o banco de memória tenha determinado que nenhuma informação na conversa de origem era suficientemente significativa para persistir.

O banco de memórias usa "tópicos de memória" para identificar que informações são significativas. Se o conteúdo da sua conversa não se alinhar com nenhum tópico configurado, não são geradas memórias.

Se considerar que as informações deviam ter sido mantidas, pode personalizar a configuração da instância do banco de memória para se alinhar melhor com as suas expetativas.

Configurar tópicos de memória permite-lhe definir que informações devem ser mantidas. Configurar exemplos de poucos disparos ajuda a sua instância do banco de memória a adaptar-se às suas expetativas, ensinando-lhe as nuances sobre que informações devem ser mantidas e com que expressão. Pode pensar na personalização do seu banco de memórias em dois passos: dizer e mostrar. Os tópicos da memória indicam ao banco de memória que informações devem ser mantidas. Os exemplos com poucos dados mostram ao banco de memória que tipo de informações devem resultar numa memória específica, ajudando-o a aprender os padrões, as nuances e as expressões que espera que compreenda.