
Обычный ответ 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 = 4
depth = 2
concurrency = 4
Если по-человечески:
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.git
cd 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/skills
cp -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-процесс.
И вот это я себе и собрал. Мой тг.






















