Habilita la conversación multi-turno con memoria
¡Ya casi estás listo para compartir la actualización de tu chatbot con la administración del centro! Para que el alumnado tenga una experiencia fluida, es importante permitir que hagan preguntas de seguimiento. Así, si falta alguna información en la primera respuesta del chatbot, podrán reformular sus dudas manteniendo una conversación. Ahora vas a adaptar la función de streaming de tu chatbot para permitir múltiples turnos, imprimiendo tanto la consulta del usuario como la respuesta del chatbot. Para habilitar la memoria, LangGraph enviará la conversación completa al LLM cuando se hagan preguntas de seguimiento. Para empezar, tus parámetros de config ya están establecidos para un usuario:
config = {"configurable": {"thread_id": "1"}}
Este ejercicio forma parte del curso
Diseño de sistemas agénticos con LangChain
Instrucciones del ejercicio
- En cada turno, empieza imprimiendo la
querydel usuario desde la listaqueries. - Itera por
msgymetadatausandoapp.stream(), pasandoquerycomocontentdeHumanMessagejunto conconfig, y une los valores demsg.content. - Para extraer las respuestas del chatbot, imprime
msg.contentexcluyendo cualquiermsgetiquetado comoHumanMessage, añadiendo una nueva línea antes de la siguiente consulta.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)