মূল লেখায় যাও
AI Engineering
English

Part ০৬

Tool Use আর Integration

LLM কীভাবে নিজে কাজ করতে শেখে: tool/function schema-র design, parallel tool calling, Model Context Protocol (MCP) server/client/resource/prompt, sandbox-এ code চালানো (E2B, Modal, Daytona, Cloudflare), API wrapper, আর LLM যাতে সহজে পড়তে পারে সেভাবে tool-result সাজানো। প্রতিটি section দুই ভাবে লেখা: engineer-এর জন্য technical version (code আর diagram সহ), আর সাধারণ পাঠকের জন্য সহজ ভাষায় ব্যাখ্যা (উপমা সহ)। প্রতিটি topic-এর শেষে বাংলা ব্যাখ্যাও আছে।

১টি section · ৩০টি source · তিনভাবে ব্যাখ্যা

01

Tool use আর integration (MCP সহ)

Tool না দেওয়া পর্যন্ত LLM শুধু একটা text generator। Tool মানে এমন একটা উপায়, যাতে সে আপনার API call করতে, code চালাতে, database-এ query করতে বা file পড়তে পারে। Chatbot-এর demo আর production system-এর মধ্যে তফাত গড়ে দেয় tool design। সবচেয়ে বড় প্রভাব ফেলার সিদ্ধান্ত হলো আপনার tool description-এর মান।

অনুশীলন · ৪টি task

যেকোনো free AI chat খোলো: ChatGPT · Claude · Gemini

অনুশীলন কীভাবে করবে
  • নতুন chat মানে একদম নতুন কথোপকথন, আগের কোনো history নেই। ChatGPT, Claude বা Gemini-তে New chat-এ click করো। সাধারণত এটা উপরে বাঁ দিকে থাকে।
  • একই chat মানে: যে chat খোলা আছে, সেখানেই লিখতে থাকো। আগে যা পাঠিয়েছ, AI তা মনে রাখে।
  • Prompt ব্যবহার করতে: Copy-তে click করো, chat-এর message box-এ click করো, paste করো (Ctrl+V, বা phone-এ চেপে ধরে রাখো), তারপর Enter চাপো।
  • AI-এর উত্তর প্রতিবার একটু আলাদা হয়। তোমার উত্তর example-এর সাথে হুবহু মিলতে হবে না। একই ধারণা আছে কি না, সেটা দেখো।
  • শুধু বানানো data ব্যবহার করো। নিজের বা অন্যের ব্যক্তিগত তথ্য chat-এ paste করবে না।

Task ১

Chat-এ নিজেই tool হয়ে দেখো

এটা কেন দরকার

