Исследования
Превратите один вопрос в исследовательский бриф с источниками
Спросите веб, сохраните страницы, на которых основан ответ, как Markdown, добавьте мнения практиков из X и оставьте доказательства в LiveDoc, который можно будет искать позже.
Скопировать промпт
Замените поля в квадратных скобках и вставьте в Claude Code, Codex или любой AI с доступом к терминалу. Он установит навык Felo, спросит перед списанием кредитов и выполнит процесс.
Составь исследовательский бриф с источниками по теме [вопрос или решение]. Охват: [рынок, регион, язык]. Период: [последние 30 дней / последние 12 месяцев]. Аудитория: [кто будет читать]. Глубина: [обзор на одну страницу / полный бриф]. Подготовь Markdown-бриф с: 1. Коротким ответом из трёх пунктов. 2. Таблицей доказательств: утверждение, название источника, URL, дата публикации. 3. Тем, в чём источники расходятся. 4. Тем, что пока неизвестно. 5. Полным списком источников. Правила: - Каждое фактическое утверждение должно иметь ссылку на источник. Разделяй факты, мнения и собственные выводы. - Никогда не выдумывай цитаты, метрики, даты и источники. Отсутствующие данные — «Нет данных», но не ноль. - Отдавай приоритет первоисточникам. X используй как сигнал практиков, а не как доказательство. - Преврати период в явные даты начала и конца и укажи часовой пояс. - Перед расходом кредитов покажи планируемые вызовы API и дождись моего одобрения. - Не создавай повторяющуюся задачу, не отправляй сообщения и ничего не публикуй. - Запиши результат в ./research-brief.md и кратко изложи его в чате.
В копию также входят шаги установки и правила безопасности.
Что получится
Пример вывода одного запуска. Не живая генерация.
Заменят ли малые модели большие в поддержке?
Короткий ответ
- Малые модели уже достаточны для классификации и ответов первой линии.
- Узкое место — качество поиска, а не размер модели.
- Перешедшие команды сообщают о снижении стоимости тикета, а не роста доли решений.
| Утверждение | Источник | Дата |
|---|---|---|
| Качество поиска определяет качество ответа | https://example.com/rag-eval | 2026-10-12 |
| Стоимость решённого тикета упала на 38% | https://example.com/support-case | 2026-09-28 |
Где источники расходятся
Бенчмарки вендоров показывают почти паритет; независимые тесты видят разрыв на многошаговых возвратах.
Что пока неизвестно
Закроется ли разрыв за счёт инструментов или потребуется большая модель.
Реальные вызовы
Для разработчиков: тот же процесс в виде кода в порядке выполнения.
Показать реальные вызовы API
Задайте вопрос вебу
Chat ищет в вебе, ранжирует источники, пишет ответ и возвращает использованные ресурсы. Оставьте три лучших: каждый следующий шаг идёт по одной из этих ссылок. Helper ниже отправляет ключ один раз и бросает исключение при ответе не 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) }; }Пример вывода
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Загрузите страницы, на которых основан ответ
Краткого фрагмента недостаточно. Загрузите страницы в Markdown с включённой читаемостью, чтобы цитаты и заголовки сохранились без навигационного шума. Повторный запрос того же URL может попасть в кэш извлечения.
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 })), ), );Пример вывода
// pages[0].content "# Example Article\n\nExtracted article content…"
Добавьте мнения из X
Новости рассказывают об анонсах, X — о том, с чем люди сталкиваются на практике. Ищите последние семь дней и сохраняйте автора и время, чтобы бриф мог указать источник каждого утверждения. Увеличьте
limitдля более широкого охвата; каждая страница результатов содержит 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, });Пример вывода
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Сохраните доказательства в LiveDoc
Создайте LiveDoc и добавьте источники как URL-ресурсы. API удаляет дубликаты уже виденных URL и возвращает resource id для каждого URL, поэтому те же доказательства можно искать в следующих вопросах без повторной загрузки.
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Вернитесь к доказательствам позже
Вот и результат: следующий вопрос выполняет семантический поиск по LiveDoc, а не по открытому вебу. Передавайте
resource_idsтолько если нужно ограничить поиск известным подмножеством.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); }Пример вывода
[ { "title": "…", "content": "…", "score": 0.92 } ]
Что входит
- Ответ Chat API с источниками и страницами, на которых он основан
- Извлечение полных страниц в Markdown для сильнейших источников
- Посты X с автором и временем как сигнал от практиков
- LiveDoc с возможностью поиска доказательств для будущих вопросов
Чего не делает
- Только публичные источники; платные и закрытые страницы могут не открыться
- Покрытие X — сигнал, а не репрезентативный опрос
- Без интервью, приватных данных и платных баз
- Если доказательств мало, это указывается, а не заполняется догадками
- Один запуск на промпт; расписание — на стороне agent или cron
Вопросы
Откуда берутся источники?
Chat API возвращает использованные страницы, Web Fetch превращает сильнейшие из них в Markdown, X Search добавляет датированные посты практиков. У каждого элемента сохраняется URL.
Можно исследовать рынок вне технологий?
Да. Замените плейсхолдер области своим рынком. В нишах может быть меньше публичных источников; бриф отметит пробелы, а не будет угадывать.
Доказательства сохраняются после запуска?
Да, если выполнить шаг LiveDoc. Возвращённый short_id позволяет следующим вопросам искать те же страницы без повторной загрузки.
Сколько стоит бриф?
Оплата по факту использования кредитов; актуальные тарифы на странице цен. Промпт запрашивает одобрение до трат.
Можно запускать каждую неделю?
Да, но этот промпт выполняется один раз. Настройте расписание в agent или cron, который умеет запускать тот же процесс.
Что если источник за пейволлом?
Он пропускается и помечается как недоступный. Бриф не заполняет пробел выдуманным фактом или цитатой.
Связанные процессы
Выпускайте ежедневный AI-дайджест, который команда действительно читает
Получите подборку новостей с источниками, добавьте обсуждения практиков в X, загрузите один транскрипт видео, соберите выпуск в Markdown и сохраните его в LiveDoc.
Открыть рабочий процессОфисПревратите исследовательскую страницу в презентацию
Извлеките страницу, сохраните её как контекст LiveDoc, затем дайте PPT Task API собрать deck и опрашивайте задачу до готовой ссылки.
Открыть рабочий процессПоддержкаОтвечайте на вопросы поддержки по своей документации
Создайте LiveDoc, загрузите справочный центр и внутренний runbook, найдите фрагменты, отвечающие на тикет, и позвольте модели отвечать только по этим доказательствам.
Открыть рабочий процессАдаптируйте под себя
Тот же рецепт, подстроенный под ваш реальный процесс.
Запишите бриф в файл
Соберите ответ, выдержки страниц и цитаты из X в Markdown и передайте в инструмент отчётов или закоммитьте в репозиторий документации. Держите ссылки на источники рядом с утверждениями — ценность брифа определяется цитатами.
Запускайте по расписанию
Оберните `answer()` в cron и сохраняйте каждый бриф в файл с датой. Один LiveDoc накапливает источники, и на четвёртой неделе можно отвечать по доказательствам первых трёх.
Пропустите LiveDoc
Если у вас уже есть база данных, сохраните ответ chat и загруженные страницы туда. Шаг LiveDoc нужен для поиска, а не для хранения по умолчанию.
Продолжить
Справочные страницы этого рецепта и куда двигаться дальше.