Nghiên cứu
Biến một câu hỏi thành báo cáo nghiên cứu có nguồn
Hỏi web, lưu các trang đằng sau câu trả lời thành Markdown, thêm điều người thực hành nói trên X và giữ bằng chứng trong LiveDoc có thể tìm lại sau.
Sao chép prompt
Thay các trường trong ngoặc vuông rồi dán vào Claude Code, Codex hoặc AI có quyền truy cập terminal. Nó cài skill Felo, hỏi trước khi dùng credit và chạy quy trình.
Lập một bản tóm tắt nghiên cứu có nguồn cho [câu hỏi hoặc quyết định]. Phạm vi: [thị trường, khu vực, ngôn ngữ]. Khung thời gian: [30 ngày qua / 12 tháng qua]. Độc giả: [ai sẽ đọc]. Độ sâu: [tổng quan một trang / bản đầy đủ]. Tạo bản tóm tắt Markdown gồm: 1. Câu trả lời ngắn trong ba gạch đầu dòng. 2. Bảng bằng chứng: nhận định, tên nguồn, URL, ngày công bố. 3. Những điểm các nguồn không đồng ý. 4. Những gì vẫn chưa rõ. 5. Danh sách nguồn đầy đủ. Quy tắc: - Mọi nhận định thực tế đều cần liên kết nguồn. Tách sự thật, ý kiến và suy luận của bạn. - Không bịa trích dẫn, số liệu, ngày tháng hay nguồn. Dữ liệu thiếu ghi “Không có dữ liệu”, không bao giờ ghi số 0. - Ưu tiên nguồn sơ cấp. Dùng X như tín hiệu từ người hành nghề, không phải bằng chứng. - Chuyển khung thời gian thành ngày bắt đầu và kết thúc rõ ràng, ghi rõ múi giờ. - Trước khi tiêu tín dụng, hiển thị các lệnh gọi API dự định và chờ tôi phê duyệt. - Không tạo tác vụ định kỳ, không gửi tin nhắn và không công bố gì. - Ghi kết quả vào ./research-brief.md và tóm tắt trong chat.
Bản sao cũng gồm các bước cài đặt và quy tắc an toàn.
Bạn nhận được gì
Kết quả mẫu của một lần chạy. Không phải tạo trực tiếp.
Mô hình nhỏ có thay thế mô hình lớn trong bot hỗ trợ?
Câu trả lời ngắn
- Mô hình nhỏ đã đủ tốt cho phân loại và trả lời tuyến đầu.
- Nút thắt là chất lượng truy xuất, không phải kích thước mô hình.
- Các nhóm đã chuyển báo chi phí mỗi ticket thấp hơn, không phải tỷ lệ giải quyết cao hơn.
| Nhận định | Nguồn | Ngày |
|---|---|---|
| Chất lượng truy xuất quyết định chất lượng câu trả lời | https://example.com/rag-eval | 2026-10-12 |
| Chi phí mỗi ticket đã giải quyết giảm 38% | https://example.com/support-case | 2026-09-28 |
Nơi các nguồn không đồng ý
Benchmark của nhà cung cấp gần tương đương; thử nghiệm độc lập vẫn thấy khoảng cách ở hoàn tiền nhiều bước.
Vẫn chưa rõ
Khoảng cách thu hẹp nhờ công cụ tốt hơn hay cần mô hình lớn hơn.
Các lệnh gọi chính xác
Dành cho lập trình viên: cùng quy trình dưới dạng mã, theo thứ tự chạy.
Hiện lệnh gọi API thật
Hỏi web
Chat tìm web, xếp hạng nguồn, viết câu trả lời và trả tài nguyên đã dùng. Giữ ba nguồn đầu: mỗi bước sau lần theo một liên kết. Helper dưới gửi key một lần và ném lỗi nếu phản hồi không phải 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) }; }Kết quả mẫu
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Tải các trang đằng sau câu trả lời
Một đoạn trích không đủ cho báo cáo. Tải trang thành Markdown với chế độ đọc, để trích dẫn và tiêu đề không bị nhiễu điều hướng. Gọi lại cùng URL có thể dùng bộ nhớ đệm trích xuất.
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 })), ), );Kết quả mẫu
// pages[0].content "# Example Article\n\nExtracted article content…"
Thêm điều X đang nói
Tin tức đưa thông báo; X cho thấy người ta gặp gì trong thực tế. Tìm bảy ngày gần nhất và giữ tác giả, thời gian để báo cáo gán nguồn cho từng khẳng định. Tăng
limitđể mở rộng; mỗi trang kết quả có 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, });Kết quả mẫu
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Lưu bằng chứng vào LiveDoc
Tạo LiveDoc và thêm nguồn làm tài nguyên URL. API loại trùng URL đã thấy và trả resource id cho mỗi URL, nên câu hỏi sau có thể tra cùng bằng chứng mà không tải lại.
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 queriesHỏi lại bằng chứng sau
Đây là lợi ích: câu hỏi tiếp theo tìm ngữ nghĩa trên LiveDoc thay vì web mở. Chỉ truyền
resource_idskhi muốn giới hạn vào tập con đã biết.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); }Kết quả mẫu
[ { "title": "…", "content": "…", "score": 0.92 } ]
Bao gồm
- Câu trả lời có nguồn từ Chat API và các trang đằng sau
- Trích xuất toàn trang Markdown cho nguồn mạnh nhất
- Bài X có tác giả và thời gian làm tín hiệu thực hành
- LiveDoc giữ bằng chứng có thể tra cứu cho câu hỏi sau
Không làm gì
- Chỉ nguồn công khai; trang trả phí hoặc chỉ đăng nhập có thể lỗi
- Độ phủ X là tín hiệu, không phải khảo sát đại diện
- Không phỏng vấn, dữ liệu riêng hay cơ sở dữ liệu trả phí
- Khi bằng chứng mỏng, báo cáo nói rõ thay vì lấp khoảng trống
- Một lần chạy mỗi prompt; lịch chạy do agent hoặc cron của bạn
Câu hỏi
Nguồn đến từ đâu?
Chat API trả các trang đã dùng, Web Fetch chuyển trang mạnh nhất thành Markdown và X Search thêm bài có ngày của người thực hành. Mỗi mục giữ URL.
Có nghiên cứu thị trường ngoài công nghệ được không?
Có. Thay trường phạm vi bằng thị trường của bạn. Thị trường ngách có thể ít nguồn công khai; báo cáo đánh dấu khoảng trống thay vì đoán.
Bằng chứng còn sau khi chạy không?
Có, nếu bước LiveDoc chạy. short_id trả về cho phép câu hỏi sau tra cứu cùng trang mà không tải lại.
Một báo cáo tốn bao nhiêu?
Tính theo credit sử dụng; giá hiện tại ở trang giá. Prompt hỏi duyệt trước khi chi.
Có chạy hằng tuần được không?
Được, nhưng prompt này chạy một lần. Đặt lịch trong agent hoặc cron chạy cùng quy trình.
Nếu nguồn nằm sau tường phí?
Bỏ qua và đánh dấu không khả dụng. Báo cáo không lấp khoảng trống bằng dữ kiện hay trích dẫn bịa.
Quy trình liên quan
Xuất bản bản tin AI hằng ngày mà nhóm bạn thực sự đọc
Lấy bản tóm tắt tin có nguồn, thêm thảo luận của người thực hành trên X, lấy một bản ghi video, dựng bản tin Markdown và lưu vào LiveDoc.
Mở quy trìnhVăn phòngBiến trang nghiên cứu thành bài thuyết trình
Trích xuất trang, lưu làm bối cảnh LiveDoc, để PPT Task API dựng deck và hỏi cho đến khi có liên kết hoàn chỉnh.
Mở quy trìnhHỗ trợTrả lời câu hỏi hỗ trợ từ tài liệu của chính bạn
Tạo LiveDoc, tải trung tâm trợ giúp và runbook nội bộ, lấy các đoạn trả lời ticket và để model chỉ trả lời từ bằng chứng đó.
Mở quy trìnhTùy biến
Cùng công thức, điều chỉnh theo cách bạn thực sự triển khai.
Ghi báo cáo ra tệp
Ghép câu trả lời, đoạn trang và trích dẫn X thành Markdown rồi đưa cho công cụ báo cáo hoặc commit vào kho tài liệu. Giữ liên kết nguồn cạnh khẳng định — báo cáo đáng giá bằng trích dẫn của nó.
Chạy theo lịch
Bọc `answer()` trong cron và ghi mỗi báo cáo vào tệp có ngày. Cùng LiveDoc tích lũy nguồn, tuần thứ tư trả lời bằng bằng chứng của ba tuần đầu.
Bỏ qua LiveDoc
Nếu đã có cơ sở dữ liệu, lưu câu trả lời chat và trang đã trích xuất ở đó. Bước LiveDoc dành cho tìm kiếm, không phải lưu trữ mặc định.
Đi tiếp
Các trang tham chiếu đằng sau công thức và nơi đi tiếp.