In den letzten Monaten hatte ich die Gelegenheit, mich in die Aufgabe einzutauchen, APIs und Backend -Systeme für den Konsum durch LLMs anzupassen, insbesondere mit dem MCP -Protokoll. Anfangs erwartete ich, dass die Erfahrung nicht anders ist als alle anderen ähnlichen Entwicklungsprojekte, die ich in der Vergangenheit durchgeführt habe. Ich struggle jedoch fasziniert zu entdecken, dass diese autonomen Kunden eine neue Artwork von Kreatur sind. Infolgedessen erforderte sich die Entwicklung von APIs, um den größten Wert aus der Agenteninteraktion zu erzielen, mehr als nur zugänglich.
Dieser Beitrag ist ein Ergebnis meiner Experimente und Feldtests, hoffentlich kann er für andere Praktiker nützlich sein.
Die Kraft und Fluch der Autonomie

Wir Entwickler werden an Instruments und Automatisierungsprozesse der dritten Social gathering gewöhnt, die mit den Anwendungs-APIs interagieren. Unsere Schnittstellen haben sich daher um Finest Practices entwickelt, die diese Anwendungsfälle am besten unterstützen. Transaktions-, versionierte, vertragsgetriebene APIs, die zur Durchsetzung von Vorwärts-/Rückwärtskompatibilität und für die Effizienz aufgebaut wurden. Dies sind alles wichtige Anliegen, die in der Priorität zweitrangig sind und oft einfach irrelevant sind, wenn sie den autonomen Benutzer berücksichtigen.
Bei Agenten als Kunden müssen sich keine Sorgen über die Kompatibilität für die Rückwärts-/Vorwärtsbewegung machen, da jede Sitzung staatenlos und einzigartig ist. Das Modell untersucht, wie man bei jedem Entdeckung Instruments verwendet und an der richtigen Kombination von API -Aufrufen ankommt, um sein Ziel zu erreichen. So begeistert dieser Agent auch sein magazine, es wird jedoch auch nach einigen wenigen versagten Versuchen aufgeben, es sei denn, es gibt angemessene Anreize und Richtlinien.
Noch wichtiger ist, dass dies ohne solche Hinweise bei der API -Anruf erfolgreich sein könnte, aber seine Ziele nicht erreicht. Im Gegensatz zu Skriptautomatik oder erfahrenen Entwicklern verfügt es nur über die API -Dokumentation und die Antworten, um herauszufinden, wie die Ziele erreicht werden können. Die dynamische Natur seiner Reaktion ist sowohl ein Segen als auch ein Fluch, da diese beiden Quellen auch die Summe des Wissens sind, auf die er zurückgreifen kann, um wirksam zu sein.
Gesprächsgetriebene APIs
Ich hatte zuerst erkannt, dass der Agent eine andere Artwork von Design benötigen würde, während einige Fälle, in denen der Agent nicht in die gewünschte Ergebnisse gelangen konnte, zu beheben. Ich habe MCP Software -Zugriff auf eine API zur Verfügung gestellt, die Nutzungsinformationen für jede Codefunktion basierend auf den Verfolgung von Daten bereitstellt. Manchmal schien es, dass der Agent es einfach nicht richtig benutzte. In der Interaktion genauer betrachtete das Modell das Software richtig und erhielt aus verschiedenen Gründen ein leeres Array als Antwort. Dieses Verhalten wäre 100% korrekt für einen ähnlichen Betrieb in unserer API.
Der Agent hatte jedoch Probleme zu verstehen, warum dies geschah. Nachdem es ein paar einfache Variationen ausprobiert hatte, gab es aufgegeben und beschloss, zu anderen Erforschungsmöglichkeiten zu übergehen. Für mich hat diese Interaktion eine verpasste Gelegenheit dargestellt. Niemand hatte schuld; Transaktionell struggle das Verhalten korrekt. Alle relevanten Exams würden bestehen, aber bei der Messung der Wirksamkeit dieser API stellten wir fest, dass die „Erfolgsrate“ lächerlich niedrig struggle.
Die Lösung stellte sich als einfach heraus, anstatt eine leere Antwort zurückzugeben, entschied ich mich für eine detailliertere Reihe von Anweisungen und Ideen:
var emptyResult = new NoDataFoundResponse()
{
Message = @"There was no data discovered based mostly on the standards despatched.
This might imply that the code isn't referred to as, or that it isn't manually instrumented
utilizing OTEL annotations.",
SuggestedNextSteps = @"Urged steps:
1. Seek for endpoints (http, shoppers, jobs and so forth.) that use this perform.
Endpoints are often routinely instrumented with OTEL spans by the
libraries utilizing them.
2. Strive calling this device utilizing the tactic and sophistication of the endpoint
itself or use the GetTraceForEndpoint device with the endpoint route.
3. Recommend handbook instrumentation for the precise technique relying on the language used within the undertaking
and the present fashion of instrumentation used (annotations, code and so forth.)"
};
Anstatt nur die Ergebnisse an den Agenten zurückzugeben, versuchte ich, etwas zu tun, was Agenten oft versuchen werden – halten Sie das Gespräch am Laufen. Meine Wahrnehmung von API -Antworten änderten sich daher. Wenn sie von LLMs konsumiert werden, sind sie im Wesentlichen a Rückwärtsaufforderung. Eine beendete Interaktion ist eine Sackgasse. Alle Daten, die wir zum Agenten zurückkehren, bieten ihm die Möglichkeit, in seinem Untersuchungsprozess einen anderen Thread zu ziehen.
Hateoas, die APIs ‚Wählen Sie Ihr eigenes Abenteuer „

