Abilita conversazioni multi-turno con memoria
Sei quasi prontə a condividere l'aggiornamento del tuo chatbot con l'amministrazione scolastica! Per offrire agli studenti un'esperienza fluida, è importante permettere loro di fare domande di follow-up. In questo modo, se manca qualche informazione nella prima risposta del chatbot, gli studenti possono riformulare le domande continuando la conversazione. Ora adatterai la funzione di streaming del tuo chatbot per abilitare più turni, stampando sia la query dell'utente sia la risposta del chatbot. Per abilitare la memoria, LangGraph invierà l'intera conversazione all'LLM quando vengono poste domande di follow-up. Per iniziare, i parametri di config sono già impostati per un utente:
config = {"configurable": {"thread_id": "1"}}
Questo esercizio fa parte del corso
Progettare sistemi agentici con LangChain
Istruzioni dell'esercizio
- Per ogni turno, inizia stampando la
querydell'utente dalla listaqueries. - Itera su
msgemetadatausandoapp.stream(), passandoquerycomecontentdiHumanMessageinsieme aconfig, e unisci i valori dimsg.content. - Per estrarre le risposte del chatbot, stampa
msg.contentescludendo qualsiasimsgetichettato comeHumanMessage, aggiungendo una nuova riga prima della query successiva.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)