Alfred · KI-Agenten-Modell

AI Agent · OpenAPI HTTP Client Model

Generisches Agenten-Orchestrierungs-Pattern für API-Interaktion via OpenAPI-Spec

Agent Flow

KI-1 · Operator
Intent Router
Intent → API Operation Mapping
↓ User Intent OpenAPI Spec → Operation + Schema

Aufgaben

  • Parst OpenAPI-Spec beim Start (Paths, Operations, Schemas)
  • Erkennt Intent aus User-Input via Tool-Use / Function Calling
  • Selektiert passende Operation (POST /orders, PUT /invoices …)
  • Extrahiert das erwartete Request-Body-Schema aus der Spec
  • Orchestriert KI-2 & KI-3 als Sub-Agenten mit klaren Aufträgen

Output an Sub-Agenten

  • an KI-2: “Extrahiere Felder X, Y, Z aus Dokument”
  • an KI-3: “Fülle Schema S mit Daten D, ergänze Defaults”
  • Wartet auf strukturierten JSON-Return beider Agenten
  • Sendet finales HTTP-Request über generischen HTTP-Client
// Pseudo-Prompt: KI-1 Tool Definition tools: [{ "name": "select_api_operation", "description": "Maps user intent to OpenAPI operationId", "input_schema": { "operationId": string, // z.B. "createOrder" "method": string, // POST | PUT | GET "path": string, // /api/v1/orders "bodySchema": object // JSON Schema aus Spec } }]
Schema + Extraktion-Auftrag
KI-2 · Extractor
Document Parser
PDF/Dokument → Strukturierte Rohdaten
↓ PDF / Dok Extraktions-Auftrag → Raw JSON

Aufgaben

  • Erhält PDF / Bild als Base64 + Liste der zu extrahierenden Felder
  • Gibt strukturierte Rohdaten zurück (noch kein Schema-Mapping)
  • Kennzeichnet Felder als confident / uncertain / missing
  • Keine Kenntnis der API — reine Datenextraktion

Output-Format

  • JSON mit extrahierten Key-Value-Paaren
  • Confidence-Score pro Feld (0–1)
  • Quellenreferenz (Seitenangabe, Textstelle)
// KI-2 Response { "extracted": { "customer_name": { value: "Acme GmbH", confidence: 0.97 }, "invoice_date": { value: "2024-03-01", confidence: 0.91 }, "total_amount": { value: "4250.00", confidence: 0.88 }, "vat_id": { value: null, confidence: 0.0, missing: true } } }
Rohdaten + Body-Schema
KI-3 · Mapper
Schema Filler
Rohdaten → Valides Request-Body-Objekt
↓ Raw JSON JSON Schema → Valid Body

Aufgaben

  • Mappt extrahierte Felder auf Schema-Eigenschaften (Name-Matching, Typ-Casting)
  • Füllt Pflichtfelder, ergänzt Defaults aus der Spec
  • Transformiert Datentypen (String → ISO-Date, String → Float)
  • Generiert sinnvolle Werte für fehlende optionale Felder
  • Validiert Output gegen JSON Schema vor Rückgabe

Output-Format

  • Fertig befülltes, schema-konformes JSON-Body-Objekt
  • Liste von Mapping-Entscheidungen (Audit Log)
  • Warnung bei missing required fields
// KI-3 Response → valides Body-Objekt { "body": { "customerName": "Acme GmbH", // mapped + validated "invoiceDate": "2024-03-01", // ISO 8601 cast "amount": 4250.00, // string → float "currency": "EUR", // default aus Spec "vatId": null // optional, fehlt }, "warnings": ["vatId missing, field is optional"] }
Valides Body-Objekt
Generic HTTP Client
API Executor
Führt den API-Call aus
↓ Method + Path + Body → API Response

Generisches Interface

  • Nimmt method, path, headers, body entgegen — alles von KI-1 geliefert
  • Kein API-spezifisches Wissen nötig
  • Auth-Handling (Bearer, API-Key) via Config
  • Response wird an KI-1 zurückgegeben für User-Feedback

Vorteile dieses Designs

  • Austauschbar: Jede REST-API mit OpenAPI-Spec funktioniert
  • KI-2 & KI-3 sind domänenunabhängig wiederverwendbar
  • Klare Verantwortungstrennung per Agent
  • Erweiterbar: KI-4 für Validierung / Review
// Generischer HTTP Client (TypeScript) async function executeApiCall({ method, path, body, headers }: ApiCallParams) { const res = await fetch(baseUrl + path, { method, headers: { "Content-Type": "application/json", ...headers }, body: JSON.stringify(body) }); return res.json(); }

Daten-Kontrakte zwischen Agenten

KI-1 → KI-2 Auftrag

documentbase64 | url
fieldsToExtractstring[]
documentType"pdf" | "image"
hintsRecord<string,string>

KI-2 → KI-3 Output

extractedExtractedField[]
confidencenumber (0–1)
missingstring[]
raw_textstring (optional)

KI-3 → HTTP Client

bodyRecord<string,unknown>
validboolean
warningsstring[]
auditLogMappingDecision[]

System-Prompt Muster (KI-1 Operator)

// Systemdynamik: KI-1 erhält die vollständige OpenAPI-Spec als Kontext SYSTEM: Du bist ein API-Operator. Dir liegt folgende OpenAPI-Spec vor: {spec_json} ABLAUF: 1. Erkenne den Intent des Users und wähle die passende Operation aus der Spec 2. Rufe select_api_operation(operationId, method, path, bodySchema) auf 3. Beauftrage KI-2: “Extrahiere aus dem Dokument: {required_fields}” 4. Beauftrage KI-3: “Mappe {ki2_output} auf Schema {bodySchema}” 5. Sende den finalen Body via HTTP-Client WICHTIG: Validiere das finale Body-Objekt gegen die Spec bevor du den Call absetzt. Fehlende Pflichtfelder → frage den User nach, sende keinen invaliden Request.