তুমি যখন order দেখার একটা support chatbot বানাবে, model তোমার database দেখতে পারে না। তোমার code-কে tool চালিয়ে result model-কে ফেরত দিতে হবে। তাই model কী পাঠায় আর কী ফেরত চায়, সেটা জানা দরকার।

  1. ধাপ ১
    নতুন chat

    এই prompt টা copy করো, chat-এ paste করে Enter চাপো। উত্তরটা পড়ো। (JSON আর tool-এর নাম English-এ আছে, তাই এই অংশ English-এ রাখা হয়েছে।)

    Prompt
    তুমি একটা online shop-এর support assistant। তুমি শুধু ১টা tool ব্যবহার করতে পারো।
    
    Tool:
    {"name": "get_order_status", "description": "Look up the status of one customer order. Use when the user asks where their order is. Returns status, carrier, and expected delivery date, or an error field if the order is not found.", "input_schema": {"type": "object", "properties": {"order_id": {"type": "string", "description": "Order ID such as ORD-4821"}}, "required": ["order_id"]}}
    
    নিয়ম:
    ১. tool লাগলে শুধু একটা JSON object দিয়ে উত্তর দাও, এই রকম: {"tool": "name", "input": {...}}। আর কোনো লেখা লিখবে না।
    ২. আমি tool-এর result পাঠানোর পর customer-কে বাংলায় দুটো ছোট বাক্যে উত্তর দাও।
    
    Customer-এর message: "হাই, আমার অর্ডার ORD-4821 এখনো আসেনি। এটা কোথায়?"

    তুমি দেখবে: শুধু একটা ছোট JSON object, তাতে tool-এর নাম get_order_status আর order ID ORD-4821 আছে। অন্য কোনো লেখা নেই।

    Example উত্তর
    {"tool": "get_order_status", "input": {"order_id": "ORD-4821"}}

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  2. ধাপ ২
    একই chat

    এবার তুমিই tool। এই বানানো tool result টা copy করো, paste করে Enter চাপো।

    Prompt
    TOOL RESULT for get_order_status:
    
    | field | value |
    |---|---|
    | status | delayed |
    | carrier | SwiftCourier |
    | expected_delivery | 2026-03-14 |
    | delay_reason | warehouse backlog |
    
    এবার customer-কে বাংলায় উত্তর দাও।

    তুমি দেখবে: Customer-এর জন্য দুটো ছোট বাক্য। তোমার table থেকে carrier, নতুন তারিখ আর কারণ ব্যবহার করা হয়েছে।

    Example উত্তর
    দুঃখিত, গুদামে কাজের চাপের কারণে আপনার অর্ডার ORD-4821 দেরি হচ্ছে। SwiftCourier এখন ২০২৬-০৩-১৪ তারিখে এটা পৌঁছে দেওয়ার কথা বলছে।

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  3. ধাপ ৩
    নতুন chat

    আবার শুরু করো। ধাপ ১-এর prompt টাই আবার copy করো, paste করে Enter চাপো।

    Prompt
    তুমি একটা online shop-এর support assistant। তুমি শুধু ১টা tool ব্যবহার করতে পারো।
    
    Tool:
    {"name": "get_order_status", "description": "Look up the status of one customer order. Use when the user asks where their order is. Returns status, carrier, and expected delivery date, or an error field if the order is not found.", "input_schema": {"type": "object", "properties": {"order_id": {"type": "string", "description": "Order ID such as ORD-4821"}}, "required": ["order_id"]}}
    
    নিয়ম:
    ১. tool লাগলে শুধু একটা JSON object দিয়ে উত্তর দাও, এই রকম: {"tool": "name", "input": {...}}। আর কোনো লেখা লিখবে না।
    ২. আমি tool-এর result পাঠানোর পর customer-কে বাংলায় দুটো ছোট বাক্যে উত্তর দাও।
    
    Customer-এর message: "হাই, আমার অর্ডার ORD-4821 এখনো আসেনি। এটা কোথায়?"

    তুমি দেখবে: ধাপ ১-এর মতোই একটা JSON tool request।

    Example উত্তর
    {"tool": "get_order_status", "input": {"order_id": "ORD-4821"}}

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  4. ধাপ ৪
    একই chat

    এবার tool fail করেছে। এই error result টা copy করো, paste করে Enter চাপো। দেখো, উত্তরে বানানো কোনো তারিখ আছে কি না।

    Prompt
    TOOL RESULT for get_order_status:
    
    {"error": "order_not_found", "retryable": false}
    
    এবার customer-কে বাংলায় উত্তর দাও।

    তুমি দেখবে: ভালো উত্তরে বলা হবে order পাওয়া যায়নি, আর সাহায্য করার কথা থাকবে। সে কোনো delivery তারিখ বানাবে না। কিছু model তবুও আন্দাজ করতে পারে, তাই মন দিয়ে পড়ো।

    Example উত্তর
    দুঃখিত, ORD-4821 ID-র কোনো অর্ডার আমি খুঁজে পাইনি। ID টা আবার দেখে নিন, অথবা আমি আপনাকে আমাদের support team-এর সাথে যুক্ত করে দিতে পারি।

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

এইমাত্র কী হলো

Model কোনো tool চালাতে পারে না, সে শুধু লেখা লেখে। প্রথমে সে একটা tool call লিখেছে (মানে কোন tool কী input দিয়ে চালাতে হবে, তার অনুরোধ)। তুমি tool চালিয়ে result paste করেছ, তাই result টা prompt-এর অংশ হয়ে গেছে। Model সেটা পড়ে উত্তর দিয়েছে। পরিষ্কার error result model-কে বলেছে যে আন্দাজ করা যাবে না।

কাজ শেষ, যখন তোমার কাছে দুটো final উত্তর আছে: একটায় তোমার table-এর carrier আর তারিখ আছে, আরেকটায় বলা আছে order পাওয়া যায়নি।

