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 কী পাঠায় আর কী ফেরত চায়, সেটা জানা দরকার।
ধাপ ১
নতুন 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 IDORD-4821আছে। অন্য কোনো লেখা নেই।Example উত্তর
{"tool": "get_order_status", "input": {"order_id": "ORD-4821"}}তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
একই 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 এখন ২০২৬-০৩-১৪ তারিখে এটা পৌঁছে দেওয়ার কথা বলছে।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৩
নতুন 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"}}তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৪
একই 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 দিতে হয়।
Task ২
অস্পষ্ট আর পরিষ্কার tool description মিলিয়ে দেখো
এটা কেন দরকার
তুমি যখন একটা AI agent-কে কয়েকটা tool দেবে, সে প্রতিটা tool-এর নাম আর description পড়ে একটা বাছে। লেখা অস্পষ্ট হলে সে ভুল tool বাছে বা আটকে যায়, আর তোমার bot ভুল উত্তর দেয়।
ধাপ ১
নতুন 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", কোনটাতেই লেখা নেই যে মানুষের তথ্য খোঁজা যায়।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
নতুন 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 সিদ্ধান্ত নেওয়ার আগে এই সবকিছু পড়ে।
Task ৩
কোন tool call একসাথে চলতে পারে, চিনে নাও
এটা কেন দরকার
একটা agent-এর যখন কয়েকটা তথ্য লাগে, একটা একটা করে tool-এর জন্য অপেক্ষা করলে user-কে অনেক সময় বসে থাকতে হয়। Travel বা support bot-এ যে call-গুলো একে অপরের উপর নির্ভর করে না, সেগুলো একসাথে চালালে উত্তর অনেক দ্রুত আসে।
ধাপ ১
নতুন 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"}}]তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
নতুন 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"}}]তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৩
নতুন 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 পর্যন্ত অপেক্ষা করতে হয়।
Task ৪
একটা MCP server-এর feature ভাগ করো
এটা কেন দরকার
তোমার team-এ অনেক app আর অনেক data source থাকলে প্রতিটা সংযোগ হাতে বানাতে কয়েক সপ্তাহ লেগে যায়। MCP একটা shared standard, যা এই কাজ কমায়। এর তিন ধরনের feature-ও তোমাকে জানতে হবে।
ধাপ ১
নতুন 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
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
একই 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।
ভিডিও দেখো · ৬টি
MCP সার্ভার কি? সহজ কনসেপ্ট ও TypeScript SDK উদাহরণ Learn with Sumit - LWS - Bangladeshবাংলা
Function Calling is All You Need — Full Workshop, with Ilan Bigio of OpenAI AI Engineer
LangGraph Deep Dive: Agents with Parallel Function Calling Deploying AI
Building Agents with Model Context Protocol - Full Workshop with Mahesh Murag of Anthropic AI Engineer
[Full Workshop] How to add secure code interpreting in your AI app: Vasek Mlejnsky AI Engineer
Bridging the gap between your API and LLMs Stripe Developers
তথ্যসূত্র
Sources
সব citation মূল paper (arXiv), vendor-এর docs (OpenAI, Anthropic, Google) বা official team blog-এ যায়। প্রতিটি পাতা খুলে citation-এর তথ্য যাচাই করা হয়েছে।
- [1]Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023)
- [2]Wei et al., "Plan-and-Execute Agents" / "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" — NeurIPS 2022
- [3]Shinn et al., "Reflexion: Language Agents with Verbal Reinforcement Learning" — NeurIPS 2023
- [4]Xu et al., "ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models"
- [5]Anthropic Engineering blog — "How we built our multi-agent research system" (2025)
- [6]LangGraph — official documentation (LangChain)
- [7]Temporal — "Durable Execution for LLM Agents"
- [8]Park et al., "Generative Agents: Interactive Simulacra of Human Behavior" — 2023
- [9]Anthropic — "Introducing computer use, a new Claude 3.5 Sonnet capability" (Oct 2024)
- [10]Anthropic — Tool use / function calling documentation
- [11]OpenAI — Function calling guide
- [12]Anthropic — Model Context Protocol (MCP) specification
- [13]Kwon et al., "Efficient Memory Management for Large Language Model Serving with PagedAttention" — vLLM paper, SOSP 2023
- [14]Zheng et al., "SGLang: Efficient Execution of Structured Language Model Programs" — 2023
- [15]llama.cpp — open-source GGUF-native inference (ggerganov)
- [16]Lin et al., "AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration" — MLSys 2024
- [17]Anthropic — Prompt caching documentation
- [18]Zheng et al., "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" — NeurIPS 2023
- [19]Es et al., "Ragas: Automated Evaluation of Information Retrieval Augmented Language Models" — 2023
- [20]Yue et al., "Large Language Model Cascades with Mixture of Thought Representations" — 2024
- [21]GPTCache — open-source semantic cache
- [22]Guo et al., "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL" — 2025
- [23]Jiang et al., "LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models" — EMNLP 2023
- [24]LiteLLM — unified interface for 100+ LLMs
- [25]OWASP — "Top 10 for LLM Applications" (LLM01 Prompt Injection, 2025)
- [26]Bai et al., "Constitutional AI: Harmlessness from AI Feedback" — Anthropic, 2022
- [27]NVIDIA NeMo Guardrails — open-source toolkit
- [28]Qwen2-VL Team, "Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution" — 2024
- [29]OpenAI — Realtime API documentation
- [30]OpenAI — Production best practices guide