প্রকাশিত: ১৮ মে, ২০২৬, সর্বশেষ হালনাগাদ: ২ জুন, ২০২৬
| ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | উদ্দেশ্য |
|---|---|---|---|---|
| গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
আপনি WebMCP Imperative API ব্যবহার করে সাধারণ জাভাস্ক্রিপ্টের সাহায্যে বিভিন্ন ধরণের টুল তৈরি করতে পারেন। আপনার টুলগুলো বিভিন্ন কাজ সম্পাদন করতে পারে, যেমন ফর্ম ইনপুট, সাইট নেভিগেশন এবং স্টেট ম্যানেজমেন্ট।
এই এপিআই ব্যবহার করার আগে, এর উদাহরণগুলো সম্পর্কে পড়ে নিন।
মডেলের প্রেক্ষাপট প্রদান করুন
টুল নিবন্ধন করতে modelContext ইন্টারফেসটি ব্যবহার করুন। টুল নিবন্ধনের জন্য একটি নাম, বিবরণ এবং প্রাসঙ্গিক বৈশিষ্ট্যসহ একটি ইনপুট স্কিমা প্রয়োজন।
মডেল কনটেক্সটে একটিমাত্র টুল যোগ করতে registertool ব্যবহার করুন।
WebMCPza Maker
document.modelContext.registerTool({
name: 'toggle_layer',
description: 'Control pizza layers (sauce, cheese). Use "add", "remove", or "toggle".',
inputSchema: {
type: 'object',
properties: {
layer: { type: 'string', enum: ['sauce-layer', 'cheese-layer'] },
action: { type: 'string', enum: ['add', 'remove', 'toggle'] },
},
required: ['layer'],
},
execute: async ({ layer, action }) => {
await toggleLayer(layer, action);
return `Performed ${action || 'toggle'} on layer: ${layer}`;
},
});
অর্ডারের অবস্থা জানুন
document.modelContext.registerTool({
name: 'get_order_status',
description: 'Search orders in a given timeframe. Returns order number, shipping status and location',
inputSchema: {
"type": "object",
"properties": {
"timeframe": { "type": "string", "oneOf": [
{ "type": "string", "const": "today", "title": "Today" },
{ "type": "string", "const": "yesterday", "title": "Yesterday" },
{ "type": "string", "const": "last_7_days", "title": "Last 7 Days" },
{ "type": "string", "const": "last_30_days", "title": "Last 30 Days" },
{ "type": "string", "const": "last_6_months", "title": "Last 6 Months" }],
"enum": [ "today", "yesterday", "last_7_days", "last_30_days", "last_6_months" ],
"description": "Timeframe for the order lookup." }
},
"required": [ "timeframe" ]
},
execute: async ({ timeframe }) => {
// Add your API or database logic here to fetch and return the order data as a string.
},
});
ঐচ্ছিক প্যারামিটার হিসেবে AbortSignal পাস করা হলে, আপনি এর মাধ্যমে কোনো টুল অপসারণ করতে পারেন।
const addTodoTool = {
name: "addTodo",
description: "Add a new item to the to-do list",
inputSchema: {
type: "object",
properties: { text: { type: "string" } },
},
execute: async ({ text }) => {
// You should handle the persistence logic here (omitted for demo)
return `Added to-do: ${text}`;
},
annotations: {
readOnlyHint: false,
untrustedContentHint: true
},
};
const controller = new AbortController();
document.modelContext.registerTool(addTodoTool, { signal: controller.signal });
// Unregister the tool later...
controller.abort();
সরঞ্জামগুলি আবিষ্কার করুন
উপলব্ধ টুলগুলো দেখতে, document.modelContext.getTools() ব্যবহার করুন। এই অ্যাসিঙ্ক্রোনাস মেথডটি সেইসব টুলের একটি তালিকা ফেরত দেয়, যেগুলো অ্যাক্সেস করার জন্য কলিং ডকুমেন্টটি অনুমোদিত।
const [tool] = await document.modelContext.getTools();
console.log(tool);
// {
// annotations: { readOnlyHint: false, untrustedContentHint: true },
// description: "Add a new item to the to-do list",
// inputSchema: '{"type":"object","properties":{"text":{"type":"string"}}}',
// name: "addTodo",
// origin: "https://example.com",
// window: Window {window: Window, self: Window, ...},
// }
ডিফল্টরূপে, getTools() শুধুমাত্র কলিং ডকুমেন্ট বা ফ্রেম ট্রিতে থাকা অন্য একই-অরিজিন ডকুমেন্ট দ্বারা নিবন্ধিত একই-অরিজিনের টুলগুলো ফেরত দেয়। ক্রস-অরিজিনের টুলগুলো পুনরুদ্ধার করতে, আপনাকে অবশ্যই fromOrigins অপশনে তাদের অরিজিনগুলো স্পষ্টভাবে তালিকাভুক্ত করতে হবে। এই অ্যারেটি শুধুমাত্র সিকিওর অরিজিন সমর্থন করে।
বিভিন্ন উৎস থেকে প্রাপ্ত নথির সরঞ্জামগুলি শুধুমাত্র তখনই অন্তর্ভুক্ত করা হয়, যদি:
- হোস্টিং অরিজিনটি
fromOriginsঅপশনে তালিকাভুক্ত থাকে। - টুলটি আপনার উৎসের কাছে স্পষ্টভাবে উন্মুক্ত করা হয়েছে।
// https://example.com
// Get same-origin tools only
const sameOriginTools = await document.modelContext.getTools();
// Get same-origin tools plus tools from specific cross-origin documents
const allTools = await document.modelContext.getTools({
fromOrigins: ['https://partner.org']
});
একটি আইফ্রেম থেকে কীভাবে টুলস পুনরুদ্ধার করে ওয়েব-ভিত্তিক চ্যাট ইন্টারফেসের মধ্যে চালানো যায়, তার উদাহরণের জন্য WebMCP পেজ এজেন্ট ডেমোটি দেখুন।
টুলটি চালান
getTools() -এ আবিষ্কৃত কোনো টুল ম্যানুয়ালি চালাতে, একটি বৈধ JSON স্ট্রিং ইনপুট আর্গুমেন্ট হিসেবে দিয়ে document.modelContext.executeTool() কল করুন। এই অ্যাসিঙ্ক্রোনাস মেথডটি টুল এক্সিকিউশনের ফলাফল রিটার্ন করে, অথবা কোনো নেভিগেশন ট্রিগার হলে null রিটার্ন করে।
const result = await document.modelContext.executeTool(tool, '{"text": "Buy milk"}');
console.log(result);
// 'Added to-do: Buy milk'
ঐচ্ছিক প্যারামিটার হিসেবে AbortSignal পাস করা হলে, আপনি এর মাধ্যমে কোনো অপেক্ষাধীন টুল এক্সিকিউশন বাতিল করতে পারেন।
const controller = new AbortController();
document.modelContext.executeTool(tool, '{"text": "Buy milk"}', {
signal: controller.signal,
});
// Cancel tool execution later...
controller.abort();
ইভেন্টগুলি
উপলব্ধ টুলের তালিকা পরিবর্তিত হলে বিজ্ঞপ্তি পাওয়ার জন্য ফ্রেমগুলো document.modelContext এর toolchange ইভেন্টটি শুনতে পারে।
document.modelContext.addEventListener("toolchange", (event) => {
// Tools have changed.
});
ক্রস-অরিজিন আইফ্রেম
WebMCP এমন ক্রস-অরিজিন আইফ্রেম সমর্থন করে যা পারমিশন পলিসি এবং সুস্পষ্ট অরিজিন গেটিং উভয়ই ব্যবহার করে।
অনুমতি নীতি
ক্রস-অরিজিন আইফ্রেমগুলিতে টুল রেজিস্ট্রেশন ডিফল্টরূপে নিষ্ক্রিয় থাকে। একটি পৃষ্ঠাকে অবশ্যই tools অনুমতি নীতি ব্যবহার করে অ্যাক্সেস অর্পণ করতে হবে।
<iframe src="https://example.com" allow="tools"></iframe>
উৎপত্তির সংস্পর্শ
ডিফল্টরূপে ক্রস-অরিজিন ডকুমেন্টের জন্য টুলগুলো অনুপলব্ধ থাকে। কোনো টুল দেখা ও চালানোর অনুমতিপ্রাপ্ত নির্দিষ্ট অরিজিনগুলোর তালিকা করতে আপনি registerTool মধ্যে exposedTo অ্যারেটি ব্যবহার করতে পারেন। এই অ্যারেটি শুধুমাত্র সিকিওর অরিজিন সমর্থন করে।
// https://partner.org
document.modelContext.registerTool({
name: 'my_shared_tool',
description: 'Shared across origins',
// ...
}, {
exposedTo: ['https://example.com']
});
অংশগ্রহণ করুন এবং মতামত জানান
WebMCP নিয়ে সক্রিয় আলোচনা চলছে এবং ভবিষ্যতে এটিতে পরিবর্তন আসতে পারে। আপনি যদি এই API-টি ব্যবহার করে কোনো মতামত জানাতে চান, তবে আমরা তা জানতে আগ্রহী।
- WebMCP-এর ব্যাখ্যাটি পড়ুন , প্রশ্ন করুন এবং আলোচনায় অংশগ্রহণ করুন।
- WebMCP-এর সর্বোত্তম অনুশীলনগুলো পড়ুন।
- Chrome Status- এ Chrome-এর জন্য বাস্তবায়নটি পর্যালোচনা করুন।
- নতুন এপিআইগুলো আগে দেখার সুযোগ পেতে এবং আমাদের মেইলিং লিস্টে অ্যাক্সেস পেতে আর্লি প্রিভিউ প্রোগ্রামে যোগ দিন ।
- ক্রোমের বাস্তবায়ন সম্পর্কে আপনার কোনো মতামত থাকলে, একটি ক্রোমিয়াম বাগ রিপোর্ট করুন।