Simplifier Makers ClubSimplifier Makers Club
  • Docs
  • Wissensdatenbank
  • F.A.Q
  • Forum
  • Kurse
  • Marketplace
  • Login
  • Werde Mitglied im Club
  • Deutsch
  • Englisch
  • Try for free
  • Docs
  • Wissensdatenbank
  • F.A.Q
  • Forum
  • Kurse
  • Marketplace
  • Login
  • Werde Mitglied im Club
  • Deutsch
  • Englisch
  • Try for free
home/Wissensdatenbank/Anleitungen/Einen KI-Agenten in Simplifier erstellen

Einen KI-Agenten in Simplifier erstellen

Written by Christian Kleinschroth
2. März 2026

Überblick

Diese Anleitung führt dich durch die Erstellung eines voll funktionsfähigen KI-Agenten in Simplifier, der sich mit der Anthropic Claude API (claude-sonnet-4-6) verbindet. Du lernst, wie du:

  • Einen REST-Konnektor zur Claude API einrichtest
  • Ein wiederverwendbares Business Objekt mit mehreren KI-gestützten Funktionen erstellst
  • Geeignete individuelle Datentypen für strukturierte Ausgaben definierst
  • Eine praxisnahe Agentenfunktion erstellst:
    • Einen Materialpreis-Suchagenten, der die günstigsten Angebote für einen Produkt-EAN-Code findet

Am Ende dieser Anleitung können deine App-Entwickler Claude direkt aus jedem Simplifier-Workflow, UI-Event oder Prozess aufrufen – und erhalten sauberes, typisiertes, zuordenbares JSON zurück

Voraussetzungen

  • Zugang zu einer Simplifier-Instanz
  • Ein Anthropic API-Schlüssel (erhältlich unter console.anthropic.com)
  • Grundkenntnisse in Simplifier Business Objekten und Konnektoren

Architekturüberblick

Schritt 1 – Die Login-Methode erstellen

Die Anthropic API authentifiziert sich über einen individuellen HTTP-Header x-api-key Die Token-Login-Methode von Simplifier mit einem individuellen Header-Ziel bewältigt dies perfekt.

  1. Gehe zu Einstellungen → Login-Methoden → Neu
  2. Konfiguriere wie folgt:
Feld Wert
Name ClaudeApiKey
Typ Token
Quelle Bereitgestellt
Token-Wert sk-ant-api03-... (dein Anthropic API-Schlüssel)
Ziel Individueller Header
Header-Name x-api-key
  1. Speichere die Login-Methode.

Sicherheitshinweis: Codiere den API-Schlüssel niemals direkt im Funktionscode des Business Objekts fest. Verwende immer eine Login-Methode, damit der Schlüssel sicher gespeichert und zentral verwaltet wird.

Schritt 2 – Den Claude REST-Konnektor erstellen

  1. Gehe zu Konnektoren → Neuer Konnektor
  2. Setze den Konnektor-Typ auf REST
  3. Konfiguriere:
Feld Wert
Name Claude
Beschreibung Anthropic Claude API connector
Timeout 60s
Tags AI, Claude, Anthropic, LLM
  1. In der Endpunkt-Konfiguration:
Feld Wert
Endpunkt Default (deine aktive Simplifier-Instanz)
Basis-URL https://api.anthropic.com/v1
Login-Methode ClaudeApiKey
SSL-Vertrauen Systemzertifikate
  1. Speichere den Konnektor.

Schritt 3 – Erstelle den Connector-Call: SendMessage

Dies ist der einzelne wiederverwendbare Aufruf, den beide Agentenfunktionen nutzen werden.

  1. Füge innerhalb des Claude-Konnektors einen neuen Aufruf hinzu mit dem Namen SendMessage
  2. Füge die folgenden Eingabeparameter hinzu:
Parameter Typ Fester Wert Hinweise
verb Zeichenkette POST HTTP-Methode
postFormat Zeichenkette JSON Body-Format
pathParams[0] Zeichenkette messages Wird an Basis-URL angehängt → /v1/messages
headParams/anthropic-version Zeichenkette 2023-06-01 Von Anthropic API erforderlich
postBody/model Zeichenkette (dynamisch) Modellname, z. B. claude-sonnet-4-6
postBody/max_tokens Integer (dynamisch) Maximale Antwort-Tokens
postBody/system String (dynamisch) System-Prompt (optional)
postBody/messages Any (dynamisch) Array von Nachrichtenobjekten
  1. Füge die folgenden Ausgabeparameter hinzu:
