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
modeleuserno seuContent.
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.