6 gotowych do skopiowania szablonów JSON · A2A v1.0

Przykłady A2A Agent Card

Przeglądaj praktyczne szablony A2A v1.0, zrozum ich decyzje projektowe, a następnie dostosuj dowolny przykład do własnego agenta.

Publiczne wykrywanie agentów

Użyj tych przykładów, aby ukształtować JSON, który inny klient A2A pobiera przed podjęciem decyzji, czy Twój agent może wykonać zadanie.

Zgłoszenie do marketplace

Dostosuj dostawcę, umiejętności, tagi, możliwości, i metadane bezpieczeństwa, aby recenzenci rozumieli, co robi agent i kto go obsługuje.

Wewnętrzne katalogi agentów

Ustandaryzuj opisy endpointów, uwierzytelniania, i umiejętności w agentach wewnętrznych, zanim zespoły zintegrują je z przepływami pracy.

Szablony JSON

Przykładowe Agent Card dla agentów obsługi klienta, rezerwacji, zakupów, kodowania, badań, i przepływu pracy.

Zwaliduj szablon
Filtr

Agent Obsługi Klienta

Obsługuje pytania o produkty, wyszukiwanie zamówień, zwroty, i przekazywanie eskalacji.

Dlaczego zbudowano to w ten sposób

  • Poświadczenia klienta OAuth 2.0 chronią dane zamówień: Agent Card deklaruje URL tokena i zakres, aby klienci mogli się uwierzytelniać bez dokumentacji poza pasmem.
  • streaming i pushNotifications są oba true, ponieważ rozmowy obsługi klienta trwają długo, a aktualizacje rozwiązania przychodzą asynchronicznie.
  • Pojedyncza umiejętność jest ograniczona do jednej granicy zadania (klasyfikować, rozwiązywać, eskalować) zamiast niejasnego opisu "pomagać klientom", dzięki czemu routery mogą precyzyjnie ją dopasować.
customer-support.json
{
  "name": "Agent Obsługi Klienta",
  "description": "Odpowiada na pytania obsługi klienta, pobiera kontekst zamówienia i przekazuje nierozwiązane problemy zespołowi ludzkiemu.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Rozwiąż żądanie obsługi klienta",
      "description": "Klasyfikuje żądanie obsługi klienta, zbiera potrzebny kontekst, proponuje rozwiązanie i eskaluje, gdy poziom zaufania jest niski.",
      "tags": [
        "support",
        "orders",
        "returns"
      ],
      "examples": [
        "Pomóż mi zwrócić moje zamówienie."
      ]
    }
  ],
  "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 Rezerwacji

Znajduje dostępne terminy spotkań i przygotowuje potwierdzenia rezerwacji.

Dlaczego zbudowano to w ten sposób

  • Klucz API w nagłówku wystarczy tutaj: rezerwacje są ograniczone zakresem najemcy, ale nie niosą problemu zgody delegowanego użytkownika, który rozwiązuje OAuth.
  • defaultOutputModes to tylko application/json, sygnalizując, że wywołujący otrzymują ustrukturyzowane propozycje rezerwacji zamiast prozy.
  • pushNotifications ma wartość true, aby agent mógł potwierdzić rezerwację po ustabilizowaniu się backendu utrzymującego slot, bez konieczności odpytywania przez klienta.
