Knoten und Kanten für flexibles Function Calling definieren

Agentische Systeme mit LangChain entwerfen

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Einen Multi-Tool-Workflow bauen

   

  • Mehrere verfügbare Tools

    • Palindrom
    • Historische Ereignisse
    • Wikipedia

Vollständiger Chatbot-Workflow

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

Knoten für Chatbot und Tools im Chatbot-Workflow.

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

    • Auf Tool-Aufrufe prüfen

Regeln der Stoppfunktion hervorgehoben.

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

    • Auf Tool-Aufrufe prüfen
    • Gespräch beenden, wenn keine vorhanden

END-Regeln im Workflow hervorgehoben

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

    • Auf Tool-Aufrufe prüfen
    • Gespräch beenden, wenn keine vorhanden    
  • Dynamischen Tool-Caller erstellen

    • Bei vorhandenem Tool-Aufruf Tool-Antwort zurückgeben

Call_model-Regeln hervorgehoben.

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

    • Auf Tool-Aufrufe prüfen
    • Gespräch beenden, wenn keine vorhanden    
  • Dynamischen Tool-Caller erstellen

    • Bei vorhandenem Tool-Aufruf Tool-Antwort zurückgeben
    • LLM nur mit dem Chatbot-Knoten aufrufen, wenn keine Tool-Aufrufe

Call_model-Regeln hervorgehoben.

Agentische Systeme mit LangChain entwerfen

Workflow-Funktionen definieren

   

  • Stoppfunktion erstellen

    • Auf Tool-Aufrufe prüfen
    • Gespräch beenden, wenn keine vorhanden    
  • Dynamischen Tool-Caller erstellen

    • Bei vorhandenem Tool-Aufruf Tool-Antwort zurückgeben
    • LLM nur mit dem Chatbot-Knoten aufrufen, wenn keine Tool-Aufrufe
  • Gesamten Graph kompilieren

Call_model-Regeln hervorgehoben.

Agentische Systeme mit LangChain entwerfen

Stoppbedingungsfunktion erstellen

from langgraph.graph import MessagesState, START, END


# Verwende MessagesState, um den Zustand der Stoppfunktion zu definieren def should_continue(state: MessagesState):
# Letzte Nachricht aus dem State holen last_message = state["messages"][-1]
# Prüfen, ob die letzte Nachricht Tool-Aufrufe enthält if last_message.tool_calls: return "tools"
# Gespräch beenden, wenn keine Tool-Aufrufe vorhanden return END
Agentische Systeme mit LangChain entwerfen

Dynamischen Tool-Caller erstellen

# Letzte Nachricht aus dem Verlauf extrahieren
def call_model(state: MessagesState):

last_message = state["messages"][-1]
# Wenn die letzte Nachricht Tool-Aufrufe hat, gib die Tool-Antwort zurück if isinstance(last_message, AIMessage) and last_message.tool_calls:
# Nachrichten aus dem Tool-Aufruf zurückgeben return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}
# Andernfalls mit einer normalen LLM-Antwort fortfahren return {"messages": [model_with_tools.invoke(state["messages"])]}
Agentische Systeme mit LangChain entwerfen

Graph erstellen

workflow = StateGraph(MessagesState)












Agentische Systeme mit LangChain entwerfen

Graph erstellen

workflow = StateGraph(MessagesState)


# Knoten für Chatbot und Tools hinzufügen workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

Knoten für Chatbot und Tools.

Agentische Systeme mit LangChain entwerfen

Graph erstellen

workflow = StateGraph(MessagesState)


# Knoten für Chatbot und Tools hinzufügen workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# START-Knoten mit dem Chatbot verbinden workflow.add_edge(START, "chatbot")

START-Knoten zum Chatbot hinzufügen.

Agentische Systeme mit LangChain entwerfen

Graph erstellen

workflow = StateGraph(MessagesState)


# Knoten für Chatbot und Tools hinzufügen workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# START-Knoten mit dem Chatbot verbinden workflow.add_edge(START, "chatbot")
# Bedingungen definieren, dann zurück zum Chatbot schleifen workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

Graph mit hinzugefügten Bedingungen.

Agentische Systeme mit LangChain entwerfen

Graph erstellen

workflow = StateGraph(MessagesState)


# Knoten für Chatbot und Tools hinzufügen workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# START-Knoten mit dem Chatbot verbinden workflow.add_edge(START, "chatbot")
# Bedingungen definieren, dann zurück zum Chatbot schleifen workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])
workflow.add_edge("tools", "chatbot")

Vollständiger Graph-Workflow.

Agentische Systeme mit LangChain entwerfen

Speicher hinzufügen

# Speicher einrichten und Workflow kompilieren
memory = MemorySaver()

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

Vollständiger Graph-Workflow.

Agentische Systeme mit LangChain entwerfen

Lass uns üben!

Agentische Systeme mit LangChain entwerfen

Preparing Video For Download...