Felo API PlatformFelo API Platform

Destek

Destek sorularını kendi dokümantasyonunuzdan yanıtlayın

Bir LiveDoc oluşturun, yardım merkezini ve dahili runbook’u yükleyin, bileti yanıtlayan pasajları alın ve modelin yalnızca bu kanıtlardan yanıtlamasına izin verin.

Süre20 dakikaSeviyeTemelGüncellendi2026-10-29
Kimler içinDestek ekipleriMüşteri başarısıHelpdesk geliştiricileri

İstemi kopyalayın

Köşeli parantezli alanları değiştirip Claude Code, Codex veya terminal erişimi olan bir AI’ya yapıştırın. Felo becerisini kurar, kredi harcamadan önce sorar ve iş akışını çalıştırır.

Bu destek sorusunu yalnızca bizim dokümantasyonumuzla yanıtla: [müşteri sorusu].

Bilgi tabanı: [yardım merkezi URL’si veya LiveDoc short_id]. Yükseltme yolu: [sorumlu veya kuyruk].
Kullanılabilir müşteri bağlamı: [plan, bölge, ürün] (asla şifre veya ödeme verisi isteme).

Şunları hazırla:
1. İki ila dört cümlelik doğrudan yanıt.
2. Yanıtı destekleyen doküman pasajları, kaynak başlığıyla.
3. Müşteri için sonraki adım.
4. İç not: kullanılan kaynaklar ve alaka puanları.

Kurallar:
- Yalnızca alınan pasajlardan yanıtla. Sonuç yoksa veya alaka düşükse yükselt; asla tahmin etme.
- Politika, iade, fiyat veya hesap işlemi uydurma.
- Müşterinin özel verilerini, kimlik bilgilerini veya ödeme bilgilerini dahil etme.
- Veri alımı veya getirme için kredi harcamadan önce sor.
- Yanıtı müşteriye gönderme; inceleme için bana döndür.

Kopya kurulum adımlarını ve güvenlik kurallarını da içerir.

Ne elde edersiniz

Bir çalıştırmanın örnek çıktısı. Canlı üretim değil.

Örnek yanıt (alıntı)

Yanıt: Planınız her ayın 1’inde yenilenir. Başarısız kart üç gün yeniden denenir, sonra koltuk duraklatılır.

Kaynaklar: “Faturalama SSS” - https://example.com/help/billing

Bu kapsamıyorsa: fatura ID’siyle faturalama kuyruğuna eskalasyon yapın.

Tam çağrılar

Geliştiriciler için: aynı iş akışı kod olarak, yürütme sırasıyla.

Gerçek API çağrılarını göster
  1. Bilgi tabanını oluşturun

    LiveDoc API ile tabanı oluşturun ve short_id saklayın.

    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

    Örnek çıktı

    {
      "short_id": "PvyKouzJirXjFdst4uKRK3",
      "name": "Support knowledge base",
      "description": "Help center, policy pages, and internal runbooks"
    }
  2. Kamuya açık yardım merkezini yükleyin

    Yardım merkezi URL’sini LiveDoc kaynağı olarak ekleyin.

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

    Örnek çıktı

    [
      { "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. Dahili dokümantasyonu ekleyin

    Dahili runbook’u belge olarak ekleyin.

    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. Soru için kanıtları alın

    Anlamsal arama en ilgili pasajları ve puanları döndürür.

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

    Örnek çıktı

    [
      {
        "id": "res_005",
        "title": "Refund policy",
        "content": "Refunds are available within 30 days of purchase…",
        "score": 0.92
      }
    ]
  5. Yalnızca kanıtlardan yanıtlayın

    Modelin yalnızca alınan pasajları kullanmasını sağlayın ve sonuç yoksa eskale edin.

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

    Örnek çıktı

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

Neler dahil

  • Yardım merkezi ve dahili runbook içeren LiveDoc
  • Pasaj ve başlıklarla anlamsal arama
  • Alıntılanabilir kaynaklarla yanıt
  • Kapsam eksikse net eskalasyon

Neleri yapmaz

  • Yalnızca dokümantasyonunuzdan yanıtlar ve açık web’de gezinmez
  • Hesap işlemleri, iadeler veya plan değişiklikleri yapmaz
  • Tabanında özel müşteri verisi veya kimlik bilgisi olmaz
  • Eski dokümantasyon eski yanıt üretir; güncel tutun
  • Yalnızca yanıt taslağı, müşteriye göndermez

Sorular

Yanıt nereden?

Yalnızca LiveDoc’unuzdan: yardım merkezi sayfaları ve runbook. Arama pasajları döndürür, ajan onlardan yazar.

Dokümantasyon kapsamazsa?

Eskalasyon. Sonuç yok veya düşük alaka kapsanmamış sayılır, tahmin izni değil.

Tabanı güncel nasıl tutarım?

Politika değişince URL’leri yeniden ekleyin ve belgeleri güncelleyin; iş akışında güncelleme ve denetim komutları var.

Bilet kuyruğunda kullanılabilir mi?

Evet, taslak adımı olarak. Müşteriye göndermeden önce insan onayı tutun.

Hesaba özel soruları işler mi?

Yalnızca dokümantasyonla hayır. Hesap verisi sisteminizde; yalnızca gereken güvenli bağlamı verin, asla kimlik bilgisi vermeyin.

Bir çalıştırmanın maliyeti nedir?

Alım ve arama kullanıma göre faturalanır; güncel tarifeler fiyat sayfasında ve istem harcamadan önce onay ister.

İlgili iş akışları

Kendinize uyarlayın

Aynı tarif, gerçekte nasıl teslim ettiğinize uyarlanmış.

Yalnızca tek ürün hattı

Tek ürüne sınırlayın, taban daha temiz olsun.

Bilet sınıflandırması ekleyin

Önce soru türünü sınıflandırın, sonra doğru dokümantasyonu arayın.

Düzenli denetim

Her ay kırık bağlantıları ve eski politikaları kontrol edin.

Bu tarifin arkasındaki referans sayfaları ve sonraki adımlar.