Felo API PlatformFelo API Platform

Support

Support-Fragen aus deiner eigenen Dokumentation beantworten

Erstelle ein LiveDoc, lade Helpcenter und internes Runbook, rufe die Passagen ab, die den Ticket beantworten, und lass das Modell nur aus diesen Belegen antworten.

Dauer20 MinutenLevelEinsteigerAktualisiert2026-10-29
Für wenSupport-TeamsCustomer SuccessHelpdesk-Builder

Prompt kopieren

Ersetze die Felder in eckigen Klammern und füge den Prompt in Claude Code, Codex oder eine KI mit Terminalzugriff ein. Sie installiert den Felo-Skill, fragt vor Credits und führt den Workflow aus.

Beantworte diese Support-Frage ausschließlich mit unserer Dokumentation: [Kundenfrage].

Wissensbasis: [Help-Center-URL oder LiveDoc short_id]. Eskalationsweg: [Verantwortlicher oder Queue].
Verfügbarer Kundenkontext: [Plan, Region, Produkt] (frage niemals nach Passwörtern oder Zahlungsdaten).

Erstelle:
1. Eine direkte Antwort in zwei bis vier Sätzen.
2. Die tragenden Dokumentationsstellen mit Ressourcentitel.
3. Den nächsten Schritt für den Kunden.
4. Eine interne Notiz: genutzte Ressourcen und Relevanzwerte.

Regeln:
- Antworte nur aus den abgerufenen Stellen. Bei keinem Treffer oder niedriger Relevanz eskaliere; rate niemals.
- Erfinde keine Richtlinien, Rückerstattungen, Preise oder Kontomaßnahmen.
- Ziehe keine privaten Kundendaten, Zugangsdaten oder Zahlungsinformationen ein.
- Frage vorher, bevor du Credits für Ingestion oder Retrieval ausgibst.
- Sende die Antwort nicht an den Kunden; gib sie mir zur Prüfung zurück.

Die Kopie enthält auch die Installationsschritte und Sicherheitsregeln.

Das bekommst du

Beispielausgabe eines Laufs. Keine Live-Generierung.

Beispielantwort (Auszug)

Antwort: Dein Plan verlängert sich am Ersten des Monats. Eine fehlgeschlagene Karte wird drei Tage lang erneut versucht, bevor der Seat pausiert wird.

Quellen: „Häufige Fragen zur Abrechnung“ - https://example.com/help/billing

Wenn das nicht abgedeckt ist: mit der Rechnungs-ID an die Billing-Queue eskalieren.

Die konkreten Aufrufe

Für Entwickler: derselbe Workflow als kopierbarer Code in Ausführungsreihenfolge.

