Progettare sistemi agentici con LangChain
Dilini K. Sumanapala, PhD
Founder & AI Engineer, Genverv, Ltd.







from langgraph.graph import MessagesState, START, END# Usa MessagesState per definire lo stato della funzione di arresto def should_continue(state: MessagesState):# Ottieni l'ultimo messaggio dallo stato last_message = state["messages"][-1]# Verifica se l'ultimo messaggio include chiamate agli strumenti if last_message.tool_calls: return "tools"# Termina la conversazione se non ci sono chiamate agli strumenti return END
# Estrai l'ultimo messaggio dalla cronologia def call_model(state: MessagesState):last_message = state["messages"][-1]# Se l'ultimo messaggio ha chiamate agli strumenti, restituisci la risposta dello strumento if isinstance(last_message, AIMessage) and last_message.tool_calls:# Restituisci i messaggi dalla chiamata allo strumento return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}# Altrimenti, procedi con una normale risposta dell'LLM return {"messages": [model_with_tools.invoke(state["messages"])]}
workflow = StateGraph(MessagesState)
workflow = StateGraph(MessagesState)# Aggiungi i nodi per chatbot e strumenti workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

workflow = StateGraph(MessagesState)# Aggiungi i nodi per chatbot e strumenti workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)# Collega il nodo START al chatbot workflow.add_edge(START, "chatbot")

workflow = StateGraph(MessagesState)# Aggiungi i nodi per chatbot e strumenti workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)# Collega il nodo START al chatbot workflow.add_edge(START, "chatbot")# Definisci le condizioni, poi torna al chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

workflow = StateGraph(MessagesState)# Aggiungi i nodi per chatbot e strumenti workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)# Collega il nodo START al chatbot workflow.add_edge(START, "chatbot")# Definisci le condizioni, poi torna al chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])workflow.add_edge("tools", "chatbot")

# Configura la memoria e compila il workflow memory = MemorySaver()app = workflow.compile( checkpointer=memory)display(Image(app.get_graph() .draw_mermaid_png()))
Progettare sistemi agentici con LangChain