Lesson 65 — Beginner

Tools for Agents

Level 2 mein tumne tool calling seekhi — ek call, ek jawab. Agent mein wahi skill baar baar chalti hai: model available tools mein se chunta hai, arguments banata hai, aur outcome dekh kar agla kadam decide karta hai. Is lesson mein tool schema design, selection sudhaarna, failure recovery, result size limiting aur read-only vs consequential tools cover honge.

⏱ 20 min• Beginner• ReAct, Planning & Reflection

Tool ka anatomy — naam, description, schema

WHAT

Ek tool ek named function hai JSON schema ke saath — naam, description (kab use karna hai) aur typed parameters. Model yahi teeno padh kar decide karta hai ki call kare, kya nahi.

WHEN

Agent ki har capability ke liye — search karna, db padhna, API call, email bhejna. Har wo kaam jo sirf prompt se na ho.

WHERE

Tool registry mein define hote hain, loop mein model ke tool_calls se invoke hote hain, aur results wapas messages mein jaate hain.

TOOLS = [
  {
    "name": "search_orders",
    "description": "Customer ya order id se orders dhoondho. Sirf padhta hai — kuch badalta nahi. Use tab jab email ya order id diya ho.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {"type": "string", "description": "email ya order id ka fragment"},
        "limit": {"type": "integer", "minimum": 1, "maximum": 20, "default": 5}
      },
      "required": ["query"]
    }
  }
]
Yaad rakho: Model tool ko description se chunta hai — naam kaisa bhi ho, description decide karti hai kab use hoga. "Data nikalta hai" jaisi vague description = selection mistakes.

Tool selection aur arguments sudhaarna

Debug signal: Model galat tool chunta hai toh pehla check description hai, code nahi. Kaunsa tool kis reason se chuna — yeh log har team ko rakhna chahiye.

Sequential, dependent, parallel aur repeated calls

Agent ek turn mein ek se zyada tool calls bhi de sakta hai. Rule simple hai: dependent calls sequential, independent calls parallel, aur har repeat budget ke andar.

import asyncio

async def run_turn(calls, deps):
    # dependent: pehle order id chahiye tabhi refund status milega — seq
    order = await run_tool(calls[0])          # lookup_order(email=...)
    status = await run_tool(calls[1], order)  # refund_status(order_id=...)

    # independent: do alag API — saath chalao, waqt aadha
    a, b = await asyncio.gather(
        run_tool("inventory", sku="X1"),
        run_tool("tracking", ship_id="S9"),
        return_exceptions=True,               # ek fail ho toh doosra na gire
    )
    return {"status": status, "inventory": a, "tracking": b}

Failure se recovery aur result size

def safe_tool(call):
    try:
        raw = run_tool(call.name, call.args)
        return truncate(str(raw), limit=2000)   # context ko anjaan chhota na karo
    except UnknownTool:
        return "yeh tool exist nahi karta — available tools list dekho"
    except Timeout:
        return "tool ka waqt khatam — dobara try ya alag tool chuno"
    except Exception as exc:
        return f"tool nakaam raha: {type(exc).__name__}. Koi aur raasta try karo."
Common trap: Tool fail hua aur tumne exception loop ke bahar jaane diya — poora run crash. Wrapper har call ke chaaro taraf ho, yeh rule non-negotiable hai.

Read-only vs consequential tools

Tools ko do tiers mein baanto: read-only (search, list, get — rukne ki zarurat nahi) aur consequential (refund, delete, send — duniya badal dete hain). Consequential tools par hamesha confirmation/permission layer chahiye.

GATED = {"send_email", "issue_refund", "delete_record"}

def execute_refund(order_id, amount, approved=False):
    if not approved:
        return {"status": "needs_approval",
                "detail": "user confirmation chahiye — phir approved=True se call karo"}
    payments.refund(order_id, amount)
    return {"status": "refunded", "order_id": order_id}   # idempotent: ek hi baar
Rule of thumb: Read-only default rakh do, write tools par approval. Pehle build karo, baad mein gate lagana bhool jaana sabse common production mistake hai — kyunki tab tak ek refund ho chuka hoga.

Exercise

Question: Tool ke arguments ki structure define karne wala JSON standard ka naam? (do shabd)

Question: Tool ke output ko model ko bhejne se pehle size limit karne ka term? (ek shabd, English)

Question: Jo tools sirf data padhte hain, kuch badalte nahi — unhe kya bolte hain? (do shabd)

Question: Agent mein tool kaun chunta hai — tumhara code ya model?

Common mistakes

Desi example: Toolbox ka label

Ghar ke toolbox mein har instrument par naam aur use likha hota hai — "chhota screw, 2mm". Wahi tool description hai jo model padhta hai. Label gayab toh naya banda galat instrument le aayega:

python
# bekaar — model confuse
{"name": "do_something", "description": "data nikalta hai"}

# accha — kab, kya, kitna sab clear
{"name": "search_orders",
 "description": "Customer ke orders dhoondho. Use jab email ya order id diya ho. Sirf padhta hai, kuch badalta nahi."}
Interview angle — yahan se sawaal aate hain
  • Q: Ek agent tool ko design karte waqt kaunsi 5 cheezein zaroori hain?
  • Q: Tool failure ko agent loop mein kaise pass karoge taki wo recover kar sake?
  • Q: Parallel tool calls kab safe hain aur kab dependent calls sequential chahiye?
  • Q: Consequential tool par human approval kaise lagoge — implementation sketch do.
Lesson complete?

Tools ab agent-grade hain. Agla lesson — MCP — mein dekhenge same capabilities ko ek standard protocol se kaise expose karte hain taaki har compatible AI app use kar sake.

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