নিজেকে যাচাই করোএই task-এ কে tool চালিয়েছে? Model result দিয়ে কী করেছে?উত্তর দেখো

তুমি tool চালিয়েছ, কারণ model শুধু লেখা লেখে। Result টা prompt-এর অংশ হয়েছে, আর model সেটা পড়ে উত্তর লিখেছে। তাই tool-কে পরিষ্কার shape-এ result দিতে হয়, আর fail করলে একটা error field দিতে হয়।

আরেকটু কঠিন করে দেখোধাপ ২-এর table-এ ১৫টা বাড়তি বানানো সারি যোগ করো। উত্তর কি এখনো ভালো? তারপর table আবার ৪ সারিতে ছোট করো। কোনটা model-এর পড়তে সহজ?

Task ২

অস্পষ্ট আর পরিষ্কার tool description মিলিয়ে দেখো

এটা কেন দরকার

তুমি যখন একটা AI agent-কে কয়েকটা tool দেবে, সে প্রতিটা tool-এর নাম আর description পড়ে একটা বাছে। লেখা অস্পষ্ট হলে সে ভুল tool বাছে বা আটকে যায়, আর তোমার bot ভুল উত্তর দেয়।

  1. ধাপ ১
    নতুন chat

    এই prompt টা copy করো। এতে দুটো tool আছে, দুটোর description অস্পষ্ট। Paste করে Enter চাপো, আর model কী করে লিখে রাখো। (tool-এর নাম আর JSON English-এ থাকে, তাই এই অংশ English-এ রাখা হয়েছে।)

    Prompt
    তুমি এই tool-গুলো ব্যবহার করতে পারো:
    [
      {"name": "search", "description": "Searches.", "input_schema": {"type": "object", "properties": {"q": {"type": "string"}}}},
      {"name": "find", "description": "Finds things.", "input_schema": {"type": "object", "properties": {"q": {"type": "string"}}}}
    ]
    
    নিয়ম: কোনো tool কাজে লাগলে শুধু একটা JSON object দিয়ে উত্তর দাও, এই রকম: {"tool": "name", "input": {...}}। কোন tool ঠিক, সে ব্যাপারে নিশ্চিত না হলে এক বাক্যে বলো কেন নিশ্চিত নও। প্রশ্নের উত্তর নিজে দেবে না।
    
    User-এর প্রশ্ন: "Farhana Akter কার কাছে report করে?"

    তুমি দেখবে: প্রায়ই এক বাক্যে বলবে সে নিশ্চিত না কোন tool ঠিক। কিছু model আন্দাজে search বা find বাছে।

    Example উত্তর
    কোন tool ঠিক, আমি নিশ্চিত না। কারণ দুটো tool-এর description শুধু "Searches" আর "Finds things", কোনটাতেই লেখা নেই যে মানুষের তথ্য খোঁজা যায়।

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  2. ধাপ ২
    নতুন chat

    নতুন chat খোলো। এই prompt টা copy করো। প্রশ্ন একই, কিন্তু tool দুটোর description পরিষ্কার। Paste করে Enter চাপো, আর ধাপ ১-এর সাথে মেলাও।

    Prompt
    তুমি এই tool-গুলো ব্যবহার করতে পারো:
    [
      {"name": "search_documents", "description": "Search the company wiki for policy pages and project documents. Use when the user asks about internal policy or past projects. Does NOT return data about people. Returns the top 5 text chunks with source URLs.", "input_schema": {"type": "object", "properties": {"query": {"type": "string", "description": "Natural-language query, 3 to 8 words."}}, "required": ["query"]}},
      {"name": "get_employee", "description": "Look up one employee by full name. Use when the user asks who someone is, who their manager is, or which team they are in. Returns name, job title, manager, and team.", "input_schema": {"type": "object", "properties": {"full_name": {"type": "string", "description": "Full name, for example Farhana Akter."}}, "required": ["full_name"]}}
    ]
    
    নিয়ম: কোনো tool কাজে লাগলে শুধু একটা JSON object দিয়ে উত্তর দাও, এই রকম: {"tool": "name", "input": {...}}। কোন tool ঠিক, সে ব্যাপারে নিশ্চিত না হলে এক বাক্যে বলো কেন নিশ্চিত নও। প্রশ্নের উত্তর নিজে দেবে না।
    
    User-এর প্রশ্ন: "Farhana Akter কার কাছে report করে?"

    তুমি দেখবে: বেশিরভাগ model get_employee-এর জন্য একটা JSON request পাঠায়, full name Farhana Akter দিয়ে।

    Example উত্তর
    {"tool": "get_employee", "input": {"full_name": "Farhana Akter"}}

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

