# Routing और Branching — LangChain / LlamaIndex

Source: https://www.geekswithgeeks.com/hi/langchain-llamaindex/a-route

> हर इनपुट को सही रास्ते पर भेजें।

## निर्णय लें, फिर कार्य करें

असली apps को अलग इनपुट के लिए अलग सँभाल चाहिए: billing सवाल एक prompt को, technical दूसरे को, गपशप सस्ते मॉडल को। **`RunnableBranch`** (शर्त, runnable) जोड़ों की सूची और एक default लेता है; पहली सही शर्त रास्ता चुनती है। शर्तें सादा Python या पहले के **classifier चरण** का परिणाम हो सकती हैं (अक्सर छोटी, सस्ती LLM call जो label लौटाती है)। loops और साझा state वाले जटिल प्रवाहों के लिए LangGraph उपयोग करें। हमेशा **default** शाखा रखें और असामान्य इनपुट परखें।

## Keyword से routing, चलाकर

मैंने यह Python virtual environment में langchain-core 1.6.6, langchain-text-splitters 1.1.2 और llama-index-core 0.14.25 के साथ ऑफ़लाइन चलाया। किसी API key या network call की ज़रूरत नहीं क्योंकि असली मॉडल की जगह fake मॉडल या खिलौना embedding है। पहली मेल खाती शर्त जीतती है; जो मेल न खाए वह default route पर जाता है।

```python
from langchain_core.runnables import RunnableBranch, RunnableLambda

route = RunnableBranch(
    (lambda x: "refund" in x.lower(), RunnableLambda(lambda x: "billing team")),
    (lambda x: "crash" in x.lower(), RunnableLambda(lambda x: "engineering")),
    RunnableLambda(lambda x: "general support"),
)
for q in ["I want a refund", "App crash on start", "Where is your office?"]:
    print(q, "->", route.invoke(q))

```

Output:

```
I want a refund -> billing team
App crash on start -> engineering
Where is your office? -> general support
```

**Quiz:** RunnableBranch में हमेशा क्या होना चाहिए?

- [ ] प्रशिक्षित मॉडल
- [ ] ठीक एक शर्त
- [ ] GPU
- [x] ऐसे इनपुट के लिए default शाखा जो किसी शर्त से मेल न खाएँ

*Answer:* ऐसे इनपुट के लिए default शाखा जो किसी शर्त से मेल न खाएँ. Default के बिना अनपेक्षित इनपुट के पास जाने की जगह नहीं।