booking.json
{
  "name": "Agent Rezerwacji",
  "description": "Wyszukuje dostępność, proponuje opcje rezerwacji i przygotowuje rezerwacje terminów do zatwierdzenia.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Znajdź i przygotuj rezerwację",
      "description": "Sprawdza dostępność zasobów, porównuje okna rezerwacji i zwraca ustrukturyzowaną propozycję rezerwacji.",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "Znajdź 30-minutowe spotkanie jutro po południu."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Agent Zakupowy

Porównuje produkty, dostępność, ceny, i ograniczenia zakupowe.

Dlaczego zbudowano to w ten sposób

  • Uszeregowane rekomendacje są przesyłane strumieniowo w miarę ich obliczania, więc streaming ma wartość true, podczas gdy pushNotifications pozostaje false — nic się nie dzieje po zakończeniu odpowiedzi.
  • Opis umiejętności zobowiązuje się do zwracania kompromisów i uzasadnień, co informuje orkiestratory, że ten agent wyjaśnia rankingi zamiast po prostu wymieniać produkty.
  • Zakresy OAuth kontrolują dane związane z zakupem; publiczna demonstracja zakupów mogłaby całkowicie pominąć bezpieczeństwo i pozostać ważną Agent Card.
shopping.json
{
  "name": "Agent Zakupowy",
  "description": "Porównuje produkty z ograniczeniami użytkowników i zwraca wybrane opcje zakupu z kompromisami.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Porównaj opcje zakupów",
      "description": "Ocenia potencjalne produkty, filtruje według ograniczeń i zwraca rankingowe rekomendacje wraz z uzasadnieniem.",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "Porównaj lekkie laptopy poniżej 1200 USD."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Agent Programistyczny

Przegląda zadania kodowe, proponuje poprawki, i wyjaśnia decyzje implementacyjne.

Dlaczego zbudowano to w ten sposób

  • extendedAgentCard ma wartość true: publiczna Agent Card wymienia ogólną umiejętność "zaimplementować zmianę kodu", podczas gdy umiejętności specyficzne dla repozytorium są ujawniane tylko uwierzytelnionym klientom poprzez GetExtendedAgentCard.
  • Deklarowane są zarówno wyjścia text/plain, jak i application/json, ponieważ agent zwraca czytelne dla człowieka wyjaśnienia wraz z poprawkami możliwymi do zastosowania maszynowo.
  • Strumieniowanie ma znaczenie dla długich pętli kompilacji i testowania; klienci widzą postęp pośredni zamiast cichego, kilkuminutowego wywołania.
coding.json
{
  "name": "Agent Programistyczny",
  "description": "Pomaga w zadaniach związanych z inżynierią oprogramowania, analizując kod, proponując zmiany i przesyłając notatki dotyczące wdrożenia.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Zaimplementuj zmianę kodu",
      "description": "Odczytuje żądanie kodowania, sprawdza odpowiednie pliki, zwraca propozycję poprawki i podsumowuje kroki weryfikacji.",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "Dodaj paginację do interfejsu API użytkowników."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Agent Badawczy

Zbiera źródła, wydobywa dowody, i zwraca ustrukturyzowane notatki badawcze.

Dlaczego zbudowano to w ten sposób

  • Brak jakichkolwiek securitySchemes: endpoint jest celowo publiczny, a pominięcie pola jest właściwym sposobem, aby to wyrazić — pusta mapa schematów byłaby niejednoznaczna.
  • Wejście to tylko text/plain, ponieważ briefy badawcze zaczynają się od pytań w języku naturalnym; ustrukturyzowane wyjście przychodzi jako notatki application/json.
  • To jest minimalnie użyteczna Agent Card v1.0: tożsamość, jeden interfejs, możliwości, tryby, i jedna dobrze otagowana umiejętność.
research.json
{
  "name": "Agent Badawczy",
  "description": "Zbiera materiał źródłowy, wyodrębnia dowody i tworzy uporządkowane notatki badawcze z cytatami.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Przygotuj brief badawczy",
      "description": "Przeszukuje zatwierdzone źródła, wyodrębnia twierdzenia i dowody oraz zwraca zwięzły opis badań.",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "Przygotuj cytowany brief na temat polityki w zakresie energii odnawialnej."
      ]
    }
  ]
}

Agent Wewnętrznego Przepływu Pracy

Koordynuje zatwierdzenia, kontrole stanu, i aktualizacje przepływu pracy back-office.

Dlaczego zbudowano to w ten sposób

  • application/json to jedyny tryb wejścia i wyjścia: ten agent jest wywoływany przez inne systemy, nigdy przez ludzi wpisujących prozę.
  • OAuth 2.0 plus extendedAgentCard pasuje do audytów korporacyjnych — zespoły bezpieczeństwa mogą publicznie zobaczyć wymagania uwierzytelniania, podczas gdy wrażliwe umiejętności przepływu pracy pozostają za uwierzytelnianiem.
  • pushNotifications są niezbędne, ponieważ łańcuchy zatwierdzeń trwają godziny lub dni; webhooki zastępują odpytywanie dla zmian stanu.
internal-workflow.json
{
  "name": "Agent Wewnętrznego Przepływu Pracy",
  "description": "Koordynuje wewnętrzne zatwierdzenia, sprawdza stan systemu i przygotowuje aktualizacje przepływu pracy dla zespołów operacyjnych.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Przykładowa firma",
    "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": "Koordynuj wewnętrzny przepływ pracy",
      "description": "Otrzymuje zamiar przepływu pracy, sprawdza wymagania zasad, zbiera zatwierdzenia i raportuje ostateczny stan.",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "Poproś o zatwierdzenie wdrożenia aktualizacji listy płac."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Dostosuj z pewnością

Jak dostosować przykład Agent Card

Każdy przykład Agent Card jest celowo wystarczająco kompletny, aby go skopiować, ale Agent Card nie powinna być publikowana bez zmian. Traktuj ją jako mapę pól dla własnego serwera A2A: zastąp tożsamość, endpoint, dostawcę, uwierzytelnianie, możliwości, tryby, i szczegóły umiejętności wartościami produkcyjnymi.

Najsilniejsze Agent Card wyjaśniają granicę zadania agenta zarówno prostym językiem, jak i metadanymi czytelnymi maszynowo. Klient powinien być w stanie stwierdzić, co agent może zrobić, czego nie może zrobić, jaki URL wywołać, i czy wymagane są poświadczenia.

Przed publikacją

Zastąp każdy URL example.com wdrożonym endpointem A2A i stroną internetową dostawcy.

Przepisz nazwę umiejętności, opis, tagi (wymagane w v1.0), i przykłady dla rzeczywistej granicy zadania.

Ustaw provider.organization i zwiększaj version najwyższego poziomu za każdym razem, gdy zmienia się zawartość Agent Card.

Usuń pola uwierzytelniania tylko wtedy, gdy endpoint jest celowo publiczny.

Utrzymuj defaultInputModes i defaultOutputModes zgodne z tym, co Twój serwer faktycznie akceptuje i zwraca.

Zwaliduj ostateczny JSON i opublikuj go pod adresem /.well-known/agent-card.json w domenie Twojej usługi.

Gotowi do budowania

Zacznij od przykładu, a następnie uczyń go swoim.

Otwórz dowolny wzorzec w Generatorze Agent Card, przejrzyj JSON, i zwaliduj go przed publikacją.