Parameter Typ
content Beliebig
usage Beliebig
model Zeichenkette
stop_reason Zeichenkette
  1. Setze validateIn auf true, validateOut auf true
  2. Speichere den Aufruf.

Schritt 4 – Erstelle das Business-Objekt: Ai_Agent

  1. Gehe zu Business Objekte → Neu
  2. Konfiguriere:
Feld Wert
Name Ai_Agent
Beschreibung AI Agent using Claude claude-sonnet-4-6
Tags AI, Agent, Claude, LLM
  1. Füge eine Abhängigkeit zum Claude-Konnektor hinzu – dies ist erforderlich, damit die BO-Funktionen aufrufen können Simplifier.Connector.Claude.*
  2. Speichere das Business Objekt.

Struct-Typen

Datentyp Felder
SellerRating score (Float), scale (Float), ratings_count (Integer)
MetaError code (String), message (String), details (String)
QueryPreferences priority (String), currency (String)
Offer match_type, seller_name, seller_domain, url (String), item_price, shipping_price, total_cost, unit_price (Float), currency, unit, region, availability, delivery_estimate, last_checked_utc, raw_source (String), pack_size (Float), seller_rating → SellerRating
EanResult ean, product_name, product_description, status (String), exact_match_found (Boolean), cheapest_offer → Offer, cheapest_unit_offer → Offer, offers → OfferList
PriceSearchResponse Dieselben Felder wie EanResult — flach, ohne Query-/Meta-Wrapper

Collection-Typen

Datentyp Elementtyp
OfferList Offer
MetaErrorList MetaError
EanResultList EanResult

Tipp: Erstelle immer zuerst Struct-Typen, bevor du die Collection-Typen erstellst, die darauf verweisen. Erstelle referenzierte Typen (z. B. SellerRating), bevor du Typen erstellst, die sie einbetten (z. B. Offer).

Schritt 6 – Funktion erstellen: GetCheapestOffers (EAN-Preissuchagent)

Diese Funktion fordert Claude auf, als websuchender Preisvergleichs-Agent zu agieren. Bei einem einzelnen EAN-Code gibt sie die günstigsten verfügbaren Angebote in einer vollständig typisierten, flachen Struktur zurück.

Eingabeparameter

Name Typ Optional Standard
ean Zeichenkette ✅ 4006381333931
userRegion Zeichenkette ✅ DE
currency Zeichenkette ✅ EUR
priority Zeichenkette ✅ lowest_total_cost

Ausgabeparameter

Name Typ Beschreibung
priceSearchResponse PriceSearchResponse Flaches typisiertes Ergebnis mit Produktinfo und Angeboten
rawText String Rohe Claude-Antwort
usage Any Token-Nutzung

Funktionscode

// ── System Prompt ────────────────────────────────────────────────────────────
const SYSTEM_PROMPT = `You are an AI agent whose primary task is to find the
cheapest available offer for products identified by their EAN code.

Output ONLY a single flat valid JSON object with exactly these fields:
{
  "ean": "",
  "product_name": null,
  "product_description": null,
  "status": "found",
  "exact_match_found": true,
  "cheapest_offer": { ...offer object... },
  "cheapest_unit_offer": { ...offer object... },
  "offers": [ ...up to 3 offer objects... ]
}

Each offer must contain: match_type, seller_name, seller_domain, url,
item_price, shipping_price, total_cost, currency, pack_size, unit,
unit_price, seller_rating { score, scale, ratings_count }, region,
availability, delivery_estimate, last_checked_utc, raw_source, notes.

No wrapping query or meta object. No text outside the JSON. No markdown fences.`;

// ── Default / Sample values ──────────────────────────────────────────────────
const DEFAULT_EAN      = "4006381333931";
const DEFAULT_REGION   = "DE";
const DEFAULT_CURRENCY = "EUR";
const DEFAULT_PRIORITY = "lowest_total_cost";

// ── Resolve inputs ───────────────────────────────────────────────────────────
const ean      = (input.ean        && input.ean.trim())        ? input.ean.trim()        : DEFAULT_EAN;
const region   = (input.userRegion && input.userRegion.trim()) ? input.userRegion.trim() : DEFAULT_REGION;
const currency = (input.currency   && input.currency.trim())   ? input.currency.trim()   : DEFAULT_CURRENCY;
const priority = (input.priority   && input.priority.trim())   ? input.priority.trim()   : DEFAULT_PRIORITY;

// ── Build user message ───────────────────────────────────────────────────────
const userMessage = `Search for the cheapest offers for this EAN code:
EAN: ${ean}
User region: ${region}
Preferred currency: ${currency}
Priority: ${priority}

Limit to 3 offers. Return ONLY a single flat JSON object. No text outside the JSON, no markdown fences.`;