এইমাত্র কী হলো

দুটো prompt-এ প্রশ্ন একই ছিল। শুধু tool-এর লেখা বদলেছে। Model বাছার আগে প্রতিটা tool-এর নাম আর description পড়ে, তাই এই লেখা ছোট একটা manual-এর মতো কাজ করে। ভালো লেখায় থাকে verb আর noun দিয়ে বানানো নাম (get_employee), tool কী করে আর কখন ব্যবহার করতে হবে সেই বাক্য, আর উদাহরণসহ input-এর বর্ণনা।

কাজ শেষ, যখন তোমার কাছে দুটো উত্তর আছে: একটায় model নিশ্চিত না বা আন্দাজ করছে, আরেকটায় পরিষ্কার get_employee request।

নিজেকে যাচাই করোTool-এর লেখার কোন তিনটা অংশ দ্বিতীয় prompt-কে model-এর জন্য সহজ করেছে?উত্তর দেখো

verb আর noun দিয়ে নাম, যেমন get_employee। Tool কী করে আর কখন ব্যবহার করতে হবে, সেই description। আর উদাহরণসহ input field-এর বর্ণনা। Model সিদ্ধান্ত নেওয়ার আগে এই সবকিছু পড়ে।

আরেকটু কঠিন করে দেখোদ্বিতীয় prompt-এ দুটো description-ই বদলে শুধু "Looks things up." করে দাও। নাম পরিষ্কার রাখো। Model কি এখনো ঠিক বাছে? নাম বেশি জরুরি, না description?

Task ৩

কোন tool call একসাথে চলতে পারে, চিনে নাও

এটা কেন দরকার

