Nodes en edges definiëren voor flexibel functieaanroepen

Agentic Systems ontwerpen met LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Een workflow met meerdere tools bouwen

   

  • Meerdere beschikbare tools

    • Palindroom
    • Historische gebeurtenissen
    • Wikipedia

Volledige chatbot-workflow

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

Chatbot- en tools-nodes van chatbot-workflow.

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

    • Controleer op tool-calls

Regels voor stopfunctie gemarkeerd.

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

    • Controleer op tool-calls
    • Beëindig gesprek als er geen zijn

END-regels gemarkeerd in workflow

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

    • Controleer op tool-calls
    • Beëindig gesprek als er geen zijn    
  • Maak een dynamische tool-caller

    • Geef een tool-respons terug als er een call is

Regels voor Call_model gemarkeerd.

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

    • Controleer op tool-calls
    • Beëindig gesprek als er geen zijn    
  • Maak een dynamische tool-caller

    • Geef een tool-respons terug als er een call is
    • Roep de LLM aan met alleen de chatbot-node als er geen tool-calls zijn

Regels voor Call_model gemarkeerd.

Agentic Systems ontwerpen met LangChain

Workflow-functies definiëren

   

  • Maak een stopfunctie

    • Controleer op tool-calls
    • Beëindig gesprek als er geen zijn    
  • Maak een dynamische tool-caller

    • Geef een tool-respons terug als er een call is
    • Roep de LLM aan met alleen de chatbot-node als er geen tool-calls zijn
  • Compileer de volledige graf

Regels voor Call_model gemarkeerd.

Agentic Systems ontwerpen met LangChain

Maak een stopfunctie

from langgraph.graph import MessagesState, START, END


# Gebruik MessagesState om de staat van de stopfunctie te definiëren def should_continue(state: MessagesState):
# Haal het laatste bericht uit de state last_message = state["messages"][-1]
# Controleer of het laatste bericht tool-calls bevat if last_message.tool_calls: return "tools"
# Beëindig het gesprek als er geen tool-calls zijn return END
Agentic Systems ontwerpen met LangChain

Maak een dynamische tool-caller

# Haal het laatste bericht uit de geschiedenis
def call_model(state: MessagesState):

last_message = state["messages"][-1]
# Als het laatste bericht tool-calls heeft, geef de tool-respons terug if isinstance(last_message, AIMessage) and last_message.tool_calls:
# Geef de berichten van de tool-call terug return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}
# Anders: ga door met een normale LLM-respons return {"messages": [model_with_tools.invoke(state["messages"])]}
Agentic Systems ontwerpen met LangChain

Maak de graf

workflow = StateGraph(MessagesState)












Agentic Systems ontwerpen met LangChain

Maak de graf

workflow = StateGraph(MessagesState)


# Voeg nodes toe voor chatbot en tools workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

Chatbot- en tools-nodes.

Agentic Systems ontwerpen met LangChain

Maak de graf

workflow = StateGraph(MessagesState)


# Voeg nodes toe voor chatbot en tools workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Verbind de START-node met de chatbot workflow.add_edge(START, "chatbot")

START-node toevoegen aan chatbot.

Agentic Systems ontwerpen met LangChain

Maak de graf

workflow = StateGraph(MessagesState)


# Voeg nodes toe voor chatbot en tools workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Verbind de START-node met de chatbot workflow.add_edge(START, "chatbot")
# Definieer condities, daarna terug naar chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

Graf met condities toegevoegd.

Agentic Systems ontwerpen met LangChain

Maak de graf

workflow = StateGraph(MessagesState)


# Voeg nodes toe voor chatbot en tools workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Verbind de START-node met de chatbot workflow.add_edge(START, "chatbot")
# Definieer condities, daarna terug naar chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])
workflow.add_edge("tools", "chatbot")

Volledige graf-workflow.

Agentic Systems ontwerpen met LangChain

Geheugen toevoegen

# Stel geheugen in en compileer de workflow
memory = MemorySaver()

app = workflow.compile( checkpointer=memory)
display(Image(app.get_graph() .draw_mermaid_png()))

Volledige graf-workflow.

Agentic Systems ontwerpen met LangChain

Laten we oefenen!

Agentic Systems ontwerpen met LangChain

Preparing Video For Download...