Dukungan
Jawab pertanyaan dukungan dari dokumentasi Anda sendiri
Buat LiveDoc, muat pusat bantuan dan runbook internal, ambil bagian yang menjawab tiket, dan biarkan model menjawab hanya dari bukti itu.
Salin prompt
Ganti kolom dalam kurung siku lalu tempel ke Claude Code, Codex, atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum memakai kredit, dan menjalankan alur kerja.
Jawab pertanyaan dukungan ini hanya dengan dokumentasi kami: [pertanyaan pelanggan]. Basis pengetahuan: [URL pusat bantuan atau LiveDoc short_id]. Jalur eskalasi: [penanggung jawab atau antrean]. Konteks pelanggan yang tersedia: [paket, wilayah, produk] (jangan pernah meminta kata sandi atau data pembayaran). Hasilkan: 1. Jawaban langsung dalam dua sampai empat kalimat. 2. Bagian dokumentasi yang mendukungnya, dengan judul sumber daya. 3. Langkah berikutnya untuk pelanggan. 4. Catatan internal: sumber daya yang dipakai dan skor relevansi. Aturan: - Jawab hanya dari bagian yang diambil. Jika tidak ada hasil atau relevansi rendah, eskalasi; jangan pernah menebak. - Jangan mengarang kebijakan, pengembalian dana, harga, atau tindakan akun. - Jangan memasukkan data pribadi pelanggan, kredensial, atau informasi pembayaran. - Tanya dulu sebelum memakai kredit untuk ingestion atau pengambilan. - Jangan kirim jawaban ke pelanggan; kembalikan ke saya untuk ditinjau.
Salinan juga menyertakan langkah pemasangan dan aturan keamanan.
Yang Anda dapatkan
Contoh keluaran dari satu eksekusi. Bukan pembuatan langsung.
Jawaban: Paket Anda diperpanjang pada tanggal 1 setiap bulan. Kartu yang gagal akan dicoba lagi selama tiga hari sebelum kursi dijeda.
Sumber: “pertanyaan umum penagihan” - https://example.com/help/billing
Jika ini tidak tercakup: eskalasi ke antrean penagihan dengan ID faktur.
Panggilan persisnya
Untuk developer: alur kerja yang sama sebagai kode, sesuai urutan eksekusi.
Tampilkan panggilan API asli
Buat basis pengetahuan
Buat basis lewat LiveDoc API dan simpan 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 configContoh keluaran
{ "short_id": "PvyKouzJirXjFdst4uKRK3", "name": "Support knowledge base", "description": "Help center, policy pages, and internal runbooks" }Muat pusat bantuan publik
Tambahkan URL pusat bantuan sebagai resource 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");Contoh keluaran
[ { "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" } ]Tambahkan dokumentasi internal
Tambahkan runbook internal sebagai dokumen.
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 updatesAmbil bukti untuk pertanyaan
Pencarian semantik mengembalikan bagian dan skor paling relevan.
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);Contoh keluaran
[ { "id": "res_005", "title": "Refund policy", "content": "Refunds are available within 30 days of purchase…", "score": 0.92 } ]Jawab hanya dari bukti
Buat model hanya memakai bagian yang diambil dan eskalasi saat tidak ada hasil.
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);Contoh keluaran
"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."
Termasuk
- LiveDoc dari pusat bantuan dan runbook internal
- Pencarian semantik dengan bagian dan judul
- Jawaban dengan sumber yang bisa dikutip
- Eskalasi jelas saat cakupan kurang
Yang tidak dilakukan
- Menjawab hanya dari dokumentasi Anda dan tidak menjelajah web terbuka
- Tidak menjalankan tindakan akun, pengembalian dana, atau perubahan paket
- Tanpa data pelanggan privat atau kredensial di basis
- Dokumentasi usang menghasilkan jawaban usang; perbarui
- Hanya menyusun jawaban, tidak mengirim ke pelanggan
Pertanyaan
Dari mana jawabannya?
Hanya dari LiveDoc Anda: halaman pusat bantuan dan runbook. Pencarian mengembalikan bagian dan agent menulis dari sana.
Jika dokumentasi tidak mencakup?
Eskalasi. Tanpa hasil atau relevansi rendah dianggap belum tercakup, bukan izin menebak.
Bagaimana menjaga basis tetap baru?
Saat kebijakan berubah, tambahkan lagi URL dan perbarui dokumen; alur menyertakan perintah pembaruan dan audit.
Bisa dipakai di antrean tiket?
Bisa, sebagai langkah draf. Pertahankan persetujuan manusia sebelum mengirim ke pelanggan.
Apakah menangani pertanyaan spesifik akun?
Hanya dengan dokumentasi tidak. Data akun ada di sistem Anda; berikan hanya konteks aman yang diperlukan, jangan pernah kredensial.
Berapa biaya satu eksekusi?
Ingesti dan pencarian ditagih sesuai pemakaian; tarif saat ini di halaman harga dan prompt meminta persetujuan sebelum mengeluarkan biaya.
Alur kerja terkait
Ubah satu pertanyaan menjadi brief riset bersumber
Tanya web, simpan halaman di balik jawaban sebagai Markdown, tambahkan apa yang dikatakan praktisi di X, dan simpan bukti dalam LiveDoc yang bisa ditelusuri lagi.
Buka alur kerjaKontenTerbitkan ringkasan berita AI harian yang benar-benar dibaca tim
Dapatkan ringkasan bersumber, tambahkan diskusi praktisi di X, ambil transkrip video, susun edisi Markdown, dan arsipkan di LiveDoc.
Buka alur kerjaKantorUbah halaman riset menjadi presentasi
Ekstrak halaman, simpan sebagai konteks LiveDoc, biarkan PPT Task API membangun deck, dan tanyakan sampai tautan selesai.
Buka alur kerjaSesuaikan
Resep yang sama, disesuaikan dengan cara Anda benar-benar mengirim.
Hanya satu lini produk
Batasi ke satu produk agar basis lebih bersih.
Tambahkan klasifikasi tiket
Klasifikasikan jenis pertanyaan lalu cari dokumentasi yang tepat.
Audit berkala
Periksa tautan rusak dan kebijakan lama setiap bulan.
Lanjut
Halaman referensi di balik resep ini dan langkah berikutnya.