Agent Card হলো একটি প্রমিত JSON নথি যা A2A ক্লায়েন্টদের বলে একটি এজেন্ট কে, কোথায় যোগাযোগ করতে হবে, এটি কী করতে পারে, এবং অ্যাক্সেস কীভাবে সুরক্ষিত। এই রেফারেন্স প্রতিটি v1.0 ফিল্ড কভার করে ধরন, প্রয়োজনীয়তা, উদাহরণ, এবং ভ্যালিডেটররা সবচেয়ে বেশি যে ভুলগুলি ধরে সেগুলি দিয়ে।
একটি well-known URL প্রতিটি A2A ইন্টিগ্রেশন শুরু করে।
একটি A2A ক্লায়েন্ট well-known URI থেকে Agent Card আনে, তার কাজের বিপরীতে স্কিল, ক্ষমতা, এবং নিরাপত্তা প্রয়োজনীয়তা মূল্যায়ন করে, তারপর পছন্দের ইন্টারফেস কল করে — supportedInterfaces-এ প্রথম এন্ট্রি। যদি capabilities.extendedAgentCard true হয়, প্রমাণীকৃত ক্লায়েন্টরা GetExtendedAgentCard অপারেশনের মাধ্যমে আরও সমৃদ্ধ Agent Card অনুরোধ করতে পারে।
স্পেসিফিকেশন /.well-known/agent-card.json-কে মানক অবস্থান হিসেবে নিবন্ধিত করে। পুরনো v0.x স্থাপনাগুলি /.well-known/agent.json ব্যবহার করত, এই কারণেই আমাদের ভ্যালিডেটর উভয়ই পরীক্ষা করে।
প্রতিটি AgentCard ফিল্ড, পাস বা ফেল নির্ধারণকারী বিবরণসহ।
প্রয়োজনীয় ফ্ল্যাগগুলি অফিসিয়াল স্পেসিফিকেশনে v1.0 protobuf সংজ্ঞা অনুসরণ করে। অ্যাঙ্কর লিঙ্ক প্রতিটি ফিল্ডকে ইস্যু, পর্যালোচনা, এবং CI আউটপুট থেকে উদ্ধৃতিযোগ্য করে তোলে।
মার্কেটপ্লেস তালিকা এবং ক্লায়েন্ট UI-তে দেখানো হয়। এটি সংক্ষিপ্ত এবং নির্দিষ্ট রাখুন — প্রার্থী এজেন্টদের তুলনা করার সময় ক্লায়েন্টরা এটিকে প্রাথমিক লেবেল হিসেবে ব্যবহার করে।
সাধারণ ভুল: "AI Assistant"-এর মতো একটি সাধারণ নাম ব্যবহার করা যা রাউটিং সিস্টেমকে আলাদা করার জন্য কিছুই দেয় না।
এজেন্ট কী করে এবং অন্য একটি এজেন্টের কখন এটি কল করা উচিত।
এটি মানব ইন্টিগ্রেটর এবং LLM-ভিত্তিক রাউটার উভয়ের জন্য মূল ফ্রি-টেক্সট সংকেত যা নির্ধারণ করে আপনার এজেন্ট একটি কাজের জন্য উপযুক্ত কিনা। কাজের ডোমেইন, মূল ক্ষমতা, এবং সীমা উল্লেখ করুন।
সাধারণ ভুল: 20 অক্ষরের কম এক-লাইনের বিবরণ। রাউটাররা যা আপনি বর্ণনা করেন না তা মেলাতে পারে না।
"description": "উন্নত রুট পরিকল্পনা, ট্রাফিক বিশ্লেষণ, এবং কাস্টম মানচিত্র তৈরি পরিষেবা প্রদান করে।"
এন্ডপয়েন্ট এবং প্রোটোকল বাইন্ডিংয়ের ক্রমযুক্ত তালিকা। প্রথম এন্ট্রি পছন্দনীয়।
v1.0-এ নতুন: পুরনো শীর্ষ-স্তরের url, preferredTransport, এবং additionalInterfaces ফিল্ড প্রতিস্থাপন করে। প্রতিটি এন্ট্রি নিজস্ব url, protocolBinding (JSONRPC, GRPC, HTTP+JSON, বা কাস্টম বাইন্ডিং URI), protocolVersion, এবং একটি ঐচ্ছিক টেন্যান্ট রাউটিং কী ঘোষণা করে — যাতে একটি এজেন্ট একসাথে একাধিক প্রোটোকল সংস্করণ এবং ট্রান্সপোর্ট পরিবেশন করতে পারে।
সাধারণ ভুল: এমন একটি বাইন্ডিং ঘোষণা করা যা সার্ভার আসলে সেই URL-এ পরিবেশন করে না — স্পেসিফিকেশনের প্রয়োজন যে প্রতিটি এন্ট্রি সঠিক হতে হবে।
মার্কেটপ্লেস এবং এন্টারপ্রাইজ অডিটের জন্য বিশ্বাসের সংকেত। v1.0 name ফিল্ডের নাম পরিবর্তন করে organization করেছে; উপস্থিত থাকলে অবজেক্টের ভিতরে url আবশ্যক।
সাধারণ ভুল: এখনও provider.name (v1.0-এর আগে) ব্যবহার করা। v1.0 Agent Card পড়া ভ্যালিডেটররা এটি চিনতে পারবে না।
ক্লায়েন্টদের সনাক্ত করতে দেয় কখন একটি Agent Card উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে এবং সামঞ্জস্য পুনর্মূল্যায়ন করতে দেয়। আপনার নিজস্ব রিলিজ স্কিম অনুসরণ করুন, সাধারণত semver।
সাধারণ ভুল: এটিকে A2A প্রোটোকল সংস্করণের সাথে গুলিয়ে ফেলা — যা এখন প্রতিটি supportedInterfaces এন্ট্রিতে থাকে।
ক্লায়েন্টদের এমন ফিচার কল করা উচিত নয় যা আপনি ঘোষণা করেননি — অঘোষিত স্ট্রিমিং কল ত্রুটি ফেরত দেয়। extendedAgentCard: true GetExtendedAgentCard অপারেশনের মাধ্যমে একটি সমৃদ্ধ প্রমাণীকৃত Agent Card ঘোষণা করে। v1.0 stateTransitionHistory সরিয়ে দিয়েছে।
সাধারণ ভুল: সার্ভারের স্ট্রিমিং এন্ডপয়েন্ট না থাকলে streaming: true ঘোষণা করা। ক্লায়েন্টরা এটি কল করবে এবং ব্যর্থ হবে।
নামযুক্ত প্রমাণীকরণ স্কিম: API কী, HTTP প্রমাণীকরণ, OAuth 2.0, OpenID Connect, বা পারস্পরিক TLS।
প্রতিটি নামযুক্ত স্কিম একটি নির্দিষ্ট স্কিম অবজেক্ট (apiKeySecurityScheme, httpAuthSecurityScheme, oauth2SecurityScheme, openIdConnectSecurityScheme, mtlsSecurityScheme) মুড়িয়ে রাখে। ক্লায়েন্টরা এখান থেকে কীভাবে প্রমাণীকরণ করতে হয় তা আবিষ্কার করে — ক্রেডেনশিয়াল নিজেই সর্বদা আউট-অফ-ব্যান্ড প্রাপ্ত হয়।
সাধারণ ভুল: Agent Card একটি প্রকৃত API কী বা টোকেন এমবেড করা। Agent Card একটি পাবলিক নথি।
এজেন্টকে কল করার জন্য কোন ঘোষিত স্কিম (এবং স্কোপ) প্রয়োজন।
প্রতিটি এন্ট্রি securitySchemes থেকে একটি স্কিমের নামকে এর প্রয়োজনীয় স্কোপের সাথে ম্যাপ করে, OpenAPI নিরাপত্তা প্রয়োজনীয়তা প্যাটার্নকে প্রতিফলিত করে। ইচ্ছাকৃতভাবে পাবলিক এজেন্টদের জন্য উভয় ফিল্ড সম্পূর্ণভাবে বাদ দিন।
সাধারণ ভুল: securitySchemes ঘোষণা করা কিন্তু security প্রয়োজনীয়তা ছাড়া, ক্লায়েন্টদের অনুমান করতে ছেড়ে দেওয়া যে প্রমাণীকরণ প্রয়োগ করা হয়েছে কিনা।
এজেন্ট সফল হওয়ার সম্ভাবনা রয়েছে এমন সুনির্দিষ্ট ক্ষমতা।
প্রতিটি স্কিলের জন্য id, name, description, এবং tags প্রয়োজন; examples, প্রতি-স্কিল মোড, এবং প্রতি-স্কিল নিরাপত্তা ঐচ্ছিক। স্কিলগুলি আবিষ্কারের একক — রাউটাররা তাদের বিরুদ্ধে কাজ মেলায়, তাই প্রতিটিকে একটি একক কাজের সীমার মধ্যে সীমাবদ্ধ করুন।
সাধারণ ভুল: ট্যাগ ছাড়া স্কিল। ট্যাগ v1.0-এ আবশ্যক হয়ে উঠেছে এবং স্কিল-স্তরের ম্যাচিং চালায়।
"skills": [{
"id": "route-optimizer-traffic",
"name": "ট্রাফিক-সচেতন রুট অপ্টিমাইজার",
"description": "রিয়েল-টাইম ট্রাফিক ব্যবহার করে সর্বোত্তম ড্রাইভিং রুট গণনা করে...",
"tags": ["maps", "routing", "traffic"],
"examples": ["টোল এড়িয়ে A থেকে B পর্যন্ত একটি রুট পরিকল্পনা করুন।"]
}]
JSON Web Signatures যা প্রমাণ করে Agent Card প্রোভাইডার দ্বারা জারি করা হয়েছিল।
প্রতিটি স্বাক্ষর একটি base64url সুরক্ষিত JWS হেডার এবং স্বাক্ষর মান বহন করে, RFC 8785 (JCS) প্রমিতকৃত Agent Card উপর গণনা করা হয়। সর্বজনীন ওয়েব থেকে আনা একটি Agent Card বিশ্বাস করার আগে ক্লায়েন্টদের কমপক্ষে একটি স্বাক্ষর যাচাই করা উচিত।
সাধারণ ভুল: কার্ডে স্বাক্ষর করে তারপর যেকোনো ফিল্ড সম্পাদনা করা — এমনকি হোয়াইটস্পেস-অপ্রাসঙ্গিক মান পরিবর্তনও JWS-কে অবৈধ করে দেয়।
ক্যাটালগ এবং ক্লায়েন্ট UI দ্বারা ব্যবহৃত। একটি স্থিতিশীল অবস্থান থেকে HTTPS-এর মাধ্যমে এটি পরিবেশন করুন।
সাধারণ ভুল: একটি ভিন্ন, অবিশ্বস্ত ডোমেইনে একটি আইকন লিঙ্ক করা যা আপনার তালিকার আড়ালে পরিবর্তিত হতে পারে।
"iconUrl": "https://agent.example.com/icon.png"
সংস্করণ মাইগ্রেশন
একটি v0.x Agent Card A2A v1.0-এ স্থানান্তর করা।
যদি আপনার Agent Card এখনও শীর্ষ-স্তরের url বা preferredTransport থাকে, তাহলে এটি v1.0-এর আগের। ভ্যালিডেটর স্বয়ংক্রিয়ভাবে এই প্রতিটি ফ্ল্যাগ করে।
v0.x ফিল্ড
v1.0 প্রতিস্থাপন
কেন পরিবর্তিত হয়েছে
url
supportedInterfaces[0].url
পছন্দের এন্ডপয়েন্ট এখন কেবল প্রথম ইন্টারফেস এন্ট্রি।
preferredTransport
supportedInterfaces[] ordering
একটি পৃথক ফিল্ডের পরিবর্তে অ্যারে ক্রম দ্বারা পছন্দ প্রকাশ করা হয়।
additionalInterfaces
supportedInterfaces[]
সব ইন্টারফেস একটি ক্রমযুক্ত অ্যারেতে থাকে।
protocolVersion (top level)
supportedInterfaces[].protocolVersion
প্রতিটি ইন্টারফেস নিজস্ব প্রোটোকল সংস্করণ ঘোষণা করে, বহু-সংস্করণ সমর্থন সক্ষম করে।
supportsAuthenticatedExtendedCard
capabilities.extendedAgentCard
capabilities অবজেক্টে স্থানান্তরিত; RPC-এর নাম পরিবর্তন করে GetExtendedAgentCard করা হয়েছে।
provider.name
provider.organization
স্পষ্টতার জন্য নাম পরিবর্তন করা হয়েছে।
capabilities.stateTransitionHistory
— removed
v1.0-এর অংশ নয়; প্রয়োজনে সমতুল্য আচরণকে এক্সটেনশন হিসেবে মডেল করুন।
বয়লারপ্লেট
v1.0 Agent Card জন্য TypeScript প্রকার।
টাইপ নিরাপত্তার সাথে Agent Card পার্স এবং তৈরি করতে ক্লায়েন্ট, সার্ভার, বা CI চেকে এই ইন্টারফেসগুলি রাখুন। এগুলি অফিসিয়াল স্পেসিফিকেশন রিপোজিটরিতে protobuf সংজ্ঞা প্রতিফলিত করে, camelCase JSON আকারে যেখানে Agent Card প্রকাশিত হয়।
পরিবর্তে হাতে Agent Card তৈরি করছেন? জেনারেটর ঠিক এই সঠিক আকৃতি তৈরি করে।
যেহেতু Agent Card গুলি সর্বজনীন ওয়েব থেকে আনা হয়, v1.0 স্বাক্ষরকে আনুষ্ঠানিক করে: Agent Card (signatures ফিল্ড এবং ডিফল্ট মান বাদে) RFC 8785 JSON Canonicalization দিয়ে প্রমিতকৃত হয়, তারপর JWS হিসেবে স্বাক্ষরিত হয়। একটি Agent Card উপর ভিত্তি করে কাজ করার আগে ক্লায়েন্টদের kid/jku হেডার বা একটি বিশ্বস্ত কী স্টোরের মাধ্যমে কমপক্ষে একটি স্বাক্ষর যাচাই করা উচিত। একাধিক স্বাক্ষর কী রোটেশন সমর্থন করে।
প্রকাশ-পূর্ব চেকলিস্ট
HTTPS-এর মাধ্যমে /.well-known/agent-card.json-এ Agent Card পরিবেশন করুন।
প্রতিটি supportedInterfaces এন্ট্রি অ্যাক্সেসযোগ্য এবং ঘোষিত বাইন্ডিং ব্যবহার করে।
স্কিলগুলিতে আবশ্যক ট্যাগ এবং স্পষ্ট কাজের সীমাযুক্ত বিবরণ রয়েছে।
ঘোষিত ক্ষমতা সার্ভারের সাথে মিলে যায় — অঘোষিত বৈশিষ্ট্যগুলিকে অবশ্যই ত্রুটি ফেরত দিতে হবে, ঘোষিতগুলি অবশ্যই কাজ করতে হবে।
securitySchemes বর্ণনা করে কীভাবে প্রমাণীকরণ করতে হয়; Agent Card কোথাও কোনো ক্রেডেনশিয়াল প্রদর্শিত হয় না।
Agent Card বিষয়বস্তু পরিবর্তিত হলেই version বৃদ্ধি করা হয়।
একটি সম্পূর্ণ v1.0 Agent Card।
OAuth 2.0, স্ট্রিমিং, এবং পুশ নোটিফিকেশনসহ একটি গ্রাহক সহায়তা এজেন্ট — সব আবশ্যক ফিল্ড উপস্থিত। উদাহরণ লাইব্রেরিতে আরও প্যাটার্ন রয়েছে।
{
"name": "গ্রাহক সহায়তা এজেন্ট",
"description": "গ্রাহক সহায়তার প্রশ্নের উত্তর দেয়, অর্ডারের প্রসঙ্গ পুনরুদ্ধার করে এবং অমীমাংসিত সমস্যাগুলি মানব দলের কাছে বাড়িয়ে দেয়।",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/customer-support",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "উদাহরণ Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "resolve-customer-support-request",
"name": "গ্রাহক সমর্থন অনুরোধ সমাধান করুন",
"description": "একটি গ্রাহক সহায়তা অনুরোধকে শ্রেণীবদ্ধ করে, প্রয়োজনীয় প্রসঙ্গ সংগ্রহ করে, একটি রেজোলিউশন প্রস্তাব করে এবং আত্মবিশ্বাস কম হলে তা বৃদ্ধি পায়।",
"tags": [
"support",
"orders",
"returns"
],
"examples": [
"আমাকে আমার অর্ডার ফেরত সাহায্য করুন."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}
সাধারণ প্রশ্ন
Agent Card schema সম্পর্কে সাধারণ প্রশ্ন
সংস্করণ পরিবর্তন, আবিষ্কার ফিল্ড, এবং প্রকাশনার বিবরণ যা নির্ধারণ করে একটি Agent Card পর্যালোচনায় উত্তীর্ণ হয় কিনা।
A2A v1.0 Agent Card-এ কী পরিবর্তিত হয়েছে?
v1.0 url, preferredTransport, এবং additionalInterfaces-কে একটি একক ক্রমযুক্ত supportedInterfaces অ্যারেতে একত্রিত করেছে যেখানে প্রতিটি এন্ট্রি তার নিজস্ব url, protocolBinding, এবং protocolVersion ঘোষণা করে। supportsAuthenticatedExtendedCard capabilities.extendedAgentCard-এ স্থানান্তরিত হয়েছে, provider.name provider.organization হয়ে গেছে, স্কিল ট্যাগ আবশ্যক হয়ে উঠেছে, এবং JWS Agent Card স্বাক্ষর RFC 8785 প্রমিতকরণের সাথে আনুষ্ঠানিক করা হয়েছে।
Agent Card কি API schema-এর মতোই?
না। Agent Card একটি এজেন্টের জন্য একটি আবিষ্কার নথি। এটি পরিচয়, ইন্টারফেস, ক্ষমতা, স্কিল, মোড, প্রোভাইডার, এবং নিরাপত্তা মেটাডেটার সারসংক্ষেপ করে, যেখানে একটি সম্পূর্ণ API schema বিস্তারিত অনুরোধ এবং প্রতিক্রিয়ার আকার বর্ণনা করে। এটি একটি সেবার জন্য README বা OpenAPI ওভারভিউ যে ভূমিকা পালন করে তা পালন করে: এটি কল করা উচিত কিনা এবং কীভাবে তা নির্ধারণ করার জন্য যথেষ্ট।
আবিষ্কারের জন্য কোন ফিল্ডগুলি সবচেয়ে গুরুত্বপূর্ণ?
name, description, supportedInterfaces, skills (ট্যাগসহ), defaultInputModes, defaultOutputModes, capabilities, provider, এবং নিরাপত্তা মেটাডেটা। রাউটিং সিস্টেমগুলি আপনার description এবং স্কিল ট্যাগের বিরুদ্ধে কাজ মেলায়, তারপর প্রকৃত কল পরিকল্পনা করতে ইন্টারফেস এবং ক্ষমতা ব্যবহার করে।
প্রাইভেট স্কিল কি একটি পাবলিক Agent Card প্রদর্শিত হওয়া উচিত?
শুধুমাত্র সেই স্কিলগুলি প্রকাশ করুন যা অপ্রমাণীকৃত আবিষ্কারের জন্য নিরাপদ। যদি একটি সমৃদ্ধ প্রাইভেট Agent Card প্রয়োজন হয়, capabilities.extendedAgentCard-কে true সেট করুন এবং প্রমাণীকৃত GetExtendedAgentCard অপারেশনের মাধ্যমে সংবেদনশীল স্কিল প্রকাশ করুন।
Agent Card কোথায় প্রকাশিত হয়?
well-known URI https://{your-domain}/.well-known/agent-card.json-এ, application/a2a+json কনটেন্ট টাইপ দিয়ে পরিবেশিত (application/json-ও বাস্তবে কাজ করে)। পুরনো বাস্তবায়নগুলি /.well-known/agent.json ব্যবহার করত, তাই রূপান্তরের সময় উভয়ই প্রকাশ করা একটি ব্যবহারিক পছন্দ।
schema কে কাজে লাগান
একটি Agent Card তৈরি করুন যা প্রথমবারেই যাচাইকরণে উত্তীর্ণ হয়।
আপনার সেবার বিবরণ থেকে v1.0-আকৃতির একটি Agent Card জেনারেট করুন, বা কোন ফিল্ডগুলিতে মনোযোগ প্রয়োজন তা সঠিকভাবে দেখতে একটি বিদ্যমান Agent Card ভ্যালিডেটরে পেস্ট করুন।