Non sono state generate memorie
Il processo di salvataggio di informazioni include un passaggio cruciale: determinare se le informazioni nel contenuto di origine sono sufficientemente significative da essere mantenute. Una risposta vuota indica che il processo è stato eseguito correttamente, ma non sono state trovate informazioni che soddisfano i criteri per essere salvate. Se ti aspettavi che venissero generate memorie, questa guida può aiutarti a identificare un potenziale errore o una configurazione errata.
Per risolvere il problema della mancata generazione delle memorie, segui questi passaggi in ordine:
Controlla se è stato attivato il salvataggio di informazioni
Innanzitutto, verifica che il processo di salvataggio di informazioni sia stato effettivamente avviato. La generazione della memoria viene avviata richiamando GenerateMemories (client.agent_engines.memories.generate(...)).
Se utilizzi VertexAiMemoryBankService di ADK, il salvataggio di informazioni non viene attivato automaticamente. Devi assicurarti che l'agente o l'applicazione abbia chiamato esplicitamente il metodo add_session_to_memory per attivare il processo.
Il metodo add_session_to_memory accetta un
Session oggetto come input
e utilizza gli eventi della sessione come origine dati per il salvataggio di informazioni. Il metodo chiama l'istanza di Memory Bank solo se nell'oggetto sessione sono presenti eventi. Se l'applicazione o l'agente ADK richiama add_session_to_memory, ma il salvataggio di informazioni non è stato attivato, è possibile che gli eventi dell'oggetto Session non siano stati compilati. Ciò è possibile anche se hai interagito con la sessione, soprattutto se utilizzi adk.Runner. Per risolvere il problema, recupera la sessione e i relativi eventi nell'ambiente in cui stai richiamando 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)
Verifica che l'operazione a lunga esecuzione per il salvataggio di informazioni sia completata
Il salvataggio di informazioni è un'operazione a lunga esecuzione e può richiedere alcuni secondi. La latenza esatta dipende dalla lunghezza della conversazione di input e dalla complessità delle informazioni elaborate.
Quando utilizzi l'SDK Agent Engine, il salvataggio di informazioni è un'operazione di blocco per impostazione predefinita. Pertanto, client.generate_memories(...) blocca l'esecuzione del codice finché l'operazione a lunga esecuzione per il salvataggio di informazioni non è completata.
Quando utilizzi VertexAiMemoryBankService di ADK, add_session_to_memory è un'operazione non bloccante. Attiva solo il salvataggio di informazioni e non attende il completamento dell'operazione a lunga esecuzione.
Cerca errori nella risposta dell'operazione
La risposta dell'operazione a lunga esecuzione potrebbe contenere un messaggio di errore simile che indica che il salvataggio di informazioni non è riuscito. Ad esempio:
RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}
Gli errori comuni includono:
Errori di esaurimento delle risorse per Gemini quando utilizzi il modello con pagamento a consumo. Con la quota condivisa dinamica, non esistono limiti di quota predefiniti per l'utilizzo. Per garantire un'elevata affidabilità per Memory Bank e ottenere livelli di servizio prevedibili per i carichi di lavoro di produzione, consulta la sezione Throughput riservato.
Dati di origine non validi, ad esempio l'utilizzo di ruoli diversi da
modeleuserinContent.
Determina se la conversazione era significativa
Se il processo è stato attivato, completato correttamente e non ha prodotto errori, è probabile che Memory Bank abbia stabilito che nessuna informazione nella conversazione di origine era sufficientemente significativa da essere mantenuta.
Memory Bank utilizza "argomenti di memoria" per identificare le informazioni significative. Se il contenuto della conversazione non è allineato ad alcun argomento configurato, non vengono generate memorie.
Se ritieni che le informazioni avrebbero dovuto essere mantenute, puoi personalizzare la configurazione dell'istanza di Memory Bank in modo che sia più in linea con le tue aspettative.
La configurazione degli argomenti di memoria consente di definire quali informazioni devono essere mantenute. La configurazione di esempi few-shot aiuta l'istanza di Memory Bank ad adattarsi alle tue aspettative insegnandole le sfumature delle informazioni da mantenere e la formulazione da utilizzare. Puoi pensare di personalizzare Memory Bank in due passaggi: indicare e mostrare. Gli argomenti di memoria indicano a Memory Bank quali informazioni mantenere. Gli esempi few-shot mostrano a Memory Bank il tipo di informazioni che devono generare una memoria specifica, aiutandolo ad apprendere i pattern, le sfumature e la formulazione che ti aspetti che comprenda.