เทมเพลต JSON พร้อมคัดลอก 6 รายการ · A2A v1.0

ตัวอย่าง A2A Agent Card

เรียกดูเทมเพลต A2A v1.0 ที่ใช้งานได้จริง ทำความเข้าใจการตัดสินใจด้านการออกแบบ จากนั้นปรับใช้ตัวอย่างใดก็ได้สำหรับเอเจนต์ของคุณเอง

การค้นพบเอเจนต์สาธารณะ

ใช้ตัวอย่างเหล่านี้เพื่อกำหนดรูปแบบ JSON ที่ไคลเอนต์ A2A อื่นดึงมาก่อนที่จะตัดสินใจว่าเอเจนต์ของคุณสามารถทำงานให้เสร็จได้หรือไม่

การส่งเข้ามาร์เก็ตเพลส

ปรับผู้ให้บริการ สกิล แท็ก ความสามารถ และเมตาดาต้าความปลอดภัย เพื่อให้ผู้ตรวจสอบเข้าใจว่าเอเจนต์ทำอะไรและใครเป็นผู้ดำเนินการ

แคตตาล็อกเอเจนต์ภายใน

สร้างมาตรฐานคำอธิบายเอนด์พอยต์ การยืนยันตัวตน และสกิลในเอเจนต์ภายในก่อนที่ทีมจะรวมเข้ากับเวิร์กโฟลว์

เทมเพลต JSON

ตัวอย่าง Agent Card สำหรับเอเจนต์สนับสนุน การจอง การช้อปปิ้ง การเขียนโค้ด การวิจัย และเวิร์กโฟลว์

ตรวจสอบเทมเพลต
ตัวกรอง

เอเจนต์สนับสนุนลูกค้า

จัดการคำถามเกี่ยวกับผลิตภัณฑ์ การค้นหาคำสั่งซื้อ การคืนสินค้า และการส่งต่อการยกระดับ

เหตุผลที่ออกแบบมาเช่นนี้

  • ข้อมูลรับรองไคลเอนต์ OAuth 2.0 ปกป้องข้อมูลคำสั่งซื้อ: Agent Card ประกาศ URL โทเค็นและขอบเขตเพื่อให้ไคลเอนต์สามารถยืนยันตัวตนได้โดยไม่ต้องมีเอกสารนอกช่องทาง
  • streaming และ pushNotifications เป็น true ทั้งคู่ เนื่องจากการสนทนาสนับสนุนใช้เวลานานและการอัปเดตการแก้ไขมาถึงแบบอะซิงโครนัส
  • สกิลเดียวถูกจำกัดขอบเขตไว้ที่ขอบเขตงานเดียว (จำแนก แก้ไข ยกระดับ) แทนที่จะเป็นคำอธิบายที่คลุมเครือว่า "ช่วยเหลือลูกค้า" เพื่อให้ตัวกำหนดเส้นทางสามารถจับคู่ได้อย่างแม่นยำ
customer-support.json
{
  "name": "เอเจนต์สนับสนุนลูกค้า",
  "description": "ตอบคำถามฝ่ายสนับสนุนลูกค้า ดึงข้อมูลบริบทของคำสั่งซื้อ และยกระดับปัญหาที่ยังไม่ได้รับการแก้ไขไปยังทีมงานที่เป็นมนุษย์",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "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"
      ]
    }
  ]
}

เอเจนต์การจอง

ค้นหาช่วงเวลานัดหมายที่ว่างและเตรียมการยืนยันการจอง

เหตุผลที่ออกแบบมาเช่นนี้

  • คีย์ API ในส่วนหัวก็เพียงพอแล้วที่นี่: การจองมีขอบเขตตามผู้เช่าแต่ไม่มีปัญหาความยินยอมของผู้ใช้ที่ได้รับมอบหมายซึ่ง OAuth แก้ไข
  • defaultOutputModes เป็น application/json เท่านั้น ซึ่งบ่งบอกว่าผู้เรียกจะได้รับข้อเสนอการจองแบบมีโครงสร้างแทนที่จะเป็นข้อความร้อยแก้ว
  • pushNotifications เป็น true เพื่อให้เอเจนต์สามารถยืนยันการจองได้หลังจากแบ็กเอนด์ที่ถือครองช่วงเวลาลงตัวแล้ว โดยไม่ต้องให้ไคลเอนต์โพลลิ่ง
