Single-Tool Prompt — Wire One Tool End to End
Day 15 বলেছিল tool use কী — loop, definition-এর তিন অংশ, brain বনাম hands। আজ (Day 21) সেটাই হাতেকলমে করবে: prompt-এর সাথে ঠিক একটা tool জুড়ে, loop-টা একবার ঘুরিয়ে, শেষ মাথা পর্যন্ত কাজ করানো।
- •একটা single-tool prompt কী — prompt + ঠিক একটা tool + loop, পাঁচটা না।
- •কেন একটা tool লাগে — model frozen + exact math-এ দুর্বল (tokenization, Day 2)।
- •সেই একটা tool নিখুঁত লেখা — name + description (আসল lever) + input_schema।
- •৪-message array নিজ চোখে বাড়তে দেখা — user → tool_use → tool_result → answer।
- •Result আর error handle করা — তোমার কোড চালায়, is_error দিয়ে recover।
- •Client tool (calculator — তুমি চালাও) বনাম server tool (web_search — Anthropic চালায়)।
- •Day 15 — tool use intro: loop, tool definition-এর তিন অংশ, brain vs hands।
- •Day 9 — structured output / JSON schema (input_schema চেনা লাগবে)।
- •Day 2 — tokenization (কেন model সংখ্যায় দুর্বল, সেটা এখানে কাজে লাগবে)।
কেন একটা Tool লাগে
একটা নির্দিষ্ট গর্ত ভরাট করতে একটা নির্দিষ্ট tool।
এতদিন তুমি শুধু prompt লিখেছ। Day 15 বলেছিল tool use আসলে কী — loop, definition-এর তিন অংশ, brain বনাম hands। আজ সেটা হাতেকলমে করবে: একটা prompt-এর সাথে ঠিক একটা tool জুড়ে, loop-টা একবার ঘোরাবে। উদাহরণ — calculator, কারণ এটাই সবচেয়ে পরিষ্কারভাবে দেখায় কেন একটা tool দরকার হয়।
Single-tool promptprompt + one tool + the loop
এতদিন তুমি শুধু prompt লিখেছ। আজ একটা prompt-এর সাথে ঠিক একটা tool জুড়বে, আর loop-টা একবার ঘোরাবে। কেন একটা tool? — model-এর knowledge frozen, আর exact math-এ সে দুর্বল (সংখ্যাকে টুকরো token হিসেবে দেখে, Day 2)। একটা নির্দিষ্ট গর্ত ভরাট করতে একটা নির্দিষ্ট tool।
প্রতিটা বড় agent একটা single tool থেকে শুরু। আগে একটা tool নিখুঁত করতে শেখো — definition, loop, error — তারপর পরের কোনো module-এ পাঁচটা tool-এর agent সহজ লাগবে। রাফি যদি Claude-কে দিয়ে invoice-এর হিসাব করায়, তার শুধু একটা calculator tool লাগে, দশটা না।
Tool-টা নিখুঁত লেখা
name আর schema তো সহজ — আসল কাজ description-এ।
একটা tool define করতে তিনটা জিনিস লাগে — name, description, আর input_schema (Day 9-এ JSON schema শিখেছিলে)। আজকের আসল কাজ description-টা ভালো লেখা — দুর্বল হলে Claude ভুল সময়ে ডাকে বা miss করে।
The tool definitionname + description + input_schema
সেই একটা tool define করতে তিনটা জিনিস: `name` (calculator), `description` (কী করে, কখন ডাকবে, input কেমন, কী ফেরত), আর `input_schema` (argument-এর JSON Schema)। আজকের আসল কাজ — `description`-টা ভালো লেখা। দুর্বল হলে Claude ভুল সময়ে ডাকে বা miss করে।
description হলো model-এর জন্য একটা prompt (Day 6)। "Calculates math" লিখলে দুর্বল; "Use this for ANY arithmetic… returns only the number" লিখলে Claude ঠিক সময়ে ঠিক call করে। ভালো tool লেখা মানে JSON ভরাট না — prompt engineering। ৩–৪ বাক্যের কম description প্রায়ই কম পারফর্ম করে।
৪-Message Loop চোখে দেখো
একটা tool call মানে এক উত্তর না — অন্তত দুটো API call লাগে।
একটা single-tool call মানে messages array-তে চারটা block জমা হয়: user-এর প্রশ্ন, assistant-এর tool_use request, তোমার দেওয়া tool_result, আর assistant-এর শেষ উত্তর। প্রতিটা request-এ তুমি আগের সব message আবার পাঠাও — model-এর তো memory নেই, array-ই তার স্মৃতি।
Four-message loopuser → tool_use → tool_result → answer
একটা single-tool call মানে messages array-তে চারটা block জমা হয়: (১) user-এর প্রশ্ন, (২) assistant-এর tool_use request, (৩) তোমার দেওয়া tool_result, (৪) assistant-এর শেষ উত্তর। প্রতিটা request-এ তুমি আগের সব message আবার পাঠাও — model-এর তো memory নেই, array-ই তার স্মৃতি।
অনেকে আটকায় এখানে: ভাবে এক call-এ উত্তর আসবে। আসে না — একটা tool ডাকলে অন্তত দুটো API call লাগে (একটা tool_use পেতে, আরেকটা result দিয়ে উত্তর পেতে)। এই array বাড়ার ছবিটা মাথায় থাকলে পুরো agent loop পরিষ্কার।
Result ফেরত দেওয়া
Model কিছু চালায় না — তোমার কোড চালায়, আর ব্যর্থ হলে সততার সাথে জানায়।
Model কিছুই চালায় না — সে শুধু চায়। তোমার কোড calculate(expression) চালিয়ে ফল tool_result-এ ফেরত দেয়, tool_use_id দিয়ে match করে। ব্যর্থ হলে crash না — is_error: true আর পরিষ্কার বার্তা দাও; Claude পড়ে recover করে।
Run and returnyour code runs; is_error on failure
Model কিছুই চালায় না — সে শুধু চায়। তোমার কোড calculate(expression) চালিয়ে ফল `tool_result`-এ ফেরত দেয়, `tool_use_id` দিয়ে match করে। ব্যর্থ হলে crash না — `is_error: true` আর পরিষ্কার বার্তা ("Error: division by zero") দাও; Claude পড়ে recover করে।
এই boundary-টাই safety (Day 15)। আর একটা সততা: calculator tool প্রায়ই eval() ব্যবহার করে, তাই আগে regex দিয়ে শুধু সংখ্যা/অপারেটর রাখে — tool যা পায় সব untrusted। Production-এ eval না, safe parser। এই ছোট সতর্কতাই পরের কোনো module-এর injection defense-এর শুরু।
Client বনাম Server Tool
কে চালায় — তার ওপর নির্ভর করে কোনটা বাছবে।
Calculator একটা client tool — তুমি function লেখো, তুমি চালাও, তুমি tool_result পাঠাও। web_search একটা server tool — শুধু type: "web_search_20250305" দিয়ে enable করো; Anthropic নিজে চালায়, result auto context-এ আসে, তোমাকে tool_result পাঠাতে হয় না।
Client vs serveryou run it / Anthropic runs it
Calculator একটা client tool — তুমি function লেখো, তুমি চালাও, তুমি tool_result পাঠাও। web_search একটা server tool — শুধু `type: "web_search_20250305"` দিয়ে enable করো; Anthropic নিজে চালায়, result auto context-এ আসে, তোমাকে tool_result পাঠাতে হয় না।
কোনটা বাছবে নির্ভর করে "কে চালাবে"-র উপর। তোমার private logic/data (calculator, database) → client। বাইরের সাধারণ ক্ষমতা (web search) → server, কম কোড কিন্তু খরচ ($10/1000) আর control কম। এই পার্থক্য বুঝলে tool বাছাই সহজ।
Nail one before fivetool-triggering control
একটা single-tool prompt পুরোপুরি কাজ করানো = prompt + একটা tool + loop + error handling। Claude tool কম ডাকলে description শক্ত করো বা system-এ nudge দাও ("Always use the calculator for arithmetic"); বেশি ডাকলে উল্টোটা। জোর করতে চাইলে tool_choice: any/tool।
একটা tool ঠিকঠাক না করে দশটা যোগ করলে debug করা অসম্ভব। পরের কোনো module-এ multi-tool agent বানাবে — কিন্তু সেটার ভিত্তি আজকের এই একটা নিখুঁত tool। reps matter more than count।
Check Your Understanding
ভুল হলে সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।
ভালো tool integration মানে একসাথে অনেকগুলো tool দেওয়া
Calculator tool দিলেই Claude আর নিজে হিসাব করে ভুল করবে না
tool_result-টা assistant message-এ পাঠাতে হয়
Tool চালাতে গিয়ে error হলে পুরো loop ভেঙে যায়
web_search-এর জন্যও তোমাকে function চালিয়ে tool_result পাঠাতে হয়
একটা tool ডাকলে এক API call-এই উত্তর পেয়ে যাবে
Claude একা "23,450 × 18%" প্রায়ই ভুল দেয় কেন?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
একটা tool-এর কোন অংশ ঠিক করে model কখন সেটা ডাকবে?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
tool_result block কোথায় ও কীভাবে পাঠাতে হয়?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
calculate() চালাতে গিয়ে "divide by zero" হলো — কী করবে?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
calculator আর web_search-এর মূল পার্থক্য কী?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
Claude দরকারের সময়ও calculator কম ডাকছে — প্রথমে কী করবে?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
Prove It To Yourself
চারটা takeaway মনে রাখো।
চারটা জিনিস মনে রাখো — A single-tool prompt = prompt + one tool + the loop: পাঁচটা না, একটা tool নিখুঁত করো আগে; এটাই প্রতিটা agent-এর ভিত্তি। The description is the lever: কী করে / কখন ডাকবে / input / output — ৩–৪ বাক্যে স্পষ্ট, দুর্বল হলে miss হয়। Four messages, two API calls: user → tool_use → tool_result → answer; tool_result user message-এ, আগে। Your code runs it; is_error to recover: model চায়, তুমি চালাও; ব্যর্থ হলে is_error দাও — loop ভাঙে না।
আজকের শব্দগুলো — tool definition, description, input_schema, tool_use, tool_result, tool_use_id, is_error, tool_choice, client tool, server tool, web_search — এখন থেকে English-ই থাকবে; নিজের project-এ এভাবেই ব্যবহার করবে। পুরো তালিকা নিচের glossary-তে। পরের lesson-এ এই ভিত্তির ওপরই আরও এগোবে।
শব্দার্থ — পরে ফিরে দেখার জন্য
একনজরে সব key term। কোনো শব্দ ভুলে গেলে এখানে এসে খুঁজে নিও।
- Client tool
- তোমার কোডে চলা tool (calculator) — তুমি tool_result পাঠাও।
- description
- Tool কী করে / কখন ডাকবে / input / output — model এটা পড়েই সিদ্ধান্ত নেয়।
- eval risk
- calculator-এ eval untrusted — আগে sanitize করো, production-এ safe parser।
- input_schema
- Tool-এর argument-এর JSON Schema (Day 9)।
- is_error
- tool_result-এ true দিলে Claude বোঝে tool ব্যর্থ হয়েছে, recover করে।
- Server tool
- Anthropic-এ চলা tool (web_search) — result auto আসে।
- Single-tool prompt
- Prompt + ঠিক একটা tool + loop — agent-এর সবচেয়ে ছোট রূপ।
- Tool definition
- একটা tool-এর spec: name + description + input_schema।
- tool_choice
- auto (model ঠিক করে) / any / tool (নির্দিষ্ট) / none।
- tool_result (block)
- তোমার ফেরত: function-এর ফল, tool_use_id-সহ, user message-এ আগে।
- tool_use (block)
- Model-এর request: কোন tool, কোন input। stop_reason "tool_use"।
- tool_use_id
- tool_use আর tool_result মেলানোর id।
- web_search
- Server tool: type দিয়ে enable, citation-সহ live result, $10/1000।
Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.
- Define tools — Anthropic (2025)
- Handle tool calls — Anthropic (2025)
- Calculator tool (cookbook) — Anthropic (2025)
- Web search tool — Anthropic (2025)
- How Tokenization Murders Your Model's Ability to Do Basic Math — Lucven AI; arXiv:2510.06824 (2025)
দুই বাক্যে নিজের ভাষায় লেখো
নিজের ভাষায় দুই বাক্যে লেখো — একটা single-tool prompt আসলে কী (prompt + একটা tool + loop), আর description-টা কেন সবচেয়ে গুরুত্বপূর্ণ অংশ, একটা উদাহরণ দিয়ে বোঝাও।