Lesson 32 — Beginner

Designing Good Tools

Tool schema technically sahi hona kaafi nahi — model ko choose bhi karna padta hai. Do tools ek jaise dikhein, description dhundhli ho, ya arguments das hon toh model galat pick karega. Is lesson mein hum names, descriptions, types, ambiguity, overload aur untrusted arguments ki designing dekhenge.

⏱ 10 min• Beginner• Function & Tool Calling

Tool design kya decide karta hai

WHAT

Tool designing matlab aisi schema likhna jisse model ka decision clear ho — naam se pata chale kya karta hai, description se kab lagana hai, parameters se kya chahiye. Yeh sab model ka context hai.

WHEN

Pehli baar tool add karte waqt, tool selection galat ho raha ho, ya naya tool pipeline mein ja raha ho. Ek baar likh kar test = baad mein debug time bachaao.

WHERE

Har tool definition file mein — internal APIs, DB functions, search, actions — jahan bhi model decide karta hai ki kya call kare.

Yaad rakho: tool descriptions khud context hain. Model sirf prompt ka text hi nahi, tool schemas bhi padh kar decide karta hai — dono ek hi context window mein rehte hain.

Names, descriptions aur strong types

# GALAT — naam vague, description bekaar, sab kuch string
{"name": "process", "description": "data process karta hai",
 "parameters": {"type": "object",
                "properties": {"data": {"type": "string"}},
                "required": ["data"]}}

# SAHI — specific naam, kab-use-wali description, strong types
{"name": "refund_order",
 "description": "Order ki refund request banata hai. Sirf tab use karo jab user refund maang raha ho aur order delivered ho chuka ho.",
 "parameters": {"type": "object",
   "properties": {
     "order_id": {"type": "string", "pattern": "^ORD-[0-9]+$",
                  "description": "Format: ORD-4821"},
     "amount_rupees": {"type": "number", "description": "Positive amount"},
     "reason": {"type": "string", "description": "Ek line reason for audit"}
   },
   "required": ["order_id", "amount_rupees", "reason"]}}
Rule of thumb: Har parameter ka description likho — model sirf schema padh kar hi arguments bharta hai. Description missing ho toh model guess karega, aur guess = bug.

Ambiguity aur tool overload

# AMBIGUOUS — dono "order dhoondhna", model confuse
search_orders(query)      # query mein status ya text, kya daalein?
lookup_order(order_id)
filter_orders(status)     # -> model randomly ek chunta hai

# OVERLOAD — 25 tools, sab ek jaise read_*
# selection accuracy girti hai + har request mein sab schemas jaate hain

# FIX — group karo, parameters se differentiate karo
find_order(order_id=None, status=None, text=None)   # ek tool, teeno filters
Budget: Tool list bada ho toh har request ke saath sab schemas context mein jaate hain — tokens aur confusion dono badhte hain. 5-10 sharp tools > 40 vague tools.

Arguments = untrusted input

ALLOWED_REFUND_MAX = 5000

def execute_refund(args):
    order_id = args.get("order_id")            # missing?
    amount = float(args.get("amount_rupees", 0))

    if not isinstance(order_id, str):
        raise ValueError("order_id galat type ka hai")
    if amount <= 0 or amount > ALLOWED_REFUND_MAX:
        raise ValueError("amount limit ke bahar — human review")
    if not user_can_refund(current_user, order_id):   # permission
        raise PermissionError("is user ko ye tool chalane ka haq nahi")

    return refund_api(order_id, amount)        # destructive step aakhri mein
Boundary: Schema validation aur argument validation alag hain. Schema bolti hai "number hai" — tumhari code bolti hai "5000 se zyada nahi". Dono chahiye.

Exercise

Question: Model ko batata hai ki tool kab use karna hai — tool ke kis hisse ko sabse dhyan se likhna chahiye?

Question: Parameter ki allowed values ko restrict karne ke liye schema mein kya use karte hain?

Question: Model-generated arguments ko kis tarah treat karte hain — trusted ya untrusted?

Question: Do tools bahut overlapping hon toh better hai unhe kya karna — merge kar lena ya tools badhate jaana?

Common mistakes

Desi example: Dhabhe ka menu board

Board par likha hai toh waiter ko guess nahi karna padta — item, kya hai, kitne ka. Tool description wahi board hai, aur parameter description extra chitthi jo amount batati hai:

text
Board (description)                      Waiter ka decision (model)
"Refund — delivered order, 5000 tak"     -> refund tool chuno
"Refund — kabhi bhi, koi limit nahi"      -> ??? (galat pick)

Chitthi (parameter description): "amount positive, rupees mein"
-> waiter guess nahi karega ki kitne ka refund
Interview angle — yahan se sawaal aate hain
  • Q: Tool description mein kya likhna chahiye? — Kya karta hai, kab use karna hai aur kab nahi — model ka decision context isi se banta hai.
  • Q: Bahut saare tools diye toh kya hota hai? — Selection errors, bada prompt, zyada tokens; group karo aur sharp rakho.
  • Q: Model ke arguments kyun validate karne padte hain? — Wo generated hain, trusted nahi; type, range aur permission check zaroori hai.
  • Q: Refund/delete jaise destructive tool kaise secure karo? — Limits, permission check aur confirmation gate — schema ke saath code-level controls.
Lesson complete?

Tool design clear. Agla lesson — Multi-step LLM Workflows — mein dekhenge ek call se badh kar pipeline kaise banate hain.

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