Im Jahr 2023 gaben ChatGPT-Plugins der Welt einen ersten Einblick in Modelle, die APIs aufrufen. Im Jahr 2024 wurde Function Calling anbieterübergreifend zum Standard. Im Jahr 2025 veröffentlichte Anthropic MCP und IDEs wie Cursor und Claude Desktop übernahmen es – im selben Bogen entwickelte sich JSON von einem Datenaustauschformat zum AgentenformatTypensystemUndHandshake-Protokoll.
Wenn Sie RAG-Pipelines, Automatisierungsworkflows oder Produkte im Copilot-Stil erstellen, werden Sie irgendwann auf drei Begriffe stoßen:JSON-Schema(bauliche Zwänge),Funktionsaufruf(Modell wählt Werkzeuge aus und füllt Parameter) undMCP(Model Context Protocol – standardisierte Tool-Konnektivität). Dieser Artikel richtet sich an Backend-, Plattform- und KI-Anwendungsentwickler. Es wird erläutert, warum jede Schicht entstanden ist, welches Problem sie löst, wie sie zusammenpasst und wie man in der Praxis wählt.
Warum Agenten strukturierte Schnittstellen benötigen
Das Kernmuster früher LLM-Anwendungen war: Benutzer stellten Fragen → das Modell generierte natürliche Sprache → kopierte die Ergebnisse manuell zur Ausführung. Für Chat-Szenarien reicht das aus, aber es kann das Schreiben von Datenbanken, das Versenden von E-Mails, die Überprüfung des Inventars usw. nicht zuverlässig steuern.Wiederholbar und überprüfbarautomatisierte Aufgaben.
Der ReAct-Modus (Reason + Act) unter dem reinen Prompt-Projekt ermöglicht es dem Modell, „Action: search(query=...)“ in den Text zu schreiben, und das Host-Programm verwendet reguläres Parsing – es kann ausgeführt werden, ist aber fragil: Klammernverschachtelung, Anführungszeichen-Escapezeichen und das Mischen mehrerer Sprachen führen zu Parsing-Fehlern. Was die Produktionsumgebung erfordert, istMaschinenlesbar, überprüfbar, versionierbarVertrag, anstatt sich auf das Glück zu verlassen, um Markdown zu analysieren.
JSON erfüllt drei Anforderungen: Es ist in großen Mengen in LLM-Trainingsdaten vorhanden, kann sowohl von Menschen als auch von Programmen gelesen werden und verfügt über ein ausgereiftes Schema-Verifizierungs-Ökosystem. Infolgedessen ist das JSON-Schema zum De-facto-Standard für die Beschreibung geworden, „welche Datenform das Modell ausgeben soll“; Funktionsaufrufe integrieren auch „welche Funktion aufzurufen und welche Parameter zu übergeben sind“ in dieselbe JSON-Struktur.
Zeitleiste der Technologieentwicklung
| Bühne | repräsentative Fähigkeit | Kernschmerzpunkte | Lösung |
|---|---|---|---|
| 2022–2023 Früh | Nur-Text + Eingabeaufforderungsvorlage | Gibt nicht analysierbare, halluzinatorische Parameter aus | Beispiel für ein Einschränkungsformat mit wenigen Aufnahmen |
| 2023 Mitte | ReAct / Toolformer-Ideen | Die reguläre Parsing-Aktion ist instabil | Einverstandener JSON-Block, verlassen Sie sich weiterhin auf Prompt |
| Ende 2023–2024 | OpenAI-Funktionsaufruf | Die Formate sind bei den Herstellern nicht einheitlich | Parameter für Tools auf API-Ebene, Beschreibung des JSON-Schemas |
| 2024 | Strukturierte Ausgaben | Dem Modell fehlen möglicherweise immer noch Felder | Serverseitige Einschränkungsdekodierung, die die Einhaltung des Schemas erzwingt |
| Ende 2024–2025 | MCP (gefördert von Anthropic und anderen) | N×M-Integration: jede IDE × jedes Tool | Unified Host ↔ Server-Protokoll, steckbare Tools |
| 2025–2026 | Agent SDK + MCP-Ökosystem | Berechtigungen, Prüfung, Mandantenfähigkeit | OAuth, stdio/SSE-Transport, Tool-Erkennung |
Die wesentlichen Änderungen dieser Linie sind:Übersetzen Sie „was das Modell tun möchte“ aus natürlicher Sprache in getippte strukturierte Nachrichtenund dann sicher vom Hostprogramm oder MCP-Server ausgeführt werden.
JSON-Schema: „Typsystem“ des Agenten
Das JSON-Schema wurde ursprünglich für die API-Dokumentation und Konfigurationsüberprüfung verwendet (OpenAPI, Kubernetes CRD usw.). Im Agentenszenario übernimmt er zwei Arten von Verantwortlichkeiten:
- Werkzeugeingabeparameter: Description
search_productsrequiresquery(string) andlimit(integer, default 10) - Modellausgabe: Beispielsweise müssen beim Extrahieren von Entitäten, Klassifizierungsbezeichnungen, Genehmigungsschlussfolgerungen usw. feste Felder für den nachgelagerten Verbrauch zurückgegeben werden.
Typische Werkzeugparameter Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name, e.g. Beijing or Shanghai"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Temperature unit"
}
},
"required": ["city"]
}The description field is particularly important: it enters the context of the model and helps the model understand when to call and what the semantics of each parameter are - Schema also servesValidatorUndPrompt.
Strukturierte Ausgaben und Schema
Wenn nur Schema in Prompt geschrieben wird, weist das Modell möglicherweise immer noch zusätzliche Felder oder Typfehler auf. Der von OpenAI, Google usw. bereitgestellte strukturierte Ausgaben-/JSON-Modus schränkt Token während der Dekodierungsphase ein, sodass die Ausgabe strikt dem Schema entspricht. Dies ist eine Notwendigkeit für den Pipeline-Typ „Invoice OCR → Structured JSON → Accounting System“.
Vorschläge während der Entwicklungsphase: Verwenden Sie zunächst Tools wie die JSON-ToolboxSyntax des lokalen Überprüfungsschemas, and then use the sample payload to verify whether required and enum intercept illegal input as expected.
Funktionsaufruf: Handshake zwischen Modellen und Werkzeugen
Funktionsaufrufe (von verschiedenen Anbietern auch als Tool Use, Tools API bezeichnet) definieren die Kommunikation zwischen dem Modell und dem Host.eine Runde Händeschütteln:
- Der Host sendet die Werkzeugliste (Name, Beschreibung, Parameterschema) zusammen mit Nachrichten an das Modell
- The model does not directly execute the code, but returns
tool_calls: selected tool name + JSON parameter string - The host executes the real function (check DB, adjust HTTP), and stuff the result back into the conversation as
toolrole message - Das Modell generiert auf Basis der Ergebnisse für den Endbenutzer sichtbare Antworten
Vergleich mit dem ReAct-Textmodus
| Abmessungen | ReAct-Text | Funktionsaufruf |
|---|---|---|
| Parameterformat | Freier Text, muss geparst werden | JSON, API-native Felder |
| Mehrere Werkzeuge parallel | Katastrophe | Unterstützt mehrere Tool_Calls gleichzeitig |
| Feinabstimmung der Ausrichtung des Modells | schwach | Anbieterschulung für das Werkzeugformat |
| Beobachtbarkeit | Sie müssen selbst ein Protokoll erstellen | Standardnachrichtenstruktur, leicht zu verfolgen |
Funktionsaufrufe eliminieren nicht das Agent-Framework (LangChain, AutoGen, Cursor Agent usw.), sondern werden zur Schnittstelle zwischen dem Framework und dem Modell.dünne Protokollschicht——Das Framework ist für Orchestrierung, Wiederholung und Speicher verantwortlich. Die Modell-API ist dafür verantwortlich, „zu entscheiden, welches Tool aufgerufen werden soll“.
MCP: steckbares Tool-Ökosystem
Funktionsaufrufe lösen das Problem, „wie der Aufruf auf der Modellseite deklariert wird“. Doch wenn die Anzahl der Tools wächst und die Quellen verstreut sind (GitHub, Slack, Postgres, Browser, Dateisysteme), entstehen neue Probleme:
- Jeder Host (IDE, Chat-Client, selbst erstellter Agent) muss für jedes Tool eine Anpassung schreiben.
- Berechtigungen, Anmeldeinformationen und stdio/HTTP-Transportmethoden sind unabhängig voneinander
- Benutzer können nicht „einen MCP-Server installieren und ihn überall verfügbar machen“
Model Context Protocol (MCP)Es wurde Ende 2024 von Anthropic als Open Source bereitgestellt und ist als Standardprotokoll zwischen Host und Tool-Anbieter positioniert. Die Analogiebeziehung ist ungefähr:
| Analogie | Web-Ära | Agenten-Ära |
|---|---|---|
| Beschreibung der Fähigkeit | OpenAPI/JSON-Schema | MCP-Tool-Definition (einschließlich inputSchema) |
| Laufzeitverbindung | HTTP-REST | MCP-Transport wie stdio / SSE |
| Kunde | Browser, SDK | MCP-Host (Cursor, Claude Desktop…) |
| Plug-in-Markt | npm, Chrome-Erweiterung | MCP-Server-Registrierung |
MCP-Kernkonzepte
- Gastgeber: Die Anwendung, die die Verbindung initiiert hat (z. B. Cursor IDE)
- Kunde: MCP-Client im Host, der die Sitzung mit dem Server aufrechterhält
- Server: Prozesse, die Tools, Ressourcen und Eingabeaufforderungen verfügbar machen (z. B. filesystem-mcp, github-mcp)
- Fähigkeiten: Die Werkzeugliste wird dynamisch ermittelt und nicht in der Eingabeaufforderung fest codiert.
MCP Tool's inputSchema itself is JSON Schema. Therefore, MCP does not replace Function Calling, but standardizes "tool implementation"; Host may still use MCP toolsAbbildungFunktionsaufrufformat für die Modell-API.
Wie die drei zusammenarbeiten
Verwenden Sie eine logische Ebene, um die Beziehung zwischen den dreien zu verstehen:
┌─────────────────────────────────────────────┐
│ 用户 / 业务系统 │
└─────────────────────┬───────────────────────┘
▼
┌─────────────────────────────────────────────┐
│ Agent Host(编排、权限、记忆) │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ LLM API │◄──►│ Function Calling │ │
│ │ (推理) │ │ (tool_calls 消息) │ │
│ └─────────────┘ └─────────────────────┘ │
│ ▲ │ │
│ │ JSON Schema ▼ │
│ ┌────────┴────────┐ ┌──────────────────┐ │
│ │ 输出 Schema │ │ MCP Client │ │
│ │ (Structured │ │ ──stdio/SSE──► │ │
│ │ Outputs) │ │ MCP Server(s) │ │
│ └─────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────┘- JSON-Schema: Übergreifend auf jede Ebene – Werkzeugparameter, MCP-Eingabeschema, modellstrukturierte Ausgabe
- Funktionsaufruf: Modell ↔ Host-Aufrufsyntax
- MCP:Host ↔ Toolbus für die Außenwelt
Kleine Skripte verfügen möglicherweise nur über Funktionsaufrufe + einige lokale Funktionen. Agent-Plattformen auf Unternehmensebene verwenden häufig MCP-Cluster + einheitliche Schema-Registrierung + Prüfprotokolle.
Vollständiges Beispiel für einen Anruflink
Der Benutzer fragte: „Wie hoch ist die Temperatur heute in Shanghai? Sehen Sie sich übrigens mein JSON-Schema-bezogenes Warehouse auf GitHub an.“
- GastgeberPull available tools from MCP:
get_weather,github_search_repos - Konvertiert in ein Tools-Array der Modell-API, jeweils mit JSON-Schema-Parametern
- ModellGibt zwei tool_calls zurück, die Parameter sind beide legales JSON
- GastgeberRufen Sie den Wetterserver und den Github-Server über MCP auf, um JSON-Ergebnisse zu sammeln
- Ergebnisse werden als Tool-Meldungen zurückgegeben; Das Modell synthetisiert Antworten in natürlicher Sprache
- Wenn Sie es in das Arbeitsauftragssystem schreiben müssen, verwenden SieAusgabeschemaConstraint final JSON:
{ "summary", "temperature", "repo_count" }
Wenn ein Schrittparameter nicht dem Schema entspricht, kann der Host ihn ablehnen und das Modell auffordern, es vor der Ausführung erneut zu versuchen – dies ist mit Text-ReAct schwierig zu bewerkstelligenausfallsicher.
Auswahlvergleich und Best Practices
| Szene | Anregung |
|---|---|
| Einzelnes Backend + 3 oder weniger Tools | Funktionsaufruf + handschriftliches Schema reichen aus |
| IDE/Desktop Copilot, Tools wachsen weiter | Priorisieren Sie den MCP-Server und reduzieren Sie die Integration der Host-Anpassung |
| Das nachgelagerte System benötigt nur JSON, keine natürliche Sprache. | Strukturierte Ausgaben + striktes Schema |
| Multi-Modell-Anbieter (OpenAI + Claude + Open Source) | Das Schema ist von der Tooldefinition und der Hersteller-API sowie der Konvertierung auf mittlerer Ebene entkoppelt |
| Compliance und Audit | Notieren Sie alle Tool-Aufrufe und Schema-Versionen und verbieten Sie undefinierte Tools |
Schema-Designpunkte
- Field
descriptionclearly writes business semantics, which can reduce miscalls better thantypealone. requiredBetter to be strict than loose; usedefaultor explicitly nullable for optional fields- Use string + description instead for large enumerations to avoid the
enumlist being too long and occupying the context - Das Schema ist in die Git-Versionsverwaltung integriert und die Codeüberprüfung erfolgt auf die gleiche Weise wie API-Änderungen.
FAQ
Welche Beziehung besteht zwischen JSON-Schema und Funktionsaufruf?
Funktionsaufrufe definieren, wie das Modell Tools deklariert und aufruft. Das JSON-Schema beschreibt die strukturellen Einschränkungen von Werkzeugparametern und Modellausgaben. Die meisten APIs verwenden direkt eine Teilmenge des JSON-Schemas als Parameterdefinition für Tools.
Benötige ich weiterhin MCP mit Funktionsaufruf?
Funktionsaufrufe lösen das Aufrufprotokoll zwischen dem Single-Shot-Modell und dem Hostprogramm. MCP löst, wie Tools prozessübergreifend erkannt, autorisiert, verbunden und wiederverwendet werden. Komplexe Agenten überschneiden sich normalerweise mit beiden: MCP stellt das Tool-Ökosystem bereit und Funktionsaufruf ist die Aufrufsyntax auf der Modellseite.
Wird MCP OpenAPI ersetzen?
Wird nicht vollständig ersetzt. OpenAPI beschreibt den HTTP-API-Vertrag; MCP ist auf die Tool-Verbindung zwischen Agent-Laufzeit und IDE ausgerichtet. REST-Dienste können weiterhin OpenAPI verwenden und auf die Agentenseite kann über die MCP-Server-Paketierung zugegriffen werden.
Warum erfordert die Agent-Ausgabe auch JSON-Schema-Einschränkungen?
Eine strukturierte Ausgabe erleichtert das Parsen, die Verifizierung und den Downstream-Pipeline-Verbrauch von Programmen, reduziert fehlende Felder oder Typfehler, die durch „freies Spielen“ des Modells verursacht werden, und verbessert die Zuverlässigkeit automatisierter Aufgaben.
Welche Ebene sollten Sie bei der Entwicklung eines Agenten zuerst erlernen?
Empfohlene Reihenfolge: JSON-Schema-Grundlagen → Funktionsaufruf mit einem Tool → Mehrstufige Agenten-Orchestrierung → MCP bei Bedarf einführen, um eine Verbindung zu externen Systemen herzustellen. Jede Schicht löst Probleme unterschiedlicher Granularität.
Wie kann ich das vom Agent verwendete JSON-Schema lokal überprüfen?
Mit der Verifizierungsfunktion der JSON-Toolbox können Sie lokal im Browser überprüfen, ob die Schema-Syntax mit den Beispieldaten übereinstimmt und die Daten nicht auf den Server hochgeladen werden.
Zusammenfassung und nächste Schritte
Die Transformation des KI-Agenten von „Chat-Fähigkeit“ zu „Dinge-Tun-Fähigkeit“ beruht darauf, Unsicherheit Schicht für Schicht in strukturierten Grenzen zu fixieren: Das JSON-Schema definiert die Form, Funktionsaufrufe definieren, wie das Modell erreicht wird, und MCP definiert, wie sich das Tool mit dem Ökosystem verbindet. Die drei sind kein Ersatz für einander;Verschiedene Schichten auf demselben Stapel.
Vorschlag für den nächsten Schritt: Nehmen Sie ein echtes Geschäftstool (Bestellungen prüfen, Benachrichtigungen senden), schreiben Sie ein JSON-Schema dafür → stellen Sie eine Verbindung zu Funktionsaufrufen her und führen Sie eine einzelne Runde durch → bewerten Sie dann, ob es sich lohnt, es als MCP-Server für die Wiederverwendung auf mehreren Hosts zu kapseln. Schema- und Beispieldaten können lokal in der JSON-Toolbox überprüft werden, bevor sie online gehen.