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 schlägt einen neuen Agenten vorAufbau 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.

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 state 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  # 导入操作系统模块
os.environ['OpenAI_API_KEY'] = 'hk-iwtbi1e427'
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
class State(TypedDict):
    # messages 的类型为“list”。Annotated中的“add_messages” 定义了如何更新messages
    # 在本例中,messages是追加到list中的,而不是覆盖
    messages: Annotated[list, add_messages]
# 创建StateGraph的实例,传入State类
graph_builder = StateGraph(State)

Knotenpunkte

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

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

from langchain_openai import ChatOpenAI  # 从langchain_openai模块导入ChatOpenAI
llm = ChatOpenAI(  # 创建ChatOpenAI的实例
    model="gpt-4o-mini",  # 指定模型
    temperature=0,  # 设置温度
    base_url="https://api.openai-hk.com/v1"# 设置基础URL
)
def chatbot(state: State):# 定义chatbot函数,接受State类型的参数
    """
    处理聊天机器人请求并返回消息。
    参数:
    state (State): 包含消息的状态。
    返回:
    dict: 机器人生成的消息的字典。
    """
    return {"messages": [llm.invoke(state["messages"])]}  # 返回包含消息的字典
# 第一个参数是节点name
# 第二个参数是被调用的函数或对象
graph_builder.add_node("chatbot", chatbot)  # 向图中添加节点,节点名称为"chatbot"

Ränder

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

# 添加从START到"chatbot"的边
graph_builder.add_edge(START, "chatbot")  
# 添加从"chatbot"到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! Expose die gleichen Methoden wie LangChain ( .invoke (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()  # 编译图

in Bewegung sein

def stream_graph_updates(user_input: str):  # 定义stream_graph_updates函数,接受用户输入
    """
    使用user_input流式更新图的消息。
    参数:
    user_input (str): 用户输入的消息。
    返回:
    None
    """
    # 遍历图的流事件,传入用户消息以获取模型的响应
    for event in graph.stream({"messages": [("user", user_input)]}):  # 遍历图的流事件
        for value in event.values():  # 遍历事件的值
            print("Assistant:", value["messages"][-1].content)  # 打印助手的最后一条消息
whileTrue:
    try:
        user_input = input("User: ")  # 获取用户输入
        if user_input.lower() in ["quit", "exit", "q"]:  # 检查用户是否想退出
            print("Goodbye!")
            break# 退出循环
        # 调用stream_graph_updates函数处理用户输入
        stream_graph_updates(user_input)
    except:  # 捕获异常
        # fallback if input() is not available
        user_input = "What do you know about LangGraph?"# 设置默认用户输入
        print("User: " + user_input)  # 打印用户输入
        stream_graph_updates(user_input)  # 调用stream_graph_updates函数处理默认输入
        break# 退出循环

Visualisierung "Diagramm" (optional)

Visualisierung von "Diagrammen" in der Jupyter Notebook-Umgebung

operative Wirkung

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 erheblich zu beeinflussen.

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