Deep Research для бедных поверх Codex

от автора

Codex Deep Research Skill

Codex Deep Research Skill

Обычный ответ LLM по сложной теме – часто мусор.

Не потому что модель тупая. Просто за один prompt не получаешь полноты ответа. Это быстрый ответ из головы модели: красиво, складно, иногда даже убедительно. Но если нужно реально разобраться в рынке, технологии, конкурентах, вакансиях, конференциях или любом другом you name it кейсе, почти всегда нужен не ответ, а небольшое исследование.

То есть:

  • разложить тему на направления;

  • сходить в источники;

  • сравнить позиции;

  • вытащить цифры, риски и кейсы;

  • собрать нормальный markdown-отчёт со ссылками.

Поэтому я всё чаще запускаю Deep Research буквально по поводу и без. Для меня это стал дефолтный режим работы со сложными вопросами.

Проблема вот в чём: встроенный Deep Research в ChatGPT и Claude удобный, но не всегда управляемый.

Во-первых, лимиты. Покупать подписку за $100 только ради более частого Deep Research мне пока банально жалко. Плюсом у ChatGPT нет отображения счётчика оставшихся запусков. Про “щедрые” лимиты Claude на 20-баксовой подписке я помолчу.

Во-вторых, непонятно, что происходит под капотом. Иногда ощущение, что он посмотрел 20 источников по теме. Иногда – что перелопатил половину интернета, сжёг миллиард токенов и потратил час на ресёрч. Напрямую управлять шириной и глубиной прогона никак нельзя.

В итоге я решил собрать свой локальный Deep Research через API – на тех сервисах, где у меня уже были доступные кредиты.

Так появился Deep Research Codex – локальный wrapper поверх GPT Researcher, который запускается из Codex как skill.

Сразу дисклеймер: это не аналог Deep Research внутри ChatGPT или Claude. Там, скорее всего, гораздо более сложная система планирования, поиска, ранжирования и проверки источников. Я взял open-source базу – GPT Researcher – поменял внутри то, что мешало моему сценарию, и собрал вокруг него удобный runner.

Что получилось

Workflow такой:

сырой запрос -> prefilter -> подтверждение -> deep research -> markdown report

Я пишу в Codex что-то вроде:

Сделай research по AI-агентам в клиентской поддержке: ROI, риски, реальные кейсы, что можно показать B2B-клиенту.

Дальше skill сначала запускает prefilter. Он не лезет сразу в web research, а превращает мой сырой запрос в нормальный brief:

  • тема;

  • цель;

  • контекст;

  • ключевые вопросы;

  • scope;

  • web query;

  • формат результата.

Я вижу, как система поняла задачу, и только потом подтверждаю запуск.

Это главное отличие от магической кнопки: я могу остановиться до дорогого или кривого прогона.

Как работает мой Deep Research

Внутри используется GPT Researcher.

В дефолтном профиле сейчас:

breadth = 4depth = 2concurrency = 4
Deep Research каскад

Deep Research каскад

Если по-человечески:

  • breadth – насколько широко раскладывать тему;

  • depth – насколько глубоко уходить по веткам;

  • concurrency – сколько задач выполнять параллельно.

Например, тема “AI-агенты в поддержке” может распасться на такие ветки:

1. Экономика поддержки2. Качество ответов3. Интеграции4. Риски

Потом внутри каждой ветки появляются уточняющие вопросы, источники и follow-up темы. Сначала система идёт широко, потом глубже.

Для меня смысл именно в этом: не просить LLM “ну подумай получше”, а запускать воспроизводимый research-процесс с понятными параметрами.

Почему Tavily и Bedrock

Никакой религии тут нет. Я собрал первую рабочую версию на тех API, где у меня уже были credits и где было проще быстро поднять пайплайн.

Для web search используется Tavily. Это search API, который удобно использовать в agentic и RAG-сценариях.

У Tavily есть бесплатный старт: можно зарегистрироваться без карты и получить бесплатные API credits на месяц. Для личных экспериментов и небольших research-прогонов этого обычно хватает.

Для LLM-вызовов я использую AWS Bedrock и Claude через Bedrock. Не потому, что Bedrock обязателен, а потому что у меня там были бесплатные лимиты/credits. Поэтому первый wrapper получился Bedrock-first.

В принципе, это можно переделать под другие API. GPT Researcher уже поддерживает разных LLM-провайдеров, а search API тоже можно заменить. Просто Tavily + Bedrock – это была самая быстрая связка, которая у меня была под рукой.

Что нужно для запуска

Сейчас мой wrapper рассчитан на:

  • Tavily для web search;

  • AWS Bedrock;

  • Claude через Bedrock;

  • Bedrock embeddings;

  • запуск из shell или Codex.

Клонируем репозиторий:

git clone https://github.com/mikemelanin/deep-research-codex.gitcd deep-research-codex

Создаём окружение и ставим зависимости:

python3 -m venv .venv./.venv/bin/pip install -r gpt-researcher/requirements.txt boto3

Создаём локальный конфиг:

cp .env.example .env

В .env нужно добавить Tavily API key и настройки AWS Bedrock.

Установка Codex skill

Команду нужно выполнять из корня репозитория deep-research-codex, где есть папка skills/research.

mkdir -p ~/.codex/skillscp -R skills/research ~/.codex/skills/research

Что здесь происходит:

  • skills/research – папка skill внутри текущего репозитория;

  • ~/.codex/skills/research – место, куда Codex ожидает пользовательские skills;

  • cp -R копирует всю папку research вместе с файлами внутри.

Если запускать команду не из корня репозитория, она не найдёт skills/research.

Если проект лежит не в ~/deep-research-codex, можно указать путь явно:

export DEEP_RESEARCH_CODEX_HOME="/path/to/deep-research-codex"

После этого в Codex можно писать обычным языком:

Сделай research по теме ...Собери markdown-отчёт с источниками ...Сделай deep research на русском ...

Запуск без Codex

Обычный запуск:

./research.sh "Тема исследования"

Русский отчёт:

./research.sh --ru "Тема исследования"

Только prefilter, без web research:

./research.sh --prefilter-only "Тема исследования"

Запуск из файла:

./research.sh --file "./context.md"

Продолжить из сохранённого prefilter:

./research.sh --from-prefilter "./logs/YYYYMMDD-HHMMSS-prefilter.json"

Что в этом полезного

Для меня главное – не “сделать ещё один Deep Research”, а сделать его более ручным и предсказуемым.

Я могу:

  • увидеть, как система поняла задачу;

  • остановиться до запуска web research;

  • управлять шириной и глубиной;

  • гонять research чаще, потому что использую доступные API;

  • получать итог сразу в markdown;

  • запускать всё из Codex рядом с другими агентными задачами.

Это не идеальный open-source Deep Research. Это рабочий инструмент под мой процесс: Codex как управляющий слой, GPT Researcher как research engine, Tavily как web search, Bedrock как текущий LLM backend.

Обычный LLM-ответ хорош для быстрых вопросов. Но если тема сложная, мне всё чаще нужен не ответ, а research-процесс.

И вот это я себе и собрал. Мой тг.

ссылка на оригинал статьи https://habr.com/ru/articles/1048844/