একটা agent-এর যখন কয়েকটা তথ্য লাগে, একটা একটা করে tool-এর জন্য অপেক্ষা করলে user-কে অনেক সময় বসে থাকতে হয়। Travel বা support bot-এ যে call-গুলো একে অপরের উপর নির্ভর করে না, সেগুলো একসাথে চালালে উত্তর অনেক দ্রুত আসে।

  1. ধাপ ১
    নতুন chat

    এই prompt টা copy করো, paste করে Enter চাপো। List-এ কয়টা tool call আছে, গুনে দেখো। (tool-এর নাম আর JSON English-এ, তাই এখানে English-এ রাখা হয়েছে।)

    Prompt
    তুমি এই tool-গুলো ব্যবহার করতে পারো:
    1. get_weather(city): এক শহরের এখনকার আবহাওয়া দেয়।
    2. get_exchange_rate(from, to): দুটো currency code-এর (যেমন USD আর BDT) exchange rate দেয়।
    3. get_user_city(user_id): একজন user-এর নিজের শহর দেয়।
    
    নিয়ম: শুধু tool call-এর একটা JSON list দিয়ে উত্তর দাও, এই রকম: [{"tool": "name", "input": {...}}]। যে call-গুলো তুমি এখনই করতে পারো, সবগুলো list-এ দাও। কোনো call অন্য call-এর result ছাড়া করা যায় না হলে সেটা বাদ দাও। আর কোনো লেখা লিখবে না।
    
    User-এর প্রশ্ন: "Tokyo-তে আবহাওয়া কেমন, আর 1 USD কত BDT?"

    তুমি দেখবে: একটা list-এ ২টা call: Tokyo-র আবহাওয়ার call, আর USD থেকে BDT exchange rate-এর call।

    Example উত্তর
    [{"tool": "get_weather", "input": {"city": "Tokyo"}}, {"tool": "get_exchange_rate", "input": {"from": "USD", "to": "BDT"}}]

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  2. ধাপ ২
    নতুন chat

    নতুন chat খোলো। এই prompt টা copy করো, paste করে Enter চাপো। call গুনে দেখো। ভাবো, list এত ছোট কেন।

    Prompt
    তুমি এই tool-গুলো ব্যবহার করতে পারো:
    1. get_weather(city): এক শহরের এখনকার আবহাওয়া দেয়।
    2. get_exchange_rate(from, to): দুটো currency code-এর (যেমন USD আর BDT) exchange rate দেয়।
    3. get_user_city(user_id): একজন user-এর নিজের শহর দেয়।
    
    নিয়ম: শুধু tool call-এর একটা JSON list দিয়ে উত্তর দাও, এই রকম: [{"tool": "name", "input": {...}}]। যে call-গুলো তুমি এখনই করতে পারো, সবগুলো list-এ দাও। কোনো call অন্য call-এর result ছাড়া করা যায় না হলে সেটা বাদ দাও। আর কোনো লেখা লিখবে না।
    
    User-এর প্রশ্ন: "User U-77 যে শহরে থাকে, সেখানকার আবহাওয়া কেমন?"

    তুমি দেখবে: মাত্র ১টা call: U-77-এর জন্য get_user_city। আবহাওয়ার call-এর আগে শহরের নাম লাগে।

    Example উত্তর
    [{"tool": "get_user_city", "input": {"user_id": "U-77"}}]

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  3. ধাপ ৩
    নতুন chat

    নতুন chat খোলো। এই prompt টা copy করো, paste করে Enter চাপো। লিখে রাখো, list-এ কোন call আছে আর কোনটা নেই।

    Prompt
    তুমি এই tool-গুলো ব্যবহার করতে পারো:
    1. get_weather(city): এক শহরের এখনকার আবহাওয়া দেয়।
    2. get_exchange_rate(from, to): দুটো currency code-এর (যেমন USD আর BDT) exchange rate দেয়।
    3. get_user_city(user_id): একজন user-এর নিজের শহর দেয়।
    
    নিয়ম: শুধু tool call-এর একটা JSON list দিয়ে উত্তর দাও, এই রকম: [{"tool": "name", "input": {...}}]। যে call-গুলো তুমি এখনই করতে পারো, সবগুলো list-এ দাও। কোনো call অন্য call-এর result ছাড়া করা যায় না হলে সেটা বাদ দাও। আর কোনো লেখা লিখবে না।
    
    User-এর প্রশ্ন: "Tokyo-র আবহাওয়ার সাথে user U-77 যে শহরে থাকে সেখানকার আবহাওয়া তুলনা করো।"

    তুমি দেখবে: ২টা call: Tokyo-র আবহাওয়া আর U-77-এর জন্য get_user_city। U-77-এর শহরের আবহাওয়ার call list-এ নেই, কারণ সেটাকে অপেক্ষা করতে হবে।

    Example উত্তর
    [{"tool": "get_weather", "input": {"city": "Tokyo"}}, {"tool": "get_user_city", "input": {"user_id": "U-77"}}]

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

এইমাত্র কী হলো

Tokyo-র আবহাওয়া আর BDT rate একে অপরের উপর নির্ভর করে না। Model একই turn-এ দুটোই চায়, আর দুটো একসাথে চলে। একে বলে parallel tool calls। U-77-এর শহরের আবহাওয়ার জন্য আগে শহরের নাম লাগে, তাই সেটাকে পরের turn পর্যন্ত অপেক্ষা করতে হয়। Parallel call হলে মোট অপেক্ষা হয় সবচেয়ে ধীর call-এর সমান, সব call-এর যোগফলের সমান নয়।

কাজ শেষ, যখন তোমার কাছে ৩টা list আছে, যেগুলোতে call আছে ২টা, ১টা আর ২টা, আর শেষটায় কোন call বাদ পড়েছে সেটা তুমি জানো।

নিজেকে যাচাই করোParallel tool call agent-কে দ্রুত করে কেন? কখন এটা ব্যবহার করা যায় না?উত্তর দেখো

নির্ভরশীল না হলে call-গুলো একসাথে চলে, তাই অপেক্ষা হয় শুধু সবচেয়ে ধীর call-এর সমান। একটা call-এর জন্য অন্য call-এর result লাগলে সেটাকে পরের turn পর্যন্ত অপেক্ষা করতে হয়।

