Lesson 69 — Beginner

Building Agents with LangGraph

LangGraph ek low-level orchestration framework hai jo stateful, long-running agents ko explicit graph ke roop mein define karta hai — nodes (kaam), edges (raste), state (shared memory). Is lesson mein tool-using agent ka graph banayenge, conditional edges se loop chalayenge, checkpointer se run resume karenge aur interrupt se human approval lagayenge.

⏱ 30 min• Beginner• Multi-Agent Architectures

LangGraph kis liye — state, nodes, edges

WHAT

LangGraph tumhare execution ko graph bolta hai: har node ek function (model call, tool, processing, decision), edges batati hain agla node kahan, aur ek typed state unhe connect karti hai. Loop = graph mein wapas edge.

WHEN

Jab control explicit chahiye — conditional branches, retries ke loops, persistence, human-in-the-loop. Lambi runs jo ruk kar wapas chalni hon.

WHERE

Agent frameworks ke neeche wali layer — ek tool loop se lekar multi-agent supervisor graph tak. Checkpointer ke saath crash-safe workflows.

                 +-------+
   START ------->| agent |<-------------------+
                 +-------+                    |
                    |  |  tool_calls hai?     |
                    |  +-------> tools -------+
                    |               (no tool) |
                    v                          |
                   END                        |

state = {messages: [...] }  -- nodes ise padhte/likhte hain, reducers merge karte hain
Yaad rakho: LangGraph ka point control ko code mein visible karna hai. while loop mein control chhupa rehta hai; graph mein har branch padh kar samajh aa jaata hai — review, debug, interview teeno mein kaam aata hai.

Graph banana — nodes, edges, conditional routing

from typing import Annotated, TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages

class State(TypedDict):
    messages: Annotated[list, add_messages]   # reducer — naye messages append

def call_agent(state):
    reply = llm.bind_tools(TOOLS).invoke(state["messages"])
    return {"messages": [reply]}

def call_tools(state):
    outs = [run_tool(c) for c in state["messages"][-1].tool_calls]
    return {"messages": outs}                  # tool results state mein jodo

def route(state):
    last = state["messages"][-1]
    return "tools" if getattr(last, "tool_calls", None) else "end"

g = StateGraph(State)
g.add_node("agent", call_agent)
g.add_node("tools", call_tools)
g.add_edge(START, "agent")
g.add_conditional_edges("agent", route, {"tools": "tools", "end": END})
g.add_edge("tools", "agent")                   # yahi loop hai — wapas agent
app = g.compile()
Pro Tip: Graph compile karke utha kar phek do (visualize): get_graph ko draw karwa lo — chhote se chhota graph bhi aankhon se dekhna debug aadha kar deta hai.

Checkpointing aur resume

from langgraph.checkpoint.sqlite import SqliteSaver

checkpointer = SqliteSaver.from_conn_string("agent_state.db")
app = g.compile(checkpointer=checkpointer)

cfg = {"configurable": {"thread_id": "refund-case-42"}}   # run ki identity
app.invoke({"messages": [user_msg("Mera refund kahan hai?")]}, cfg)

# beech mein process crash ho gaya?  Wahi thread_id dobara chalao —
# checkpointer har step ka state save karta hai, wahi jagah se aage badhega.
# pura restart nahi — yahi hai resume ka mechanism.
Common trap: thread_id miss ho gaya toh har invoke ek naya run hai — persistence kaam hi nahi karegi. Config ko har call par consistently pass karo.

Human-in-the-loop interrupt

from langgraph.types import interrupt, Command

def approval(state):
    decision = interrupt({
        "question": "Refund approve karein?",
        "order_id": state["order_id"],
        "amount": state["amount"],
    })
    return {"approved": bool(decision)}

# interrupt() yahin graph ko rok deta hai — state checkpoint mein save,
# execution user ke paas chala jaata hai.

# user ne jawab de diya:
app.invoke(Command(resume=True), cfg)     # ya Command(resume=False)
# graph thama hua node wahi se dobara chalega

Yehi hai consequential tools ka graph-version gate (L5.3): action se pehle ruko, approval lo, phir aage. Interrupt ke bina approval sirf prompt mein likhi hui umeed hai — model usey kabhi kabhi todta hai.

Design rule: Interrupt tab lagao jahan side effect ho — refund, email, delete, deploy. Read-only steps par interrupt mat do, warna user har scroll par approval dega.

State se debug aur kab graph, kab plain loop

Rule of thumb: Tumhara while loop 3 se zyada alag branches, ek pause point, ya ek crash-resume requirement rakhta hai — graph switch ka time.

Exercise

Question: Node ke beech execution ki current situation ko represent karne wali typed object ka naam? (ek shabd)

Question: Do runs ko connect karne ke liye config mein kaunsa key hota hai? (do shabd)

Question: Conditional edge ka function return kya karta hai? (next node ka ...)

Question: Interrupt ke baad run ko aage badhane wala object ka naam? (ek shabd, English)

Common mistakes

Desi example: Railway junction vs seedhi sadak

Plain loop ek seedhi sadak hai — gaadi chalti jaati hai. Graph railway junction hai: signal (conditional edge) decide karta hai kaunsi track, aur stationmaster (state) har gaadi ka record rakhta hai:

text
sadak:   A -> B -> C (jab tak fuel hai, wahi raasta)
junction: START -signal-> agent -signal-> tools / END
                  ^_____________________________|  (loop track)
resume:  crash ke baad bhi stationmaster ke record se wahi gaadi wahi se chale
Interview angle — yahan se sawaal aate hain
  • Q: State, node aur edge — teeno ki responsibility ek-ek line mein batao.
  • Q: Checkpointing resume kaise enable karti hai — mechanism explain karo (thread_id ke saath).
  • Q: Human-in-the-loop approval kaise implement karoge — interrupt aur resume ke saath?
  • Q: Graph orchestration kab justified hai plain while loop ke against — 3 reasons do.
Lesson complete?

LangGraph pe controllable agent ready. Agla lesson — Sandboxed Execution — mein dekhenge model ka likha code production app ke andar direct kyun nahi chalana chahiye.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course