Konkrete API-Aufrufe zeigen
  1. Wissensbasis erstellen

    Erstelle die Basis über die LiveDoc API und speichere die short_id.

    support.ts
    const BASE = "https://openapi.felo.ai";
    const headers = {
      Authorization: `Bearer ${process.env.FELO_API_KEY}`,
      "Content-Type": "application/json",
    };
    
    async function felo<T>(path: string, body?: unknown): Promise<T> {
      const res = await fetch(`${BASE}${path}`, {
        method: body ? "POST" : "GET",
        headers,
        body: body ? JSON.stringify(body) : undefined,
      });
      if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
      return res.json() as Promise<T>;
    }
    
    type LiveDocData = { data: { short_id: string } };
    
    const kb = await felo<LiveDocData>("/v2/livedocs", {
      name: "Support knowledge base",
      description: "Help center, policy pages, and internal runbooks",
    });
    
    const kbId = kb.data.short_id; // save this in your config

    Beispielausgabe

    {
      "short_id": "PvyKouzJirXjFdst4uKRK3",
      "name": "Support knowledge base",
      "description": "Help center, policy pages, and internal runbooks"
    }
  2. Öffentliches Helpcenter laden

    Füge die Helpcenter-URL als Ressource im LiveDoc hinzu.

    support.ts
    type UrlResult = {
      data: {
        url: string;
        status: string;
        fail_reason: string | null;
        resource_id: string | null;
      }[];
    };
    
    const added = await felo<UrlResult>(
      `/v2/livedocs/${kbId}/resources/urls`,
      {
        urls: [
          "https://example.com/help/getting-started",
          { url: "https://example.com/help/billing", title: "Billing FAQ" },
        ],
      },
    );
    
    const failed = added.data.filter((item) => item.status === "failed");

    Beispielausgabe

    [
      { "url": "https://example.com/help/getting-started", "status": "success", "resource_id": "res_003" },
      { "url": "https://example.com/help/billing", "status": "existed", "resource_id": "res_004" }
    ]
  3. Interne Dokumentation ergänzen

    Füge das interne Runbook als Dokument hinzu.

    support.ts
    type ResourceData = { data: { id: string } };
    
    const runbook = `# Refund policy
    
    Refunds are available within 30 days of purchase. Requests after 30 days
    need a manual review by the billing team.
    `;
    
    const policy = await felo<ResourceData>(
      `/v2/livedocs/${kbId}/resources/doc`,
      { title: "Refund policy", content: runbook },
    );
    
    console.log(policy.data.id); // use this for updates
  4. Belege zur Frage abrufen

    Die semantische Suche liefert die relevantesten Passagen und Scores.

    support.ts
    type Hit = { id: string; title: string; content: string; score: number };
    
    async function findEvidence(question: string) {
      const res = await felo<{ data: Hit[] }>(
        `/v2/livedocs/${kbId}/resources/retrieve`,
        { query: question },
      );
      return res.data.filter((hit) => hit.score >= 0.7).slice(0, 4);
    }
    
    const question = "Can I get a refund after 45 days?";
    const hits = await findEvidence(question);

    Beispielausgabe

    [
      {
        "id": "res_005",
        "title": "Refund policy",
        "content": "Refunds are available within 30 days of purchase…",
        "score": 0.92
      }
    ]
  5. Nur aus Belegen antworten

    Lass das Modell nur die abgerufenen Passagen nutzen und ohne Treffer eskalieren.

    support.ts
    type Completion = {
      choices: { message: { content: string | null } }[];
      usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number };
    };
    
    const context = hits
      .map((hit) => `### ${hit.title}\n${hit.content}`)
      .join("\n\n");
    
    const completion = await felo<Completion>("/api/v1/chat/completions", {
      model: "anthropic/claude-haiku-5.5",
      messages: [
        {
          role: "system",
          content:
            "Answer only from the context. If the context does not cover the question, say so and hand the ticket to a human.",
        },
        {
          role: "user",
          content: `Context:\n${context}\n\nQuestion: ${question}`,
        },
      ],
    });
    
    console.log(completion.choices[0].message.content);
    console.log(completion.usage.total_tokens);

    Beispielausgabe

    "No. The Refund policy says refunds are available within 30 days of purchase, so a request at 45 days needs a manual review by the billing team."

Enthalten

  • LiveDoc aus Helpcenter und internem Runbook
  • Semantische Suche mit Passagen und Titeln
  • Antwort mit zitierbaren Quellen
  • Klare Eskalation bei fehlender Abdeckung

Was es nicht macht

  • Antwortet nur aus deiner Dokumentation und durchsucht nicht das offene Web
  • Führt keine Kontomaßnahmen, Erstattungen oder Planwechsel aus
  • Keine privaten Kundendaten oder Zugangsdaten in die Wissensbasis
  • Veraltete Dokumentation erzeugt veraltete Antworten; regelmäßig aktualisieren
  • Nur Antwortentwurf, kein Versand an Kunden

Fragen

Woher kommt die Antwort?

Nur aus deinem LiveDoc: Helpcenter-Seiten und Runbook. Die Suche liefert Passagen, und der Agent schreibt die Antwort daraus.

Was, wenn die Dokumentation nicht abdeckt?

Eskalation. Keine Treffer oder niedrige Relevanz gelten als nicht abgedeckt, nicht als Erlaubnis zu raten.

Wie bleibt die Wissensbasis aktuell?

Bei Richtlinienänderungen URLs erneut hinzufügen und Dokumente aktualisieren; der Workflow enthält Update- und Audit-Befehle.

Kann ich es in der Ticket-Warteschlange nutzen?

Ja, als Entwurfsschritt. Vor dem Versand an Kunden bleibt eine menschliche Freigabe.

Kann es kontospezifische Fragen beantworten?

Nur aus der Dokumentation nicht. Kontodaten liegen in deinem System; übergib nur den nötigen sicheren Kontext, niemals Zugangsdaten.

Was kostet ein Lauf?

Ingestion und Suche werden nutzungsbasiert abgerechnet; aktuelle Preise stehen auf der Preisseite, und der Prompt fragt vor Ausgaben nach Bestätigung.

Verwandte Workflows

Mach es zu deinem

Dasselbe Rezept, angepasst an deinen tatsächlichen Ablauf.

Nur eine Produktlinie

Beschränke dich auf ein Produkt, damit die Basis sauberer bleibt.

Ticket-Klassifikation ergänzen

Klassifiziere zuerst den Fragetyp und suche dann die passende Dokumentation.

Regelmäßiges Audit

Prüfe monatlich defekte Links und alte Richtlinien.

Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.