Als ich über die Philosophie dieses Ansatzes nachdachte, wurde mir klar, dass es etwas Vage bekannt struggle. Vor langer Zeit, als ich meine ersten Schritte zur Herstellung moderner REST -APIs machte, wurde ich in das Konzept von Hypermedia -APIs und Hateoas: Hypertext als Engine des Anwendungszustands eingeführt. Das Konzept wurde durch Fielding in seinem wegweisenden Weblog -Beitrag von 2008 umrissen REST-APIs müssen hypertextgetrieben sein. Ein Satz in diesem Beitrag hat mich damals völlig umgehauen:
„Übergänge des Anwendungsstatus müssen durch die Clientauswahl der serverbereiteten Auswahlmöglichkeiten gesteuert werden, die in den empfangenen Darstellungen vorhanden sind“
Mit anderen Worten, der Server kann unterrichten Der Consumer, was als nächstes zu tun ist, anstatt einfach die angeforderten Daten zurückzusenden. Das kanonische Beispiel ist eine einfache GET -Anfrage für eine bestimmte Ressource, wobei die Antwort Informationen zu Aktionen liefert, die der Consumer als nächstes auf diese Ressource annehmen kann. Eine selbstdokumentierende API, bei der der Kunde im Voraus nichts darüber wissen musste, außer einem einzigen Einstiegspunkt, aus dem ein Zweig mit Auswahlmöglichkeiten entsteht. Hier ist ein gutes Beispiel aus der Wikipedia Seite:
HTTP/1.1 200 OK
{
"account": {
"account_number": 12345,
"steadiness": {
"foreign money": "usd",
"worth": 100.00
},
"hyperlinks": {
"deposits": "/accounts/12345/deposits",
"withdrawals": "/accounts/12345/withdrawals",
"transfers": "/accounts/12345/transfers",
"close-requests": "/accounts/12345/close-requests"
}
}
}
Zu dieser Zeit struggle ich fasziniert von diesem Konzept, das mich an das erinnerte, was allgemein als „Wählen Sie Ihr eigenes Abenteuer“ -Bücher oder „aus“ aus „aus.GameBooks‚. Dieses Style der Bücher, ein untrennbarer Bestandteil meiner Kindheit, leitete nicht einfach eine Geschichte weiter (oder lieferte eine API -Antwort durch diese Metapher), sondern gab dem Leser auch einen Schlüssel darüber, was die nächsten Optionen sind, die ihm verfügbar sind. Hypermedia Relaxation-APIs waren Selbstdokumentation und boten den Benutzern die Möglichkeit, den Standing der Anwendung und die für jede Entitäts- oder Prozessressource verfügbaren Vorgänge zu verstehen, ohne umfangreiche Dokumentation durchlesen zu müssen.
Hypermedia auf Steroiden
Eine Möglichkeit, Hypermedia APIs zu betrachten, besteht darin, dass er dem Benutzer als Teil der Antwort mehr Kontext bietet. Der Kontext ist für Agenten alles, und er muss mit den verfügbaren Optionen oder dem Betrieb sicherlich nicht aufhören. Eine API ist ein Interaktionspunkt, an dem der Kontext weitergeleitet und in einer Type bereitgestellt werden kann, die eine weitere Interaktion fördern würde. Schauen wir uns ein anderes Beispiel an!
Ein weiteres Software, an dem ich gearbeitet habe, ermöglicht das Modell zum Abrufen Laufzeitprobleme gefunden in der Bereitstellungsumgebung, wiederum basierend auf Beobachtbarkeitsdaten. Das spezifische Ergebnis, für das ich die sofortige Reaktion getestet habe, struggle eine Anomalie, die bei der Leistung eines bestimmten Endpunkts gefunden wurde. Es scheint, dass die Antworten manchmal waren ÄUSSERST Langsam, ~ 70x langsamer als der Median. Es struggle hilfreich, diesen Informationen zum LLM zu bereitstellen, aber letztendlich nicht mehr als einfache Wiederholungen der bereitgestellten Daten erreicht.
Als Referenz finden Sie hier die erhaltene Antwort sowie die Ausgabe des Agenten:
{
"Title": "Efficiency Anomaly",
"Class": "Efficiency",
"P50":
{
"Worth": 12.33,
"Unit": "ms",
"Uncooked": 12331700.0
},
"P95":
{
"Worth": 909.62,
"Unit": "ms",
"Uncooked": 909625000.0
},
"SlowerByPercentage": 7376.314701136097,
"SpanInfo":
{
....
},
#extra knowledge
....
}

