Felo API PlatformFelo API Platform

Penyelidikan

Tukar satu soalan kepada brief penyelidikan bersumber

Tanya web, simpan halaman di sebalik jawapan sebagai Markdown, tambah apa yang pengamal katakan di X dan simpan bukti dalam LiveDoc yang boleh dicari semula.

Masa20 minitTahapPertengahanDikemas kini2026-10-29
Untuk siapaPengasas & operatorPenyelidik pasaranPasukan GTM

Salin prompt

Ganti medan dalam kurungan siku lalu tampal ke Claude Code, Codex atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum kredit digunakan dan menjalankan aliran kerja.

Sediakan ringkasan penyelidikan bersumber untuk [soalan atau keputusan].

Skop: [pasaran, wilayah, bahasa]. Tempoh: [30 hari lepas / 12 bulan lepas]. Audiens: [siapa yang membaca]. Kedalaman: [imbas satu halaman / ringkasan penuh].

Hasilkan ringkasan Markdown dengan:
1. Jawapan ringkas dalam tiga poin.
2. Jadual bukti: dakwaan, tajuk sumber, URL, tarikh terbit.
3. Perkara yang sumber tidak persetujui.
4. Perkara yang masih tidak diketahui.
5. Senarai sumber penuh.

Peraturan:
- Setiap dakwaan fakta perlu pautan sumber. Pisahkan fakta, pendapat dan inferens anda.
- Jangan reka petikan, metrik, tarikh atau sumber. Data tiada ditulis “Tiada data”, bukan sifar.
- Utamakan sumber primer. Gunakan X sebagai isyarat pengamal, bukan bukti.
- Tukar tempoh kepada tarikh mula dan tamat yang jelas, nyatakan zon waktu.
- Sebelum menggunakan kredit, tunjukkan panggilan API yang dirancang dan tunggu kelulusan saya.
- Jangan buat tugas berulang, hantar mesej atau terbitkan apa-apa.
- Tulis hasil ke ./research-brief.md dan ringkaskan dalam chat.

Salinan turut menyertakan langkah pemasangan dan peraturan keselamatan.

Apa yang anda dapat

Contoh output daripada satu larian. Bukan penjanaan langsung.

Contoh ringkasan (petikan)

Adakah model kecil menggantikan model besar dalam bot sokongan?

Jawapan ringkas

  • Model kecil sudah cukup untuk klasifikasi dan jawapan barisan pertama.
  • Halangan utama ialah kualiti capaian, bukan saiz model.
  • Pasukan yang bertukar melaporkan kos setiap tiket lebih rendah, bukan kadar penyelesaian lebih tinggi.
DakwaanSumberTarikh
Kualiti capaian menentukan kualiti jawapanhttps://example.com/rag-eval2026-10-12
Kos setiap tiket selesai turun 38%https://example.com/support-case2026-09-28

Tempat sumber tidak bersetuju

Penanda aras vendor hampir setara; ujian bebas masih melihat jurang pada pemulangan wang berbilang langkah.

Masih tidak diketahui

Sama ada jurang ditutup dengan alat lebih baik atau memerlukan model lebih besar.

Panggilan sebenar

Untuk pembangun: aliran kerja sama sebagai kod, mengikut urutan pelaksanaan.