booking.json
{
  "name": "เอเจนต์การจอง",
  "description": "ค้นหาห้องว่าง เสนอตัวเลือกการจอง และเตรียมการจองการนัดหมายเพื่อขออนุมัติ",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "find-and-prepare-booking",
      "name": "ค้นหาและเตรียมการจอง",
      "description": "ตรวจสอบความพร้อมของทรัพยากร เปรียบเทียบกรอบเวลาการจอง และส่งคืนข้อเสนอการจองที่มีโครงสร้าง",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "ค้นหาการนัดหมาย 30 นาทีบ่ายวันพรุ่งนี้"
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

เอเจนต์การช้อปปิ้ง

เปรียบเทียบสินค้า ความพร้อมจำหน่าย ราคา และข้อจำกัดในการซื้อ

เหตุผลที่ออกแบบมาเช่นนี้

  • คำแนะนำที่จัดอันดับจะสตรีมเข้ามาขณะที่มีการคำนวณ ดังนั้น streaming จึงเป็น true ในขณะที่ pushNotifications ยังคงเป็น false — ไม่มีอะไรเกิดขึ้นหลังจากการตอบสนองเสร็จสมบูรณ์
  • คำอธิบายสกิลมุ่งมั่นที่จะส่งคืนข้อแลกเปลี่ยนและเหตุผล ซึ่งบอกผู้ประสานงานว่าเอเจนต์นี้อธิบายอันดับแทนที่จะเพียงแค่แสดงรายการสินค้า
  • ขอบเขต OAuth ควบคุมข้อมูลที่เกี่ยวข้องกับการซื้อ เดโมการช้อปปิ้งสาธารณะอาจละทิ้งความปลอดภัยทั้งหมดและยังคงเป็น Agent Card ที่ถูกต้อง
shopping.json
{
  "name": "เอเจนต์การช้อปปิ้ง",
  "description": "เปรียบเทียบผลิตภัณฑ์กับข้อจำกัดของผู้ใช้และตัวเลือกการซื้อที่ได้รับการจัดอันดับการคืนสินค้ากับข้อแลกเปลี่ยน",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "compare-shopping-options",
      "name": "เปรียบเทียบตัวเลือกการช็อปปิ้ง",
      "description": "ประเมินผลิตภัณฑ์ผู้สมัคร กรองตามข้อจำกัด และส่งคืนคำแนะนำที่ได้รับการจัดอันดับพร้อมเหตุผล",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "เปรียบเทียบแล็ปท็อปน้ำหนักเบาราคาต่ำกว่า 1,200 ดอลลาร์"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

เอเจนต์การเขียนโค้ด

ตรวจสอบงานโค้ด เสนอแพตช์ และอธิบายการตัดสินใจในการนำไปใช้

เหตุผลที่ออกแบบมาเช่นนี้

  • extendedAgentCard เป็น true: Agent Card สาธารณะแสดงสกิลทั่วไป "ดำเนินการเปลี่ยนแปลงโค้ด" ในขณะที่สกิลเฉพาะรีพอสิทอรีจะเปิดเผยเฉพาะกับไคลเอนต์ที่ยืนยันตัวตนแล้วผ่าน GetExtendedAgentCard เท่านั้น
  • มีการประกาศเอาต์พุตทั้ง text/plain และ application/json เนื่องจากเอเจนต์ส่งคืนคำอธิบายที่มนุษย์อ่านได้พร้อมกับแพตช์ที่เครื่องสามารถนำไปใช้ได้
  • การสตรีมมีความสำคัญสำหรับลูปการคอมไพล์และทดสอบที่ยาวนาน ไคลเอนต์เห็นความคืบหน้าระหว่างกลางแทนที่จะเป็นการเรียกที่เงียบหลายนาที
coding.json
{
  "name": "เอเจนต์การเขียนโค้ด",
  "description": "ช่วยในงานวิศวกรรมซอฟต์แวร์โดยการวิเคราะห์โค้ด เสนอการเปลี่ยนแปลง และส่งคืนบันทึกการใช้งาน",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "implement-code-change",
      "name": "ใช้การเปลี่ยนแปลงรหัส",
      "description": "อ่านคำขอเข้ารหัส ตรวจสอบไฟล์ที่เกี่ยวข้อง ส่งคืนข้อเสนอแพตช์ และสรุปขั้นตอนการตรวจสอบ",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "เพิ่มการแบ่งหน้าให้กับผู้ใช้ API"
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

เอเจนต์การวิจัย

รวบรวมแหล่งข้อมูล ดึงหลักฐาน และส่งคืนบันทึกการวิจัยแบบมีโครงสร้าง

เหตุผลที่ออกแบบมาเช่นนี้

  • ไม่มี securitySchemes เลย: เอนด์พอยต์เปิดเผยต่อสาธารณะโดยเจตนา และการละเว้นฟิลด์เป็นวิธีที่ถูกต้องในการสื่อสิ่งนี้ — แผนที่สคีมที่ว่างเปล่าจะคลุมเครือ
  • อินพุตเป็น text/plain เท่านั้น เนื่องจากบทสรุปการวิจัยเริ่มต้นจากคำถามภาษาธรรมชาติ เอาต์พุตแบบมีโครงสร้างมาถึงในรูปแบบบันทึก application/json
  • นี่คือ Agent Card v1.0 ที่มีประโยชน์ขั้นต่ำ: ตัวตน อินเทอร์เฟซหนึ่งตัว ความสามารถ โหมด และสกิลที่ติดแท็กไว้อย่างดีหนึ่งรายการ
research.json
{
  "name": "เอเจนต์การวิจัย",
  "description": "รวบรวมแหล่งข้อมูล ดึงหลักฐาน และสร้างบันทึกการวิจัยที่มีโครงสร้างพร้อมการอ้างอิง",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "prepare-research-brief",
      "name": "เตรียมบทสรุปการวิจัย",
      "description": "ค้นหาแหล่งที่มาที่ได้รับอนุมัติ แยกคำกล่าวอ้างและหลักฐาน และส่งกลับบทสรุปการวิจัยที่กระชับ",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "เตรียมบรรยายสรุปอ้างอิงเกี่ยวกับนโยบายพลังงานทดแทน"
      ]
    }
  ]
}

