AI Personal Learning
und praktische Anleitung
CyberKnife-Zeichenspiegel

LangGraph: ein Rahmenwerk für die Konstruktion und Ausführung von KI-Agenten auf der Grundlage einer gerichteten azyklischen Graphentopologie

Künstliche Intelligenz (KI) ist ein schnell wachsender Bereich. Es wurden Sprachmodelle entwickelt, die es KI-Agenten ermöglichen, komplexe Aufgaben auszuführen und komplexe Entscheidungen zu treffen. Doch während die Fähigkeiten dieser Agenten immer weiter zunehmen, kann die Infrastruktur zu ihrer Unterstützung nur schwer Schritt halten.

LangGraph, eine revolutionäre Bibliothek, die die Arbeit von KI-Agenten revolutionieren soll Aufbau und Laufzeit Umsetzung.


LangGraph präsentiert einen neuen AgentenAufbau und LaufzeitKonstruktives Paradigma, das Agenten-Workflows als Strukturen betrachtet, die auf einer zyklischen Graphentopologie basieren.

 

Was ist LangGraph?

Ein wichtiger Vorteil von LangChain ist die Möglichkeit, auf einfache Weise benutzerdefinierte Ketten zu erstellen. Allerdings fehlt in LangChain eine einfache Möglichkeit, Schleifen in diese Ketten einzuführen. In der Tat sind diese Ketten gerichtete azyklische Graphen (DAG) - Wie die meisten Frameworks für die Datenorchestrierung.

Ein häufiges Muster bei der Erstellung komplexer LLM-Anwendungen ist die Einführung von Schleifen in die Laufzeit. Diese Schleifen greifen oft auf den LLM zurück, um die nächste Aktion in der Schleife zu bestimmen. Dies ist im Wesentlichen das Äquivalent zur Ausführung des LLM in einer for-Schleife.

Die einfachste Form ist eine Schleife mit zwei Schritten:

  1. Aufruf des LLM, um zu bestimmen, welche Aktion zu ergreifen oder welche Antwort dem Benutzer zu geben ist
  2. Führen Sie den angegebenen Vorgang aus und kehren Sie zu Schritt 1 zurück.

Diese Schritte werden wiederholt, bis die endgültige Antwort erzeugt ist. Dies ist die Schleife, die den AgentExecutor im Herzen von LangChain antreibt. Es ist eine sehr einfache Schleife, aber sie ist auch die kritischste, weil sie fast die gesamte Entscheidungs- und Argumentationskraft in die Hände des LLM legt.

Es ist wichtig zu beachten, dass dieser Prozess in der Regel mehr Kontrolle erfordert. Beispielsweise kann der Agent gezwungen werden, zuerst ein bestimmtes Tool aufzurufen, oder es kann besser kontrolliert werden, wie das Tool aufgerufen wird, oder es werden je nach Zustand des Agenten unterschiedliche Eingabeaufforderungen angezeigt usw.

Es handelt sich um kontrollierte Prozesse, die LangChain "Zustandsautomaten" nennt.

Diese Zustandsautomaten sind in der Lage, eine Schleife zu durchlaufen, wobei jedoch ein gewisses menschliches Eingreifen bei der Konstruktion dieser Schleife erforderlich ist.

LangGraph erzeugt diese Zustandsautomaten, indem es sie als Graphen spezifiziert.

LangGraph baut auf LangChain auf und ist voll kompatibel mit dem LangChain-Ökosystem.Interoperabilität. Es bietet vor allem durch die Einführung einer einfachen Möglichkeit zur Erstellung von Schleifendiagrammen einen neuen Mehrwert. Dies ist sehr nützlich bei der Erstellung von Agent-Laufzeiten.

Dieser Ansatz ermöglicht es den Agenten, ein variableres und nuancierteres Verhalten an den Tag zu legen als die linearen Ausführungsmodelle ihrer Vorgänger. Mit Hilfe der Graphentheorie bietet LangGraph neue Möglichkeiten zur Entwicklung komplexer vernetzter Agentensysteme.

blank Abbildung: ein LangGraph für die Codegenerierung

Ein Beispiel: dynamisches Frage- und Antwortsystem

Nehmen Sie Der Benutzer kann dem Modell schrittweise Informationen zur Verfügung stellen, anstatt alle Informationen auf einmal zu senden.

Verschreibung : Verwenden Sie ein zyklisches Diagramm:

  1. Erlauben Sie dem LLM, erste Antworten zu generieren.
  2. Wenn die Antwort unvollständig ist oder weitere Informationen benötigt werden, erstellen Sie eine neue Frage und fahren Sie mit der Befragung des Benutzers fort.
  3. bis der Benutzer bestätigt, dass das Problem behoben wurde.

