Añadir memoria y conversación

Diseño de sistemas agénticos con LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Probar el uso de herramientas

Diagrama completo del chatbot con el nodo de herramientas añadido.

Diseño de sistemas agénticos con LangChain

Probar el uso de herramientas

# Genera el grafo del chatbot
display(Image(app.get_graph().draw_mermaid_png()))


# Define una función para ejecutar el chatbot, emitiendo cada mensaje def stream_tool_responses(user_input: str): for event in graph.stream({"messages": [("user", user_input)]}):
# Devuelve la última respuesta del agente for value in event.values(): print("Agent:", value["messages"])
# Define la consulta y ejecuta el chatbot user_query = "House of Lords" stream_tool_responses(user_query)
Diseño de sistemas agénticos con LangChain

Visualizar el diagrama

Diagrama del chatbot de LangGraph con nodo de herramienta

Diseño de sistemas agénticos con LangChain

Transmitir la salida

Agent: [AIMessage(content='', additional_kwargs={'tool_calls': [{'function': {'arguments': 
'{"query":"House of Lords"}', 'name': 'wikipedia'}, 'type': 'function'}]},
response_metadata={'...'}])]

Agent: [ToolMessage(content='Page: House of Lords\nSummary: The House of Lords is the upper house of the Parliament of the United Kingdom. Like the lower house...The House of Lords also has a Church of England role...', name='wikipedia', id='...',')]
Agent: [AIMessage(content='The House of Lords is the upper house of the Parliament of the United Kingdom, located in the Palace of Westminster in London. It is one of the oldest institutions in the world..., additional_kwargs={},
response_metadata= {'finish_reason': 'stop', 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0ba0d124f1'}, id='run-ae3a0b4f-5b42-4f4e-9409-7c191af0b9c9-0')]
Diseño de sistemas agénticos con LangChain

Añadir memoria

# Importa los módulos para guardar memoria
from langgraph.checkpoint.memory import MemorySaver


# Modifica el grafo con checkpoints de memoria memory = MemorySaver()
# Compila el grafo pasando la memoria graph = graph_builder.compile(checkpointer=memory)
Diseño de sistemas agénticos con LangChain

Streaming de salidas con memoria

# Configura una función de streaming para un solo usuario
def stream_memory_responses(user_input: str):

config = {"configurable": {"thread_id": "single_session_memory"}}
# Transmite los eventos del grafo for event in graph.stream({"messages": [("user", user_input)]}, config):
# Devuelve la última respuesta del agente for value in event.values(): if "messages" in value and value["messages"]: print("Agent:", value["messages"])
stream_memory_responses("What is the Colosseum?") stream_memory_responses("Who built it?")
Diseño de sistemas agénticos con LangChain

Generar salida con memoria

stream_memory_responses("What is the Colosseum?")
Agent: [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 
'id': '...', 'function': {'arguments': '
{"query":"Colosseum"}', 'name': 'wikipedia'}, ...])]

Agent: [ToolMessage(content='Page: Colosseum\nSummary: The Colosseum is an ancient amphitheatre in Rome, Italy. It is the largest standing amphitheatre in the world..)]
Agent: [AIMessage(content='The Colosseum, located in Rome, is the largest ancient amphitheatre still standing. Built under Emperor Vespasian and completed by his son Titus, it hosted gladiatorial games and public events. It is also known as the Flavian Amphitheatre due to its association with the Flavian dynasty.', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-mini-...', ...')]
Diseño de sistemas agénticos con LangChain

Generar salida con memoria

stream_memory_responses("Who built it?")
Agent: [AIMessage(content='The Colosseum was built by Emperor Vespasian around 
72 AD and completed by his successor, Emperor Titus. Later modifications were 
made by Emperor Domitian...')]
Diseño de sistemas agénticos con LangChain

¡Vamos a practicar!

Diseño de sistemas agénticos con LangChain

Preparing Video For Download...