เอเจนต์เวิร์กโฟลว์ภายใน

ประสานงานการอนุมัติ การตรวจสอบสถานะ และการอัปเดตเวิร์กโฟลว์ฝ่ายสนับสนุน

เหตุผลที่ออกแบบมาเช่นนี้

  • application/json เป็นโหมดอินพุตและเอาต์พุตเดียว: เอเจนต์นี้ถูกเรียกโดยระบบอื่น ไม่เคยถูกเรียกโดยผู้คนที่พิมพ์ข้อความร้อยแก้ว
  • OAuth 2.0 บวกกับ extendedAgentCard เหมาะสำหรับการตรวจสอบระดับองค์กร — ทีมความปลอดภัยสามารถเห็นข้อกำหนดการยืนยันตัวตนได้อย่างเปิดเผย ในขณะที่สกิลเวิร์กโฟลว์ที่ละเอียดอ่อนยังคงอยู่หลังการยืนยันตัวตน
  • pushNotifications มีความจำเป็นเนื่องจากห่วงโซ่การอนุมัติใช้เวลาหลายชั่วโมงหรือหลายวัน เว็บฮุกเข้ามาแทนที่การโพลลิ่งสำหรับการเปลี่ยนแปลงสถานะ
internal-workflow.json
{
  "name": "เอเจนต์เวิร์กโฟลว์ภายใน",
  "description": "ประสานงานการอนุมัติภายใน ตรวจสอบสถานะของระบบ และเตรียมการอัพเดตขั้นตอนการทำงานสำหรับทีมปฏิบัติการ",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "ตัวอย่างอิงค์",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "coordinate-internal-workflow",
      "name": "ประสานงานขั้นตอนการทำงานภายใน",
      "description": "รับจุดประสงค์ของเวิร์กโฟลว์ ตรวจสอบข้อกำหนดของนโยบาย รวบรวมการอนุมัติ และรายงานสถานะขั้นสุดท้าย",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "ขออนุมัติเพื่อปรับใช้การปรับปรุงบัญชีเงินเดือน"
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

ปรับใช้อย่างมั่นใจ

วิธีปรับใช้ตัวอย่าง Agent Card

ตัวอย่าง Agent Card แต่ละตัวถูกออกแบบมาให้สมบูรณ์เพียงพอสำหรับการคัดลอกโดยเจตนา แต่ไม่ควรเผยแพร่ Agent Card โดยไม่มีการเปลี่ยนแปลง ให้ถือว่ามันเป็นแผนที่ฟิลด์สำหรับเซิร์ฟเวอร์ A2A ของคุณเอง: แทนที่ตัวตน เอนด์พอยต์ ผู้ให้บริการ การยืนยันตัวตน ความสามารถ โหมด และรายละเอียดสกิลด้วยค่าจริงในการใช้งานจริง

Agent Card ที่แข็งแกร่งที่สุดอธิบายขอบเขตงานของเอเจนต์ทั้งในภาษาที่เข้าใจง่ายและเมตาดาต้าที่เครื่องอ่านได้ ไคลเอนต์ควรสามารถบอกได้ว่าเอเจนต์ทำอะไรได้บ้าง ทำอะไรไม่ได้ ต้องเรียก URL ใด และจำเป็นต้องมีข้อมูลรับรองหรือไม่

ก่อนเผยแพร่

แทนที่ URL example.com ทุกรายการด้วยเอนด์พอยต์ A2A ที่ปรับใช้แล้วและเว็บไซต์ผู้ให้บริการของคุณ

เขียนชื่อสกิล คำอธิบาย แท็ก (จำเป็นใน v1.0) และตัวอย่างใหม่สำหรับขอบเขตงานจริง

ตั้งค่า provider.organization และเพิ่ม version ระดับบนสุดทุกครั้งที่เนื้อหา Agent Card เปลี่ยนแปลง

ลบฟิลด์การยืนยันตัวตนเฉพาะเมื่อเอนด์พอยต์เปิดเผยต่อสาธารณะโดยเจตนาเท่านั้น

รักษา defaultInputModes และ defaultOutputModes ให้สอดคล้องกับสิ่งที่เซิร์ฟเวอร์ของคุณยอมรับและส่งคืนจริง

ตรวจสอบ JSON สุดท้ายและเผยแพร่ที่ /.well-known/agent-card.json บนโดเมนบริการของคุณ

พร้อมที่จะสร้าง

เริ่มต้นด้วยตัวอย่าง แล้วทำให้เป็นของคุณเอง

เปิดรูปแบบใดก็ได้ในเครื่องมือสร้าง Agent Card ตรวจสอบ JSON และตรวจสอบก่อนที่จะเผยแพร่