पाठ 24 / 29

Sub-Graphs और पदानुक्रमित Teams

एक graph को दूसरे graph के भीतर पुनः उपयोग योग्य घटक के रूप में रखें।

Graph एक node के रूप में

Compiled graph को बड़े graph में node की तरह उपयोग किया जा सकता है। इससे आप टीम को अपने graph के रूप में बना सकते हैं (search और summarise nodes वाली शोध टीम), उसे अकेले परख सकते हैं, कई उत्पादों में पुनः उपयोग कर सकते हैं, और पदानुक्रम जोड़ सकते हैं (शीर्ष supervisor टीम supervisors को route करता है, जो workers को)। Parent और sub-graph state keys सीधे साझा कर सकते हैं, या आप sub-graph को ऐसे function में लपेटते हैं जो दोनों state schemas के बीच अनुवाद करे, ताकि हर टीम की आंतरिक state निजी रहे। पदानुक्रम हर prompt छोटा रखते हैं, पर याद रखें हर परत latency जोड़ती है, इसलिए उन्हें समस्या की अनुमति जितना उथला रखें।

Node के रूप में sub-graph, चलाकर

मैंने यह Python virtual environment में langgraph 1.2.12 और langchain-core 1.6.6 के साथ ऑफ़लाइन चलाया। किसी API key या मॉडल की ज़रूरत नहीं क्योंकि मॉडल की जगह सादे Python functions हैं, इसलिए आउटपुट दोहराने योग्य है। भीतरी graph पाठ को upper-case करके "!" जोड़ता है। बाहरी graph "note:" prefix जोड़ता है और फिर भीतरी graph को node की तरह चलाता है, जिससे "NOTE: HELLO TEAM!" मिलता है। यहाँ दोनों graphs text key साझा करते हैं।

from typing import TypedDict
from langgraph.graph import StateGraph, START, END

class Inner(TypedDict):
    text: str

def shout(s): return {"text": s["text"].upper()}
def punct(s): return {"text": s["text"] + "!"}

sub = StateGraph(Inner)
sub.add_node("shout", shout); sub.add_node("punct", punct)
sub.add_edge(START, "shout"); sub.add_edge("shout", "punct"); sub.add_edge("punct", END)
sub_app = sub.compile()

class Outer(TypedDict):
    text: str

def prefix(s): return {"text": "note: " + s["text"]}

g = StateGraph(Outer)
g.add_node("prefix", prefix)
g.add_node("polish", sub_app)           # a compiled graph used as a node
g.add_edge(START, "prefix"); g.add_edge("prefix", "polish"); g.add_edge("polish", END)
print(g.compile().invoke({"text": "hello team"}))

Output:

{'text': 'NOTE: HELLO TEAM!'}

टीम की state निजी रखें

Sub-graph को सिर्फ़ वही keys दें जो उसे चाहिए और उसका परिणाम वापस map करें। इससे अनजाने जुड़ाव और context फूलना सीमित रहता है।

त्वरित जाँच: Sub-graphs का एक लाभ क्या है?

  • वे हमेशा तेज़ हैं
  • वे सारी state हटाते हैं
  • पुनः उपयोग योग्य, स्वतंत्र रूप से परखने योग्य घटक
  • वे tools को बदलते हैं
Answer

पुनः उपयोग योग्य, स्वतंत्र रूप से परखने योग्य घटक — Compiled graph अकेले परखा और node की तरह जोड़ा जा सकता है।