আরেকটু কঠিন করে দেখোএমন একটা প্রশ্ন লেখো, যাতে ৩টা call লাগে: দুটো একসাথে চলতে পারে, একটাকে অপেক্ষা করতে হয়। নতুন chat-এ test করো। Model কি call-গুলো ঠিকভাবে ভাগ করেছে?

Task ৪

একটা MCP server-এর feature ভাগ করো

এটা কেন দরকার

তোমার team-এ অনেক app আর অনেক data source থাকলে প্রতিটা সংযোগ হাতে বানাতে কয়েক সপ্তাহ লেগে যায়। MCP একটা shared standard, যা এই কাজ কমায়। এর তিন ধরনের feature-ও তোমাকে জানতে হবে।

  1. ধাপ ১
    নতুন chat

    এই prompt-এর ৮টা feature পড়ো। কাগজে প্রতিটার জন্য tool, resource, না prompt, আন্দাজ করে লেখো। তারপর copy করে paste করো, Enter চাপো, আর মিলিয়ে দেখো।

    Prompt
    একটা Postgres database-এর MCP server এই feature-গুলো দেয়:
    1. run_query: একটা SQL query চালায় আর rows ফেরত দেয়
    2. সব table আর column-এর list, db://schema address-এ পড়া যায়
    3. "weekly-sales-report" নামে একটা saved template, user menu থেকে নাম দেখে বাছে
    4. insert_row: একটা table-এ নতুন row যোগ করে
    5. গতকালের order-এর একটা read-only CSV file, db://exports/orders-yesterday address-এ
    6. "explain-this-slow-query" নামে একটা template, user যে query দেয় সেটা বসিয়ে নেয়
    7. delete_old_logs: ৯০ দিনের পুরনো log row মুছে দেয়
    8. একজন customer-এর record-এর লেখা, db://customers/1042 address-এ
    
    MCP-তে তিন ধরনের primitive আছে:
    - Tool: model যে function call করে কোনো কাজ (action) করাতে পারে।
    - Resource: read-only data, client দরকার হলে এনে নিতে পারে।
    - Prompt: নাম দেওয়া prompt template, user বেছে নিতে পারে।
    
    প্রতিটা feature-কে একটা primitive-এ ভাগ করো। একটা table দিয়ে উত্তর দাও: নম্বর, primitive, আর ১০ শব্দ বা কম শব্দে কারণ।

    তুমি দেখবে: একটা table। ১, ৪, ৭ নম্বর tool (কাজ করে)। ২, ৫, ৮ নম্বর resource (address-এ থাকা read-only data)। ৩, ৬ নম্বর prompt (template)।

    Example উত্তর
    1 | Tool | query চালায়, এটা একটা কাজ
    2 | Resource | address-এ read-only schema
    3 | Prompt | user নাম দেখে বাছা template
    4 | Tool | row যোগ করে, data বদলায়
    5 | Resource | address-এ read-only file
    6 | Prompt | user যা দেয় সেটা বসানো template
    7 | Tool | row মুছে দেয়, এটা একটা কাজ
    8 | Resource | address-এ read-only record

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

  2. ধাপ ২
    একই chat

    এই prompt টা copy করো, একই chat-এ paste করে Enter চাপো। Calculator দিয়ে সংখ্যাগুলো মিলিয়ে নাও।

    Prompt
    আমাদের ৩টা app আছে (একটা IDE, একটা chat app, আর একটা custom agent) আর ৪টা data source আছে (Postgres, একটা wiki, GitHub, আর একটা file store)। MCP ছাড়া আমাদের কয়টা custom integration লিখতে হবে? MCP দিয়ে কয়টা অংশ লিখতে হবে (প্রতি app-এ একটা client, প্রতি source-এ একটা server)? Formula দেখাও, আর ২ বাক্যে বলো সংখ্যা দুটো আলাদা কেন।

    তুমি দেখবে: MCP ছাড়া: 3 × 4 = 12 integration। MCP দিয়ে: 3 + 4 = 7 অংশ।

    Example উত্তর
    MCP ছাড়া: 3 app × 4 source = 12টা custom integration।
    MCP দিয়ে: 3 client + 4 server = 7টা অংশ।
    সংখ্যা আলাদা, কারণ MCP ছাড়া প্রতিটা app-কে প্রতিটা source-এর সাথে আলাদা করে জুড়তে হয়। MCP থাকলে প্রতিটা app আর প্রতিটা source শুধু একটাই shared standard মানলেই হয়।

    তোমার উত্তরের ভাষা একটু আলাদা হবে।

