Back to course
Module 3 · Day 21

Single-Tool Prompt — Wire One Tool End to End

Day 15 বলেছিল tool use কী — loop, definition-এর তিন অংশ, brain বনাম hands। আজ (Day 21) সেটাই হাতেকলমে করবে: prompt-এর সাথে ঠিক একটা tool জুড়ে, loop-টা একবার ঘুরিয়ে, শেষ মাথা পর্যন্ত কাজ করানো।

~170 min read6 learning objectives
What you'll learn
  • একটা 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 চালায়)।
Before this
  • Day 15 — tool use intro: loop, tool definition-এর তিন অংশ, brain vs hands।
  • Day 9 — structured output / JSON schema (input_schema চেনা লাগবে)।
  • Day 2 — tokenization (কেন model সংখ্যায় দুর্বল, সেটা এখানে কাজে লাগবে)।
1

কেন একটা 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।

Why it matters

প্রতিটা বড় agent একটা single tool থেকে শুরু। আগে একটা tool নিখুঁত করতে শেখো — definition, loop, error — তারপর পরের কোনো module-এ পাঁচটা tool-এর agent সহজ লাগবে। রাফি যদি Claude-কে দিয়ে invoice-এর হিসাব করায়, তার শুধু একটা calculator tool লাগে, দশটা না।

2

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 করে।

Why it matters

description হলো model-এর জন্য একটা prompt (Day 6)। "Calculates math" লিখলে দুর্বল; "Use this for ANY arithmetic… returns only the number" লিখলে Claude ঠিক সময়ে ঠিক call করে। ভালো tool লেখা মানে JSON ভরাট না — prompt engineering। ৩–৪ বাক্যের কম description প্রায়ই কম পারফর্ম করে।

3

৪-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-ই তার স্মৃতি।

Why it matters

অনেকে আটকায় এখানে: ভাবে এক call-এ উত্তর আসবে। আসে না — একটা tool ডাকলে অন্তত দুটো API call লাগে (একটা tool_use পেতে, আরেকটা result দিয়ে উত্তর পেতে)। এই array বাড়ার ছবিটা মাথায় থাকলে পুরো agent loop পরিষ্কার।

4

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 করে।

Why it matters

এই boundary-টাই safety (Day 15)। আর একটা সততা: calculator tool প্রায়ই eval() ব্যবহার করে, তাই আগে regex দিয়ে শুধু সংখ্যা/অপারেটর রাখে — tool যা পায় সব untrusted। Production-এ eval না, safe parser। এই ছোট সতর্কতাই পরের কোনো module-এর injection defense-এর শুরু।

5

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 পাঠাতে হয় না।

Why it matters

কোনটা বাছবে নির্ভর করে "কে চালাবে"-র উপর। তোমার 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।

Why it matters

একটা tool ঠিকঠাক না করে দশটা যোগ করলে debug করা অসম্ভব। পরের কোনো module-এ multi-tool agent বানাবে — কিন্তু সেটার ভিত্তি আজকের এই একটা নিখুঁত tool। reps matter more than count।

6

Check Your Understanding

ভুল হলে সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।

Misconception check

ভালো tool integration মানে একসাথে অনেকগুলো tool দেওয়া

Misconception check

Calculator tool দিলেই Claude আর নিজে হিসাব করে ভুল করবে না

Misconception check

tool_result-টা assistant message-এ পাঠাতে হয়

Misconception check

Tool চালাতে গিয়ে error হলে পুরো loop ভেঙে যায়

Misconception check

web_search-এর জন্যও তোমাকে function চালিয়ে tool_result পাঠাতে হয়

Misconception check

একটা tool ডাকলে এক API call-এই উত্তর পেয়ে যাবে

Quick check

Claude একা "23,450 × 18%" প্রায়ই ভুল দেয় কেন?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

একটা tool-এর কোন অংশ ঠিক করে model কখন সেটা ডাকবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

tool_result block কোথায় ও কীভাবে পাঠাতে হয়?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

calculate() চালাতে গিয়ে "divide by zero" হলো — কী করবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

calculator আর web_search-এর মূল পার্থক্য কী?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Claude দরকারের সময়ও calculator কম ডাকছে — প্রথমে কী করবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

7

Prove It To Yourself

চারটা takeaway মনে রাখো।

Note

চারটা জিনিস মনে রাখো — 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-এ এই ভিত্তির ওপরই আরও এগোবে।

Glossary

শব্দার্থ — পরে ফিরে দেখার জন্য

একনজরে সব 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।
References

Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.

Exit check

দুই বাক্যে নিজের ভাষায় লেখো

নিজের ভাষায় দুই বাক্যে লেখো — একটা single-tool prompt আসলে কী (prompt + একটা tool + loop), আর description-টা কেন সবচেয়ে গুরুত্বপূর্ণ অংশ, একটা উদাহরণ দিয়ে বোঝাও।

0 chars
Back to course