Magisterium AI

தொடங்குதல்

இந்த வழிகாட்டி, Magisterium A2A எண்ட்பாயிண்ட்டில் உங்கள் முதல் கோரிக்கையை உருவாக்குதல், தோன்றும் பணியை மீட்டெடுத்தல், மற்றும் கட்டமைக்கப்பட்ட பதிலை வாசிப்பதன் வழியாக உங்களை அழைத்துச் செல்கிறது.

முன்நிபந்தனைகள்

  1. ஒரு கட்டண Magisterium திட்டம் (Pro, Organization, அல்லது Enterprise). இலவச கணக்குகள் A2A-இலிருந்து PLAN_REQUIRED பிழையைப் பெறும்.
  2. உங்கள் magisterium.com கணக்குடன் இணைக்கப்பட்ட ஒரு OAuth 2.0 அணுகல் டோக்கன். A2A Magisterium MCP சர்வர்-இன் அதே OAuth ஓட்டத்தைப் பயன்படுத்துகிறது; https://www.magisterium.com/.well-known/oauth-authorization-server-இல் OAuth மெட்டாடேட்டாவிலிருந்து அங்கீகாரம், டோக்கன் மற்றும் டைனமிக்-பதிவு எண்ட்பாயிண்ட்களைக் கண்டறியவும்.
  3. நீங்கள் அழைக்க விரும்பும் திறன்கள் — முழுமையான பட்டியலுக்கு திறன்கள் பார்க்கவும்.

கவனம்: API Console-இல் உருவாக்கப்பட்ட நீண்டகால API விசைகள் Chat Completions, Search, மற்றும் News-க்கு வேலை செய்கின்றன, ஆனால் அவை A2A-க்கு செல்லுபடியாகாது — A2A OAuth-ஆல் வழங்கப்பட்ட பயனர் டோக்கன்களை மட்டுமே ஏற்கிறது.

கீழே உள்ள எடுத்துக்காட்டுகள் தானாகவே எடுக்கும் வகையில் உங்கள் அணுகல் டோக்கனை ஒரு சூழல் மாறியாக ஏற்றுமதி செய்யவும்:

bash
export MAGISTERIUM_TOKEN=<your-access-token-here>

படி 1: முகவரைக் கண்டறியவும்

எண்ட்பாயிண்ட்டை அழைப்பதற்கு முன், எந்த திறன்கள் கிடைக்கின்றன என்பதைக் காணவும் நெறிமுறை பதிப்பை உறுதிப்படுத்தவும் நீங்கள் பொது Agent Card-ஐப் பெறலாம்:

bash
curl https://www.magisterium.com/.well-known/agent.json

கார்டுக்கு எந்த அங்கீகாரமும் தேவையில்லை. ஆர்கெஸ்ட்ரேட்டர்கள் இதை ஒரு மணி நேரம் கேச் செய்யலாம் — எண்ட்பாயிண்ட் Cache-Control: public, max-age=3600 ஐ அமைக்கிறது.

படி 2: உங்கள் முதல் செய்தியை அனுப்பவும்

அனைத்து A2A செயல்பாடுகளும் ஒரே JSON-RPC எண்ட்பாயிண்ட் வழியாக செல்கின்றன: POST https://www.magisterium.com/api/v1/a2a. கீழே உள்ள எடுத்துக்காட்டு catholic_qa திறனில் message/send-ஐ அழைக்கிறது.

bash
curl -X POST https://www.magisterium.com/api/v1/a2a \
    -H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "message/send",
      "params": {
        "message": {
          "role": "user",
          "messageId": "msg-001",
          "kind": "message",
          "parts": [{ "kind": "text", "text": "What does the Church teach about the Real Presence?" }],
          "metadata": { "skillId": "catholic_qa" }
        }
      }
    }'
typescript
const accessToken = process.env.MAGISTERIUM_TOKEN!;

const response = await fetch("https://www.magisterium.com/api/v1/a2a", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "message/send",
    params: {
      message: {
        role: "user",
        messageId: crypto.randomUUID(),
        kind: "message",
        parts: [
          { kind: "text", text: "What does the Church teach about the Real Presence?" },
        ],
        metadata: { skillId: "catholic_qa" },
      },
    },
  }),
});