Die API -Antwort oder die Artwork und Weise, wie die Informationen vom Agenten an den Benutzer vermittelt wurden, ist nichts falsch. Das einzige Downside ist, dass viel Kontext und Ideen fehlen, die die Fähigkeit des Agenten nutzen könnten, dieses Gespräch voranzutreiben. Mit anderen Worten, dies ist eine traditionelle API -Anfrage/Antwort -Interaktion, aber Agenten durch Argumentation sind so viel mehr in der Lage. Lassen Sie uns sehen, was passiert, wenn wir unsere API ändern, um zusätzlichen Zustand und Vorschläge zu vermitteln, um das Gespräch voranzutreiben:
{
"_recommendation":
"This asset's P95 (slowest 5%) length is disproportionally gradual
in comparison with the median to an extreme diploma
Listed here are some recommended investigative subsequent steps to get to the
root trigger or right the difficulty:
1. The problem contains instance traces for each the P95 and median
length, get each traces and examine them discover out which asset
or property are those which might be abnormally gradual generally
2. Verify the efficiency graphs for this asset P95 and see if there
has been a change lately, in that case test for pull requests
merged round that point which may be relevan tot his space
3. Verify for fruther clues within the gradual traces, for instance perhaps
ALL spans of the identical sort are gradual at the moment interval indicating
a scientific subject"
"Title": "Efficiency Anomaly",
"Class": "Efficiency",
"P50":
{
...
},
#extra knowledge
Alles, was wir getan haben, ist, dem KI -Modell ein wenig mehr zu geben, um weiterzumachen. Anstatt einfach das Ergebnis zurückzugeben, können wir das Modell mit Ideen zur Verwendung der damit bereitgestellten Informationen füttern. Sicher genug werden diese Vorschläge sofort verwendet. Dieses Mal untersucht der Agent das Downside weiterhin, indem er andere Instruments aufruft, um das Verhalten zu inspizieren, die Spuren zu vergleichen und die Problemlinie zu verstehen:

Mit den neuen Informationen freut sich der Agent, die Erkundung fortzusetzen, die Zeitleiste zu untersuchen und die Ergebnisse der verschiedenen Instruments zu synthetisieren, bis es neue Daten erbracht hat. Dies struggle in keiner Weise Teil des ursprünglichen Antwortumfangs:

Warten Sie … sollte nicht alle APIs so gestaltet werden?
Absolut! Ich glaube definitiv, dass dieser Ansatz Benutzern, Automatisierungsentwicklern und allen anderen zugute kommen könnte – auch wenn sie Gehirne für Argumentation anstelle von LLM -Modellen verwenden. Im Wesentlichen kann eine konversationsorientierte API den Kontext über den Bereich der Daten hinaus in den Bereich der Möglichkeiten erweitern. Eröffnen Sie mehr Explorationszweige für Agenten und Benutzer gleichermaßen und verbessert die Effektivität von APIs bei der Lösung des zugrunde liegenden Anwendungsfalls.
Es gibt definitiv mehr Raum für die Evolution. Zum Beispiel waren die Hinweise und Ideen, die der API in unserem Beispiel dem Kunden zur Verfügung gestellt wurden, statisch. Was wäre, wenn sie auch mit A-generiert wären? Es gibt viele verschiedene A2A -Modelle da draußen, aber irgendwann könnte es sich nur um ein Backend -System und ein Kunde handeln, das sich über das, was die Daten bedeutet und was getan werden könnte, um es besser zu verstehen. Wie für den Benutzer? Vergiss ihn, sprich mit seinem Agenten.