// ── Call Claude via the connector ────────────────────────────────────────────
const response = Simplifier.Connector.Claude.SendMessage({
  "postBody/model":      "claude-sonnet-4-6",
  "postBody/max_tokens": 8000,
  "postBody/system":     SYSTEM_PROMPT,
  "postBody/messages":   [{ role: "user", content: userMessage }]
});

// ── Extract raw text ─────────────────────────────────────────────────────────
let rawText = "";
if (response && response.content && Array.isArray(response.content)) {
  for (const block of response.content) {
    if (block.type === "text") { rawText = block.text; break; }
  }
} else if (response && response.content) {
  rawText = String(response.content);
}

output.rawText = rawText;
output.usage   = response ? response.usage : null;

// ── Robust JSON extraction ───────────────────────────────────────────────────
// Strip markdown fences if present
let cleaned = rawText.replace(/^"`(?:json)?\s*/i, "").replace(/\s*"`$/i, "").trim();

// If Claude prefixed the JSON with prose, skip to the first {
if (!cleaned.startsWith("{")) {
  const firstBrace = cleaned.indexOf("{");
  if (firstBrace !== -1) cleaned = cleaned.substring(firstBrace).trim();
}

try {
  const parsed = JSON.parse(cleaned);
  // If Claude still wrapped the result in a results array, unwrap first entry
  output.priceSearchResponse = (parsed.results && Array.isArray(parsed.results))
    ? parsed.results[0]
    : parsed;
} catch (e) {
  output.priceSearchResponse = {
    ean:                 ean,
    product_name:        null,
    product_description: null,
    status:              "error",
    exact_match_found:   false,
    cheapest_offer:      null,
    cheapest_unit_offer: null,
    offers:              []
  };
}

Teste die GetCheapestOffers-Funktion

Eingabe:

{
  "ean": "4006381333931",
  "userRegion": "DE",
  "currency": "EUR"
}

Erwartete Ausgabestruktur:

{
  "ean": "4006381333931",
  "product_name": "Stabilo Boss Original Textmarker",
  "product_description": "Classic highlighter pen...",
  "status": "found",
  "exact_match_found": true,
  "cheapest_offer": {
    "seller_domain": "amazon.de",
    "item_price": 0.79,
    "shipping_price": 0.00,
    "total_cost": 0.79,
    "currency": "EUR"
  },
  "offers": [ ... ]
}

Tipps & Best Practices

Prompt Engineering

  • Weise Claude immer an, nur JSON zurückzugeben – keine Prosa, keine Markdown-Fences
  • Bette das gewünschte Ausgabeschema direkt in die Benutzernachricht für die Run-Funktion ein
  • Halte den System-Prompt prägnant, aber explizit bezüglich des Ausgabeformats

Token-Budget

  • Verwende max_tokens: 2048 für einfache strukturierte Antworten
  • Verwende max_tokens: 8000 für Agents, die Tool-Calls oder Suchen wie GetCheapestOffers ausführen
  • Teste mit jeweils 1 EAN – mehrere EANs können das Token-Limit erschöpfen und die Antwort abschneiden

JSON-Robustheit

  • Entferne vor dem Parsen immer Markdown-Codeblöcke (“`json)
  • Suche immer nach der ersten {, falls Claude dem JSON einen Satz voranstellt
  • Stelle ein aussagekräftiges Fallback-Fehlerobjekt im Catch-Block bereit, damit Aufrufer immer eine gültige typisierte Antwort erhalten

Datentypen

  • Definiere alle Datentypen im Namespace bo/<BusinessObjectName>/, damit sie übersichtlich bleiben
  • Erstelle referenzierte Typen zuerst (z. B. SellerRating vor Offer)
  • Verwende Any nur als letzten Ausweg – eine korrekte Typisierung ermöglicht das vollständige UI-Mapping in Simplifier
  • Halte deine Ausgabetypen möglichst flach – Nutzer sollten keine tiefen Verschachtelungen durchlaufen müssen

Konnektor-Design

  • Ein Connector (Claude) + ein Aufruf (SendMessage) genügt – halte ihn über alle BO-Funktionen hinweg wiederverwendbar
  • Der anthropic-version-Header muss über headParams/anthropic-version gesetzt werden – er kann nicht über die Login-Methode gesendet werden
  • Der x-api-key-Header wird am besten über die Login-Methode gehandhabt und nicht in den Aufrufparametern fest kodiert

Zusammenfassung

Ressource Name Zweck
Login-Methode ClaudeApiKey Fügt sicher x-api-key-Header ein
Konnektor Claude REST-Konnektor zu https://api.anthropic.com/v1
Konnektor-Aufruf SendMessage Wiederverwendbarer POST zu /messages
Business Objekt Ai_Agent Container für alle KI-Agentenfunktionen
BO-Funktion GetCheapestOffers EAN-basierter Preissuch-Agent
Datentypen (11x) bo/Ai_Agent/* Vollständig typisierte Ausgabe für UI-Mapping

Wie geht es weiter?

  • Mit einer Benutzeroberfläche verbinden: Binde die Ausgabe von GetCheapestOffers an eine Simplifier-Listenkomponente, um Preisvergleiche in deiner App anzuzeigen
  • Weitere Agenten hinzufügen: Nutze denselben Claude-Connector, um neue BO-Funktionen für verschiedene Aufgaben hinzuzufügen (z. B. Dokumentenzusammenfassung, SAP-Datenanreicherung, Übersetzung)
  • Agenten verketten: Rufe Ai_Agent aus einer anderen BO-Funktion heraus auf, um mehrstufige KI-Pipelines zu erstellen.
  • Ein anderes Modell verwenden: Ändere einfach postBody/model, um zwischen Claude-Modellen zu wechseln (z. B. claude-haiku-4-5 für schnellere/günstigere Antworten)
Tags:ai

Was this article helpful?

Yes  No
Related Articles
  • Wie man mit Dateien umgeht, die mit dem FileUploader ausgewählt wurden
  • Feinabstimmung und Ausführung benutzerdefinierter AI-Modelle in Simplifier
  • Verwendung der Simplifier Teams App
  • Wie man wertvolle Hilfen und Vorschläge in Benutzereingaben integriert
  • So integrieren Sie Simplifier in CI/CD-Pipelines
  • So verwenden Sie Google reCAPTCHA v3 Essentials
Leave A Comment Antwort abbrechen

Du musst angemeldet sein, um einen Kommentar abzugeben.

Anleitungen
  • Einen KI-Agenten in Simplifier erstellen
  • So integrieren und verwenden Sie externe Bibliotheken in Simplifier Apps
  • Verwenden von Abfrageoptionen im ODataV2-Connector
  • So verwenden Sie das TimePicker-Widget
  • Dynamische where-Klausel und wiederholbare Anweisung
  • Versions- und Release-Management in Simplifier
  • Protokolle und Überwachung in Simplifier
  • Verwenden Sie die Adobe PDF-Einbettungs-API in Ihrer Simplifier-Anwendung
  • PDF-Vorlagen: Gestalten Sie den Inhalt der Kopf-/Fußzeile dynamisch
  • Konvertieren von Text in Sprache mit dem Google TTS Connector
  • Wie man das Simplifier Content Repository Plugin benutzt
  • Erstellen von Testfällen mit dem UI5 Test Recorder
  • Arbeiten mit Drag & Drop
  • Erstellen Sie eine PDF-Vorlage über das Plugin
  • PDF-Erzeugung mit Simplifier über ein Plugin
  • So setzen Sie Simplifier-Umgebungsvariablen in Open Shift
  • So senden und empfangen Sie Push-Benachrichtigungen
  • Volltextsuche nach PDF-Dokumenten
  • Volltextsuche nach Excel-Dateien
  • So implementieren Sie eine Genehmigungs-App in Simplifier
  • Authentifizierung über ein anderes Fenster
  • Erstellen eines ChatBot-Clients für ChatGPT
  • So verwenden Sie Google reCAPTCHA v3 Essentials
  • So integrieren Sie Simplifier in CI/CD-Pipelines
  • Wie man wertvolle Hilfen und Vorschläge in Benutzereingaben integriert
  • Verwendung der Simplifier Teams App
  • Feinabstimmung und Ausführung benutzerdefinierter AI-Modelle in Simplifier
  • Wie man mit Dateien umgeht, die mit dem FileUploader ausgewählt wurden
Knowledgebase Categories
  • Erste Schritte 4
  • Mobiler Client 2
  • Layout & Design 4
  • Widgets 8
  • Integration 9
  • Datenbank Handling 1
  • Anleitungen 28
  • Best Practices 4
  • Cloud Services 6
  • Plugins 6

Wie man mit Dateien umgeht, die mit dem FileUploader ausgewählt wurden  

Link einfügen/ändern

Gib die Ziel-URL ein

Oder verlinke auf bestehende Inhalte

    Es wurde kein Suchbegriff angegeben. Es werden die aktuellen Inhalte angezeigt. Verwende zur Auswahl eines Elements die Suche oder die Hoch-/Runter-Pfeiltasten.