Felo API PlatformFelo API Platform

Wsparcie

Odpowiadaj na pytania wsparcia z własnej dokumentacji

Utwórz LiveDoc, wczytaj centrum pomocy i wewnętrzny runbook, pobierz fragmenty odpowiadające ticketowi i pozwól modelowi odpowiadać tylko z tych dowodów.

Czas20 minutPoziomPodstawowyZaktualizowano2026-10-29
Dla kogoZespoły wsparciaSukces klientaBudowniczowie helpdesku

Skopiuj prompt

Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.

Odpowiedz na to pytanie wsparcia wyłącznie na podstawie naszej dokumentacji: [pytanie klienta].

Baza wiedzy: [URL centrum pomocy lub LiveDoc short_id]. Ścieżka eskalacji: [osoba odpowiedzialna lub kolejka].
Dostępny kontekst klienta: [plan, region, produkt] (nigdy nie proś o hasło ani dane płatności).

Przygotuj:
1. Bezpośrednią odpowiedź w dwóch do czterech zdaniach.
2. Fragmenty dokumentacji, które ją wspierają, z tytułem zasobu.
3. Następny krok dla klienta.
4. Notatkę wewnętrzną: użyte zasoby i oceny trafności.

Zasady:
- Odpowiadaj tylko z pobranych fragmentów. Brak wyników lub niska trafność oznacza eskalację; nigdy nie zgaduj.
- Nie wymyślaj polityk, zwrotów, cen ani działań na koncie.
- Nie wprowadzaj prywatnych danych klienta, poświadczeń ani informacji o płatnościach.
- Pytaj przed zużyciem kredytów na ingestię lub wyszukiwanie.
- Nie wysyłaj odpowiedzi do klienta; zwróć ją mnie do przeglądu.

Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.

Co otrzymujesz

Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.

Przykładowa odpowiedź (fragment)

Odpowiedź: Twój plan odnawia się pierwszego dnia miesiąca. Odrzucona karta jest ponawiana przez trzy dni, zanim miejsce zostanie wstrzymane.

Źródła: „najczęstsze pytania o rozliczenia” - https://example.com/help/billing

Jeśli to nie obejmuje: eskaluj do kolejki rozliczeń z ID faktury.

Dokładne wywołania

Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.

Pokaż rzeczywiste wywołania API
  1. Utwórz bazę wiedzy

    Utwórz bazę przez LiveDoc API i zapisz 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

    Przykładowy wynik

    {
      "short_id": "PvyKouzJirXjFdst4uKRK3",
      "name": "Support knowledge base",
      "description": "Help center, policy pages, and internal runbooks"
    }
  2. Wczytaj publiczne centrum pomocy

    Dodaj URL centrum pomocy jako zasób LiveDoc.

    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");

    Przykładowy wynik

    [
      { "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. Dodaj dokumentację wewnętrzną

    Dodaj wewnętrzny runbook jako dokument.

    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. Pobierz dowody na pytanie

    Wyszukiwanie semantyczne zwraca najtrafniejsze fragmenty i wyniki.

    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);

    Przykładowy wynik

    [
      {
        "id": "res_005",
        "title": "Refund policy",
        "content": "Refunds are available within 30 days of purchase…",
        "score": 0.92
      }
    ]
  5. Odpowiadaj tylko z dowodów

    Pozwól modelowi użyć tylko pobranych fragmentów i eskaluj bez wyników.

    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);

    Przykładowy wynik

    "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."

Co zawiera

  • LiveDoc z centrum pomocy i wewnętrznym runbookiem
  • Wyszukiwanie semantyczne z fragmentami i tytułami
  • Odpowiedź z cytowalnymi źródłami
  • Jasna eskalacja przy braku pokrycia

Czego nie robi

  • Odpowiada tylko z twojej dokumentacji i nie przegląda otwartego webu
  • Nie wykonuje działań na koncie, zwrotów ani zmian planu
  • Bez prywatnych danych klientów i danych logowania w bazie
  • Nieaktualna dokumentacja daje nieaktualne odpowiedzi; aktualizuj ją
  • Tylko szkic odpowiedzi, bez wysyłki do klienta

Pytania

Skąd odpowiedź?

Tylko z twojego LiveDoc: stron centrum pomocy i runbooka. Wyszukiwanie zwraca fragmenty, a agent pisze z nich.

Jeśli dokumentacja nie pokrywa?

Eskalacja. Brak wyników lub niska trafność są traktowane jako brak pokrycia, nie pozwolenie na zgadywanie.

Jak utrzymać bazę aktualną?

Gdy zmienia się polityka, dodaj ponownie URL-e i zaktualizuj dokumenty; workflow zawiera polecenia aktualizacji i audytu.

Czy można użyć w kolejce ticketów?

Tak, jako krok szkicu. Zachowaj ludzkie zatwierdzenie przed wysyłką do klienta.

Czy obsługuje pytania o konto?

Tylko z dokumentacją nie. Dane konta są w twoim systemie; przekazuj tylko potrzebny bezpieczny kontekst, nigdy dane logowania.

Ile kosztuje jedno uruchomienie?

Ingestia i wyszukiwanie są rozliczane według użycia; aktualne stawki na stronie cen, a prompt pyta o zgodę przed wydaniem.

Powiązane workflowy

Dostosuj

Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.

Tylko jedna linia produktu

Ogranicz do jednego produktu, by baza była czystsza.

Dodaj klasyfikację ticketów

Najpierw klasyfikuj typ pytania, potem szukaj właściwej dokumentacji.

Okresowy audyt

Co miesiąc sprawdzaj zepsute linki i stare polityki.

Strony referencyjne za tą recepturą i kolejne kroki.