const { result: task } = await response.json();
console.log(task.id, task.status.state);
for (const artifact of task.artifacts ?? []) {
  for (const part of artifact.parts) {
    if (part.kind === "text") console.log(part.text);
  }
}
python
import os
import uuid
import httpx

access_token = os.environ["MAGISTERIUM_TOKEN"]

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "message/send",
    "params": {
        "message": {
            "role": "user",
            "messageId": str(uuid.uuid4()),
            "kind": "message",
            "parts": [
                {"kind": "text", "text": "What does the Church teach about the Real Presence?"}
            ],
            "metadata": {"skillId": "catholic_qa"},
        }
    },
}

response = httpx.post(
    "https://www.magisterium.com/api/v1/a2a",
    headers={
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json",
    },
    json=payload,
    timeout=60,
)
task = response.json()["result"]
print(task["id"], task["status"]["state"])
for artifact in task.get("artifacts", []):
    for part in artifact["parts"]:
        if part["kind"] == "text":
            print(part["text"])

படி 3: பதிலை வாசிக்கவும்

message/send kind: "task" உடன் ஒரு Task பொருளைத் திருப்பித் தருகிறது. ஒரு ஒத்திசைவான திறன் அழைப்பு எப்போதும் இரண்டு முடிவு நிலைகளில் ஒன்றில் முடிவடையும்:

  • status.state == "completed" — முடிவுகள் result.artifacts-இல் உள்ளன. ஒவ்வொரு ஆர்டிஃபேக்ட்டிற்கும் ஒரு artifactId, விருப்ப name, மற்றும் ஒன்று அல்லது அதற்கு மேற்பட்ட parts (text, data, அல்லது file) உள்ளன.
  • status.state == "failed" — தோல்வியின் காரணம் status.message.parts[0].text-இல் உள்ளது.
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "id": "task_abc123",
    "contextId": "ctx_def456",
    "kind": "task",
    "status": { "state": "completed", "timestamp": "2026-04-20T12:00:00.000Z" },
    "artifacts": [
      {
        "artifactId": "art_ghi789",
        "name": "catholic_qa_response",
        "parts": [
          { "kind": "text", "text": "The Catholic Church teaches..." },
          { "kind": "data", "data": { "citations": [] } }
        ]
      }
    ]
  }
}

படி 4: ஒரு பணியை மீட்டெடுக்க அல்லது ரத்து செய்ய

பணிகள் 24 மணி நேரம் சேமிக்கப்படுகின்றன மற்றும் tasks/get-ஐப் பயன்படுத்தி ID மூலம் மீண்டும் பெறப்படலாம்:

bash
curl -X POST https://www.magisterium.com/api/v1/a2a \
    -H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tasks/get",
      "params": { "id": "task_abc123" }
    }'

ஒரு பணியை நிறுத்த வேண்டும் என்றால், அதே ID-உடன் tasks/cancel-ஐ அழைக்கவும். எல்லா Magisterium திறன்களும் ஒத்திசைவாக தீர்க்கப்படுவதால், ரத்து செய்தல் அரிதான மறுமுயற்சி சூழ்நிலைகளில் மட்டுமே பயனுள்ளதாக இருக்கும் — ஏற்கனவே completed அல்லது failed ஆன ஒரு பணியை ரத்து செய்ய முடியாது மற்றும் அது INVALID_PARAMS-ஐ திருப்பித் தரும்.

பொதுவான பிழைகள்

குறியீடுபொருள்தீர்வு
-32004UnauthorizedAuthorization தலைப்பையும் அணுகல் டோக்கன் செல்லுபடியாகும் மற்றும் காலாவதியாகவில்லை என்பதையும் சரிபார்க்கவும்.
-32005Paid plan requiredmagisterium.com/plan-இல் உங்கள் கணக்கை மேம்படுத்தவும்.
-32002Skill not foundAgent Card-இல் பட்டியலிடப்பட்ட ID-உடன் metadata.skillId பொருந்துகிறதா என்பதை உறுதிப்படுத்தவும்.
-32003Rate limit exceededமீண்டும் முயற்சி செய்வதற்கு முன் retryAfter வினாடிகள் (பிழையின் data-இல் உள்ளது) காத்திருக்கவும்.

ஒவ்வொரு முறைக்கும் பிழை குறியீட்டிற்கும் முழு API குறிப்பு-ஐப் பார்க்கவும்.