Tunjukkan panggilan API sebenar
  1. Tanya web

    Chat mencari web, menyusun sumber, menulis jawapan dan memulangkan sumber yang digunakan. Simpan tiga teratas: setiap langkah berikut mengikut salah satu pautan. Pembantu menghantar kunci sekali dan membuang ralat di luar 2xx.

    research.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 ChatData = {
      data: { answer: string; resources: { link: string; title: string }[] };
    };
    
    export async function answer(question: string) {
      const chat = await felo<ChatData>("/v2/chat", { query: question });
      return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) };
    }

    Contoh output

    {
      "answer": "Recent developments include …",
      "sources": [
        { "link": "https://example.com/article", "title": "…" }
      ]
    }
  2. Muat turun halaman di sebalik jawapan

    Petikan tidak cukup untuk brief. Muat turun halaman sebagai Markdown dengan mod bacaan, supaya petikan dan tajuk kekal tanpa gangguan navigasi. Meminta URL sama semula mungkin menggunakan cache pengekstrakan.

    research.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    Contoh output

    // pages[0].content
    "# Example Article\n\nExtracted article content…"
  3. Tambah apa kata X

    Berita meliputi pengumuman; X menunjukkan apa yang orang hadapi dalam praktik. Cari tujuh hari terakhir dan simpan pengarang serta masa supaya brief boleh mengatribusikan setiap dakwaan. Naikkan limit untuk meluaskan; setiap halaman hasil ada cursor.

    research.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const social = await felo<XData>("/v2/x/tweet/search", {
      query: question,
      limit: 10,
      since_time: since,
    });

    Contoh output

    { "data": { "tweets": [
      { "content": "…", "author": { "username": "…" }, "created_at": "…" }
    ] } }
  4. Arkibkan bukti dalam LiveDoc

    Cipta LiveDoc dan tambah sumber sebagai sumber URL. API menyahduplikasi URL yang sudah dilihat dan memulangkan resource id setiap URL, jadi soalan kemudian boleh mencari bukti sama tanpa memuat turun semula.

    research.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: `Research: ${question.slice(0, 60)}`,
      description: "Sources collected while answering the question",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: sources.map((source) => ({ url: source.link, title: source.title })),
    });
    
    console.log(doc.data.short_id); // keep this for later queries
  5. Tanya semula bukti kemudian

    Inilah faedahnya: soalan seterusnya membuat carian semantik pada LiveDoc bukan web terbuka. Berikan resource_ids hanya untuk mengehadkan kepada subset yang diketahui.

    research.ts
    type Retrieved = {
      data: { title: string; content: string; score: number }[];
    };
    
    async function ask(livedoc: string, query: string) {
      const hits = await felo<Retrieved>(
        `/v2/livedocs/${livedoc}/resources/retrieve`,
        { query },
      );
      return hits.data.filter((hit) => hit.score >= 0.7);
    }

    Contoh output

    [
      { "title": "…", "content": "…", "score": 0.92 }
    ]

Termasuk

  • Jawapan bersumber daripada Chat API dan halaman di sebaliknya
  • Pengekstrakan halaman penuh sebagai Markdown untuk sumber terkuat
  • Post X dengan pengarang dan tarikh sebagai isyarat pengamal
  • LiveDoc yang mengekalkan bukti boleh dicari untuk soalan kemudian

Apa yang tidak dilakukan

  • Sumber awam sahaja; halaman berbayar atau login mungkin gagal
  • Liputan X ialah isyarat, bukan tinjauan wakil
  • Tiada temu bual, data peribadi atau pangkalan data berbayar
  • Apabila bukti nipis, brief menyatakannya daripada mengisi ruang
  • Satu larian setiap prompt; penjadualan di ejen atau cron anda

Soalan

Dari mana sumbernya?

Chat API memulangkan halaman yang digunakan, Web Fetch menukar yang terkuat kepada Markdown dan X Search menambah post bertarikh pengamal. Setiap item menyimpan URL.

Boleh kaji pasaran di luar teknologi?

Boleh. Ganti medan skop dengan pasaran anda. Pasaran niche mungkin kurang sumber awam; brief menandakan ruang itu daripada meneka.

Bukti kekal selepas larian?

Ya, jika langkah LiveDoc berjalan. short_id yang dipulangkan membolehkan soalan seterusnya mencari halaman sama tanpa memuat turun semula.

Berapa kos satu brief?

Dibilkan dalam kredit mengikut penggunaan; kadar semasa di halaman harga. Prompt meminta kelulusan sebelum berbelanja.

Boleh jalankan setiap minggu?

Boleh, tetapi prompt ini berjalan sekali. Letakkan penjadualan dalam ejen atau cron yang menjalankan aliran sama.

Jika sumber di sebalik paywall?

Dilangkau dan ditanda tidak tersedia. Brief tidak pernah mengisi ruang dengan fakta atau petikan rekaan.

Aliran kerja berkaitan

Sesuaikan

Resipi sama, disesuaikan dengan cara anda benar-benar menyampaikan.

Tulis brief ke fail

Gabungkan jawapan, petikan halaman dan petikan X menjadi Markdown lalu berikan kepada alat laporan atau commit ke repo docs. Kekalkan pautan sumber dekat dakwaan — brief bernilai sebanyak petikannya.

Jalankan mengikut jadual

Bungkus `answer()` dalam cron dan tulis setiap brief ke fail bertarikh. LiveDoc sama mengumpul sumber, minggu keempat menjawab dengan bukti tiga minggu pertama.

Langkau LiveDoc

Jika sudah ada pangkalan data, simpan jawapan chat dan halaman yang diekstrak di sana. Langkah LiveDoc untuk carian, bukan storan lalai.

Halaman rujukan di sebalik resipi ini dan langkah seterusnya.