Aufbau des Kreislaufdiagramms

  • KnotenpunkteJeder Knoten steht für eine bestimmte Aufgabe oder einen bestimmten Vorgang, z. B. Texterstellung, Beantwortung von Fragen, Datenverarbeitung usw.
  • RänderVerbindungen zwischen Knoten zeigen die Reihenfolge der Aufgabenausführung an, möglicherweise mit bedingten Beurteilungen.
  • SchleifenpfadSchleifen: Schleifen werden gebildet, wenn die Ausgabe eines Knotens zum vorherigen Knoten zurückgeführt werden muss oder wenn sie wiederholt ausgeführt werden muss.
  • Bedingung zum AnhaltenDie Schleifendiagramme unterliegen einer Art Abbruchbedingung, z. B. wenn die Qualität des Ergebnisses den Anforderungen entspricht, wenn die eingestellte Anzahl von Malen erreicht ist oder wenn ein extern ausgelöstes Stoppsignal aktiviert wird.

 

Warum LangGraph verwenden?

  • Geschicklichkeit Mit der Weiterentwicklung von KI-Agenten benötigen Entwickler mehr Kontrolle über die Laufzeit des Agenten, um personalisierte Aktionspläne und Entscheidungsverfahren zu ermöglichen.
  • Die zirkuläre Natur des KI-Denkens Viele komplexe LLM-Anwendungen sind auf zyklische Ausführung angewiesen, wenn sie Strategien wie z.B. verkettetes Schlussfolgern verwenden. LangGraph bietet einen natürlichen Rahmen für die Modellierung dieser zyklischen Prozesse.
  • Multi-Intelligenz-System Mit der zunehmenden Verbreitung von Arbeitsabläufen mit mehreren Intelligenzen steigt auch der Bedarf an Systemen, die mehrere autonome Intelligenzen effizient verwalten und koordinieren können.

 

Verwenden Sie den Code, um zu sehen, wie LangGraph funktioniert

Die Funktionalität von LangGraph basiert auf einigen wenigen Grundelementen:

  • Knotenpunkte. Dies sind Werkzeuge für Funktionen oder Agenten.
  • Ränder. Definieren Sie Pfade für die Ausführung und den Datenfluss im Agentensystem und verbinden Sie die Knotenpunkte.
  • StateGraph. LangGraph ermöglicht es, persistente Daten zwischen den Ausführungszyklen durch die Verwaltung und Aktualisierung von Zustandsobjekten zu erhalten, wobei die Daten zwischen den Knoten fließen.

Abbildung: Grundlegender Arbeitsablauf von LangGraph

StateGraph

StateGraph ist eine Klasse, die ein Diagramm darstellt. Sie erstellen einen Graphen, indem Sie die Klasse Staat Definition, um diese Klasse zu initialisieren. Die Zustandsdefinition stellt ein zentrales Zustandsobjekt dar, das im Laufe der Zeit aktualisiert wird. Dieser Zustand wird durch Knoten im Graphen aktualisiert, die Operationen auf die Attribute dieses Zustands in Form von Schlüsselwertspeichern zurückgeben.

import os # Importieren Sie das Betriebssystemmodul
os.environ['OpenAI_API_KEY'] = 'hk-iwtbi1e427'
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph importieren StateGraph, START, END
from langgraph.graph.message import add_messages
class State(TypedDict).
    # Die Nachrichten sind vom Typ "list" und "add_messages" in Annotated definiert, wie die Nachrichten aktualisiert werden.
    # In diesem Beispiel werden die Nachrichten an die Liste angehängt und nicht überschrieben.
    Meldungen: Annotated[list, add_messages]
# Erstellen Sie eine Instanz von StateGraph und übergeben Sie die State-Klasse
graph_builder = StateGraph(State)

Knotenpunkte

Erstellen einer StateGraph Danach können Sie die graph.add_node(name, wert) Syntax zum Hinzufügen von Knoten. Name Das Argument ist eine Zeichenkette, die den Namen des Knotens darstellt. Wert Das Argument ist eine Funktion oder ein lauffähiges LCEL, das aufgerufen wird.

Diese Funktion /LCEL nimmt eine Funktion an, die der folgenden entspricht Staat Objekt hat ein Wörterbuch in der gleichen Form wie die Eingabe und gibt ein Wörterbuch aus, das die Staat Schlüssel des Objekts, um das Wörterbuch zu aktualisieren.