এইমাত্র কী হলো

MCP (Model Context Protocol) একটা open standard, যা AI app-কে data আর tool-এর সাথে জোড়া দেয়। একটা server তিন ধরনের feature দেয়: tool (model কোনো কাজ করে), resource (read-only data, model এনে নিতে পারে), আর prompt (নাম দেওয়া template, user বাছে)। যা data বদলায়, সেটাই tool। MCP ছাড়া তোমাকে app × source সংখ্যক সংযোগ বানাতে হয়। MCP দিয়ে বানাতে হয় app + source সংখ্যক অংশ।

কাজ শেষ, যখন তোমার কাছে এমন একটা table আছে যাতে ৮টা feature-ই ভাগ করা, আর তুমি 12 আর 7-এর পার্থক্য দেখেছ।

নিজেকে যাচাই করোdelete_old_logs কেন tool, resource নয়?উত্তর দেখো

Resource হলো read-only data, যা client এনে নেয়। Row মুছে ফেলা একটা কাজ (action), আর কাজ করানোর জন্য আছে tool।

আরেকটু কঠিন করে দেখোনিজে একটা ৯ নম্বর feature যোগ করো, যেটা ভাগ করা কঠিন, যেমন একটা read-only data feed যার আবার input লাগে। Model-কে জিজ্ঞেস করো, তারপর তার উত্তরের সাথে তর্ক করো।

ভিডিও দেখো · ৬টি

তথ্যসূত্র

Sources

সব citation মূল paper (arXiv), vendor-এর docs (OpenAI, Anthropic, Google) বা official team blog-এ যায়। প্রতিটি পাতা খুলে citation-এর তথ্য যাচাই করা হয়েছে।

  1. [1]Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023)
  2. [2]Wei et al., "Plan-and-Execute Agents" / "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" — NeurIPS 2022
  3. [3]Shinn et al., "Reflexion: Language Agents with Verbal Reinforcement Learning" — NeurIPS 2023
  4. [4]Xu et al., "ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models"
  5. [5]Anthropic Engineering blog — "How we built our multi-agent research system" (2025)
  6. [6]LangGraph — official documentation (LangChain)
  7. [7]Temporal — "Durable Execution for LLM Agents"
  8. [8]Park et al., "Generative Agents: Interactive Simulacra of Human Behavior" — 2023
  9. [9]Anthropic — "Introducing computer use, a new Claude 3.5 Sonnet capability" (Oct 2024)
  10. [10]Anthropic — Tool use / function calling documentation
  11. [11]OpenAI — Function calling guide
  12. [12]Anthropic — Model Context Protocol (MCP) specification
  13. [13]Kwon et al., "Efficient Memory Management for Large Language Model Serving with PagedAttention" — vLLM paper, SOSP 2023
  14. [14]Zheng et al., "SGLang: Efficient Execution of Structured Language Model Programs" — 2023
  15. [15]llama.cpp — open-source GGUF-native inference (ggerganov)
  16. [16]Lin et al., "AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration" — MLSys 2024
  17. [17]Anthropic — Prompt caching documentation
  18. [18]Zheng et al., "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" — NeurIPS 2023
  19. [19]Es et al., "Ragas: Automated Evaluation of Information Retrieval Augmented Language Models" — 2023
  20. [20]Yue et al., "Large Language Model Cascades with Mixture of Thought Representations" — 2024
  21. [21]GPTCache — open-source semantic cache
  22. [22]Guo et al., "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL" — 2025
  23. [23]Jiang et al., "LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models" — EMNLP 2023
  24. [24]LiteLLM — unified interface for 100+ LLMs
  25. [25]OWASP — "Top 10 for LLM Applications" (LLM01 Prompt Injection, 2025)
  26. [26]Bai et al., "Constitutional AI: Harmlessness from AI Feedback" — Anthropic, 2022
  27. [27]NVIDIA NeMo Guardrails — open-source toolkit
  28. [28]Qwen2-VL Team, "Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution" — 2024
  29. [29]OpenAI — Realtime API documentation
  30. [30]OpenAI — Production best practices guide