# Loops: Retry, Refine और Reflect — LangGraph Agents और Multi-Agent Systems

Source: https://www.geekswithgeeks.com/hi/langgraph-agents/f-loop

> शर्त पूरी होने तक पहले के node पर लौटें, सीमा के साथ।

## Cycles ही agents का सार हैं

Chain के विपरीत graph में **cycles** हो सकते हैं: ऐसी edge जो नियंत्रण पहले के node पर लौटाती है। इससे **वैध होने तक retry**, **लिखो → आलोचना करो → संशोधन करो** और **agent ↔ tools** जैसे पैटर्न संभव होते हैं। हर loop को router में **समाप्ति नियम** (गुणवत्ता पर्याप्त, लक्ष्य पूरा) और state में रखी प्रयासों की **कठोर सीमा** चाहिए, क्योंकि मॉडल कभी संतुष्ट न भी हो। Debugging के लिए प्रयासों का इतिहास reducer-समर्थित सूची में रखें, और तय करें कि सीमा आने पर क्या करें (सर्वश्रेष्ठ प्रयास लौटाएँ, मनुष्य को सौंपें, या error उठाएँ)।

## लिखो-और-जाँचो loop, चलाकर

मैंने यह Python virtual environment में langgraph 1.2.12 और langchain-core 1.6.6 के साथ ऑफ़लाइन चलाया। किसी API key या मॉडल की ज़रूरत नहीं क्योंकि मॉडल की जगह सादे Python functions हैं, इसलिए आउटपुट दोहराने योग्य है। पहला मसौदा बहुत छोटा है, इसलिए router नियंत्रण `write` पर लौटाता है; दूसरा पास होता है और graph 2 प्रयासों के बाद समाप्त होता है। `attempts >= 3` खंड सुरक्षा सीमा है।

```python
import operator
from typing import Annotated, TypedDict
from langgraph.graph import StateGraph, START, END

class State(TypedDict):
    draft: str
    attempts: int
    history: Annotated[list, operator.add]

def write(state):
    n = state["attempts"] + 1
    draft = "short" if n == 1 else "a good, complete answer"
    return {"draft": draft, "attempts": n, "history": [f"attempt {n}: {draft}"]}

def route(state):
    ok = len(state["draft"]) >= 10
    return "done" if ok or state["attempts"] >= 3 else "retry"   # always cap the loop

g = StateGraph(State)
g.add_node("write", write)
g.add_edge(START, "write")
g.add_conditional_edges("write", route, {"done": END, "retry": "write"})
out = g.compile().invoke({"draft": "", "attempts": 0, "history": []})
print(out["history"])
print("attempts:", out["attempts"])

```

Output:

```
['attempt 1: short', 'attempt 2: a good, complete answer']
attempts: 2
```

**Quiz:** Graph के हर loop में क्या होना चाहिए?

- [ ] बड़ा मॉडल
- [ ] असीमित retry संख्या
- [ ] कोई state नहीं
- [x] समाप्ति नियम और iterations की कठोर सीमा

*Answer:* समाप्ति नियम और iterations की कठोर सीमा. सीमाएँ अंतहीन loops और अनियंत्रित लागत रोकती हैं।