from langchain_openai import ChatOpenAI # Import ChatOpenAI from langchain_openai module
llm = ChatOpenAI( # Instanz von ChatOpenAI erzeugen
    model="gpt-4o-mini", # Modell angeben
    temperature=0, # Festlegen der Temperatur
    base_url="https://api.openai-hk.com/v1" # Setzt die Basis-URL
)
def chatbot(state: State):# Definiere eine Chatbot-Funktion, die Argumente vom Typ State annimmt
    """
    Verarbeitet eine Chatbot-Anfrage und gibt eine Nachricht zurück.
    Parameter.
    state (State): enthält den Status der Nachricht.
    Rückgabe.
    dict: Wörterbuch der vom Bot generierten Nachrichten.
    """
    return {"messages": [llm.invoke(state["messages"])]} # Gibt das Wörterbuch mit den Nachrichten zurück
# Das erste Argument ist der Name des Knotens
# Das zweite Argument ist die aufgerufene Funktion oder das aufgerufene Objekt
graph_builder.add_node("chatbot", chatbot) # Fügt dem Graphen einen Knoten mit dem Namen "chatbot" hinzu

Ränder

Zeigt an, dass einer der Knotenpunkte immer nach dem anderen aufgerufen wird

# Hinzufügen einer Kante von START zu "chatbot"
graph_builder.add_edge(START, "chatbot")
# Hinzufügen einer Kante von "chatbot" zu END.
graph_builder.add_edge("chatbot", END)  

Kompilieren Kompilieren

Nachdem wir unseren Graphen definiert haben, können wir ihn kompilieren, um ihn lauffähig zu machen! Bieten Sie die gleichen Methoden wie LangChain an ( .aufrufen (math.) Gattung .stream (math.) Gattung .astream_log usw.), so dass sie auf die gleiche Weise wie eine Kette aufgerufen werden kann.

graph = graph_builder.compile() # Kompilieren des Graphen

in Bewegung sein

def stream_graph_updates(user_input: str): # Definiert die Funktion stream_graph_updates zur Annahme von Benutzereingaben
    """
    Verwendet user_input zum Streamen von Graph-Aktualisierungsmeldungen.
    Parameter.
    user_input (str): Benutzereingabemeldung.
    Rückgabe.
    Keine
    """
    # Iteriert durch die Stream-Ereignisse des Graphen und übergibt die Benutzernachrichten, um die Antwort des Modells zu erhalten
    for event in graph.stream({"messages": [("user", user_input)]}): # Durchlaufen der Stream-Ereignisse des Graphen
        for value in event.values(): # Durchlaufen der Werte des Ereignisses
            print("Assistent:", value["messages"][-1].content) # Druckt die letzte Nachricht des Assistenten
whileTrue.
    Versuchen.
        user_input = input("Benutzer: ") # Benutzereingabe erhalten
        if user_input.lower() in ["quit", "exit", "q"]: # Prüfen Sie, ob der Benutzer aufhören will.
            print("Auf Wiedersehen!")
            break# Verlassen der Schleife
        # Aufruf der Funktion stream_graph_updates zur Verarbeitung der Benutzereingaben
        stream_graph_updates(user_input)
    except: # catch exception
        # Fallback, wenn input() nicht verfügbar ist
        user_input = "Was wissen Sie über LangGraph? "# Standard-Benutzereingabe setzen
        print("Benutzer: " + user_input) # Benutzereingabe ausgeben
        stream_graph_updates(user_input) # Aufruf der Funktion stream_graph_updates zur Verarbeitung der Standard-Eingabe
        break# Verlassen der Schleife

Visualisierung "Diagramm" (optional)

Visualisierung von "Diagrammen" in der Jupyter Notebook-Umgebung

blank

operative Wirkung

blank

Frameworks wie LangGraph werden mit der Entwicklung der KI immer wichtiger.

In dem Maße, in dem sich Entwickler mit den Funktionen von LangGraph vertraut machen, können wir mit fortschrittlicheren KI-Agenten rechnen, die in der Lage sind, komplexere Aufgaben auszuführen.

Zusammenfassend lässt sich sagen, dass LangGraph einen bedeutenden Fortschritt in der Entwicklung von KI-Agenten darstellt. Es ermöglicht Entwicklern, die Grenzen dessen, was mit KI-Agenten möglich ist, zu verschieben, indem es die Unzulänglichkeiten früherer Systeme beseitigt und ein flexibles, graphenbasiertes Framework für die Konstruktion und Ausführung von Agenten bereitstellt.LangGraph hat das Potenzial, die Richtung der KI-Entwicklung in der Zukunft maßgeblich zu beeinflussen.

CDN1
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " LangGraph: ein Rahmenwerk für die Konstruktion und Ausführung von KI-Agenten auf der Grundlage einer gerichteten azyklischen Graphentopologie

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)