Паттерн отделяет агентную логику от конкретного LLM-провайдера через слой адаптеров, фабрик и prompt-style профилей. Один и тот же агентный runtime может переключаться между backend-моделями без переписывания бизнес-логики инструментов.
Паттерн решает задачи переносимости, отказоустойчивости и A/B-сравнения моделей в production/research контурах. Он особенно важен при смешении function-calling диалектов и разных API-контрактов.
- Базовый интерфейс LLM и набор provider-адаптеров.
- Выделенные prompt templates под разные function-calling режимы.
- Конфигурируемое переключение backend на уровне рантайма.
- Изоляция агентного planning/tool-слоя от API-специфики провайдера.
flowchart TD
AG[Agent Runtime] --> LINT[LLM Interface]
LINT --> A1[Provider Adapter A]
LINT --> A2[Provider Adapter B]
LINT --> A3[Provider Adapter C]
A1 --> API1[Model API A]
A2 --> API2[Model API B]
A3 --> API3[Model API C]
- Alibaba-NLP-DeepResearch: в ветке
WebWatcherиспользуетqwen_agent/llm/*с базовым интерфейсом, provider-адаптерами и function-calling prompt styles. - OpenDeepResearcher: применяет единый async-адаптер
call_openrouter_asyncдля всех когнитивных этапов (query generation, relevance check, extraction, replanning, final synthesis), сохраняя изоляцию orchestration-слоя от API-вызова модели. - open_deep_research: централизует выбор моделей по стадиям через
Configuration(model slots для research/compression/final), что позволяет менять backend-профили без изменения оркестратора. - SkyworkAI-DeepResearchAgent: использует
ModelManagerи семейство адаптеров (LiteLLMModel,OpenAIServerModel,Restful*) с единымMessageManager, что позволяет переключать провайдеры в одном агентном runtime и конфиг-профилях. - Tencent-CognitiveKernel-Pro: использует общий
model.pyинтерфейс для нескольких backend-ов иMessageTruncator, чтобы удерживать длинный stateful-контекст в лимитах токенов без изменения агентной логики. - btahir-open-deep-research: использует
generateWithModelкак централизованный dispatcher междуGemini/OpenAI/Anthropic/DeepSeek/Ollama/OpenRouter, сохраняя неизменный контракт API-стадий при смене провайдера. - deep-research: реализует
getModelкак provider facade с переключением между custom endpoint, Fireworks DeepSeek R1 и OpenAIo3-mini, сохраняя единый оркестрационный слой. - deep-searcher: реализует
BaseLLMс множеством провайдеров и провайдерный выбор черезConfiguration/ModuleFactoryиз YAML без изменения агентной логики. - fdarkaou-open-deep-research: применяет минимальный адаптерный слой
createModelс переключением междуgpt-4o,gpt-4o-miniиo3-miniпри общей orchestration-логике. - gpt-researcher: использует provider-agnostic LLM abstraction с широким набором провайдеров и семействами промптов (
PromptFamily) для совместимости режимов. - local-deep-research: использует auto-discovery и registry провайдеров (
OpenAI/Anthropic/Google/OpenRouter/Ollama/LMStudio/...) для переключения LLM без изменения core-оркестрации. - smolagents: реализует общий интерфейс
Modelи набор провайдеров (OpenAI/Azure/LiteLLM/Transformers/VLLM/MLX/Bedrock) с единым runtime-контрактом. - starpig1129-DATAGEN: использует
LanguageModelManager+ProviderFactoryс набором провайдеров (OpenAI/Anthropic/Google/Ollama/Azure/Groq) и назначает модель по роли агента.
В минимальном варианте есть один адаптер и один prompt style. В полном варианте добавляются профили под разные семьи моделей и fallback-цепочки при сбоях конкретного провайдера. OpenDeepResearcher демонстрирует минимальную конфигурацию этого паттерна: один провайдерный адаптер без полиморфного переключения, но с полной централизацией LLM-вызовов. Skywork реализует конфигурируемый middle-вариант: полиморфный слой есть, а специализация поведения достигается сочетанием профиля режима и prompt/tool binding. Tencent дополняет паттерн встроенным truncation-слоем как частью адаптера, а не внешней постобработкой prompt. btahir добавляет product-oriented вариацию: capability matrix одновременно управляет UI-доступностью моделей и backend-валидацией разрешенных провайдеров.
Паттерн объединяет несколько классов инструментов в одном агентном контуре: веб-поиск, чтение страниц, академический поиск, вычислительный sandbox и файловый парсинг. Вместо моноканального retrieval система использует tool mesh с единым протоколом вызова.
Архитектура нужна для задач, где ответ требует одновременно evidence из интернета, структурированных документов и локальных вычислений. Она уменьшает число handoff между специализированными пайплайнами и повышает полноту исследования.
- Единый интерфейс tool calling для разнородных каналов.
- Сочетание retrieval и execution-инструментов.
- Возможность переключать инструмент по ходу multi-turn reasoning.
- Нормализация ответов инструментов в общий trace-формат.
flowchart TD
AG[ReAct Agent] --> S[Search Tool]
AG --> V[Visit Tool]
AG --> SC[Scholar Tool]
AG --> PY[Python Tool]
AG --> F[File Tool]
S --> AG
V --> AG
SC --> AG
PY --> AG
F --> AG
- Alibaba-NLP-DeepResearch: в базовом inference-контуре объединяет
search,visit,scholar,python,fileпод единым агентным lifecycle. - OpenDeepResearcher: использует минимальный mesh из специализированных внешних сервисов:
SerpAPIдля discovery,Jina Readerдля page-reading и LLM для relevance/synthesis в едином итеративном контуре. - open_deep_research: строит единый реестр инструментов (
search+ MCP +think_tool) и выбирает backend поиска конфигурационно, сохраняя общий tool-calling путь. - SkyworkAI-DeepResearchAgent: использует расширенный mesh (
WebSearcher,WebFetcher,DeepResearcher,DeepAnalyzer,FileReader,AutoBrowser,PythonInterpreter,Planning) и вызывает часть возможностей через managed-agents в общем tool-calling пути. - Tencent-CognitiveKernel-Pro: строит двухдоменный mesh через
WebAgent + WebEnv(Playwright)иFileAgent + FileEnv(MarkdownConverter); оркестратор делегирует подзадачи специализированным агентам и объединяет результаты в общей сессии. - btahir-open-deep-research: строит прикладной mesh из
Bing/Google/Exa(discovery),Jina.ai(content fetch),officeparser(локальные документы) и LLM-генерации отчета в едином API-оркестраторе. - gpt-researcher: использует широкий набор retrievers (поиск/академика/MCP) и scraper-стек (включая browser и PDF), объединяя их в один research-пайплайн.
- local-deep-research: реализует retrieval-mesh через
Search Engine Factory(множество web/academic движков) и встроеннуюLibrary RAG, объединенные в общий research pipeline. - smolagents: предоставляет schema-first
Tool/ToolCollectionи набор default tools (search/visit/выполнение кода), расширяемые через MCP, под единым tool-calling контрактом. - starpig1129-DATAGEN: комбинирует локальные tools (код, файлы, команды) и интернет-инструменты (
google_search,scrape,arxiv) с MCP-интеграциями черезToolFactoryиmcp_tools. - zamalali-DeepGit: фиксированный tool-chain комбинирует GitHub ingestion, hybrid retrieval (ColBERT+BM25), cross-encoder rerank и LLM-парсинг/фильтры как единый mesh внутри пайплайна.
Базовый вариант ограничивается search + visit. Расширенный гибрид добавляет scholar для научных источников, python для проверяемых вычислений и file-toolchain для пользовательских документов. В OpenDeepResearcher базовый вариант дополнен stage-gate логикой fetch -> usefulness(Yes/No) -> extract, что уменьшает лишнюю обработку нерелевантных страниц. Skywork добавляет иерархическую вариацию mesh-подхода: специализированные роли инкапсулированы как инструменты, что упрощает делегирование и повторное использование execution path. Tencent фиксирует прикладной подвариант «web+file dual-channel»: web-наблюдения приоритетно берутся из accessibility-tree, а документы обрабатываются в текстовом и визуальном режимах через единый file-env API. btahir реализует конфигурационный подвариант: состав mesh выбирается через capability matrix (CONFIG) и динамически ограничивается rate-limit слоем. В отдельном подварианте mesh формально разделен на retriever и scraper слои с нормализованным форматом документов, что упрощает расширение источников (пример — gpt-researcher).
open_deep_research демонстрирует MCP-расширяемый mesh: инструменты подгружаются динамически и оборачиваются auth/error handling, сохраняя единый формат вызова и результатов.
Паттерн строит reasoning-траектории в формате agent loop, где шаги модели включают внешние tool-вызовы и обработку их результатов. Ключевая цель — обучающие трассы, отражающие реальную инструментальную работу, а не имитацию поиска внутри одного ответа.
Такой подход нужен, когда модель должна быть обучена на проверяемом взаимодействии с вебом/API и устойчивой последовательности think -> tool_call -> tool_response -> answer. Паттерн применим в задачах research automation и browser/search-ассистентов.
- Агентный runtime с итеративными decision/tool шагами.
- Инструменты подключаются через унифицированный менеджер.
- Траектория содержит полную историю промежуточных действий.
- Batch orchestration и ограничения параллелизма для throughput.
flowchart TD
IN[Question + reasoning_path] --> AG[Reasoning Agent]
AG --> TC[tool_call]
TC --> TM[Tool Manager]
TM --> TS[Search / Visit]
TS --> TR[tool_response]
TR --> AG
AG --> ANS[Final answer]
ANS --> TRACE[Trajectory Trace]
- AQ-MedAI-MedResearcher-R1: реализует
LangGraphReasoningAgentиRunReasoningс инструментамиsearch/visitи сохранением детализированных tool-augmented траекторий. - Alibaba-NLP-DeepResearch: использует базовый
react_agent.pyи агентные варианты вWebAgent/*, расширяя цикл доsearch/visit/scholar/python/fileс унифицированным ReAct-протоколом. - OpenDeepResearcher: реализует облегченный async agent loop в notebook-формате:
generate queries -> search -> fetch -> usefulness -> extract -> replan, где остановка задается через<done>илиiteration_limit. - open_deep_research: использует stateful LangGraph loop с разделением
supervisor -> researcher, где researcher выполняет tool-calling шаги (search/MCP/think_tool) и возвращает сжатые результаты в общий контур. - SkyworkAI-DeepResearchAgent: реализует
AsyncMultiStepAgentдля single- и hierarchical multi-agent режимов; шаги включают planning, tool calling, обработку ошибок,final_answer_toolи параллельное выполнение независимых вызовов черезasyncio.gather. - Tencent-CognitiveKernel-Pro: использует общий
MultiStepAgentс цикломplan -> action -> endдляCKAgent,WebAgentиFileAgent; action выражается исполняемым кодом, а шаги фиксируются вAgentSessionдля последующей оценки и обучения. - btahir-open-deep-research: реализует прикладной agent loop как API-декомпозицию стадий
optimize -> search/fetch -> analyze -> reportс follow-up шагами; это production-вариант ReAct без отдельного trace-dataset контура. - dCaples-AutoDidact: использует локальный ReAct-контур в
rl_helpers.py, где вызовыsearch_corpusисполняются прямо внутри RL-генерации, а остановка задается лимитами агентного цикла. - smolagents: реализует базовый ReAct-цикл в
MultiStepAgentс разными action-парадигмами (ToolCallingAgent,CodeAgent) и шаговой памятью, фиксирующей tool/exec наблюдения.
Облегченный вариант использует один инструмент (только search). В R1 применен двухинструментный контур search + visit с общим ToolManager; в Alibaba-варианте паттерн расширен до мультитулового long-horizon контура. OpenDeepResearcher занимает промежуточный вариант: двухинструментный web-контур (SerpAPI + Jina) без отдельного trace-storage, но с LLM-управляемым планированием следующего шага. Skywork показывает иерархический вариант паттерна, где planner и специализированные sub-agents работают в том же ReAct/tool-calling контуре, а план поддерживается как stateful lifecycle-объект. Tencent реализует code-as-action подвариант: вместо фиксированного списка команд агент генерирует исполняемый Python-action, который выполняется в рантайме и возвращает observation в следующий шаг. btahir показывает UI-оркестрируемый подвариант: агентный цикл нарезан на API-stage контракты и может исполняться как в линейном Home, так и в графовом Flow режиме. dCaples фиксирует train-time подвариант: агентный ReAct-loop используется не только для инференса, но и как источник rollout-сэмплов для GRPO-оптимизации.
open_deep_research демонстрирует supervisor/researcher подвариант: стратегический узел делегирует параллельные tool-loop задачи, а исследовательский подграф возвращает сжатые артефакты в общий контрольный цикл.
Архитектура вводит унифицированный сериализуемый формат трейс-данных, где каждый пример содержит строгие сегменты (<think>, <tool_call>, <tool_response>, <answer>). Формат используется сквозным образом в генерации, постобработке, обучении и оценке.
Паттерн решает проблему несовместимости между этапами pipeline и снижает стоимость интеграции новых моделей/рантаймов. Он особенно важен в системах, где несколько контуров обмениваются одними и теми же reasoning-артефактами.
- Стабильная схема записи промежуточных и финальных шагов reasoning.
- Контрактная валидация структуры перед публикацией датасета.
- Повторное использование формата в training и evaluation.
- Поддержка selective-rewrite без изменения структуры записи.
flowchart TD
GEN[Generation] --> FMT[Trace Formatter]
FMT --> PP[Postprocessing]
PP --> TRAIN[Training Dataset]
TRAIN --> EVAL[Evaluation Input]
- AQ-MedAI-MedResearcher-R1: использует единый тегированный формат
<think>/<tool_call>/<tool_response>/<answer>в контурах генерации и оценки. - Alibaba-NLP-DeepResearch: использует ReAct-теги
<tool_call>/<tool_response>/<answer>и JSONL как операционный формат для batch rollout и последующей judge-оценки. - SkyworkAI-DeepResearchAgent: использует типизированный контракт шагов (
TaskStep/PlanningStep/ActionStep) вAgentMemoryи стабильный финальный формат черезprepare_response()/JSONL для benchmark-режимов. - Tencent-CognitiveKernel-Pro: хранит шаговый контракт в
AgentSession(план, действие, observation, ошибки, финальный ответ) и напрямую конвертирует те же траектории в SFT черезconvert_sft.pyс rejection sampling. - btahir-open-deep-research: применяет prompt-as-contract c обязательным JSON-извлечением (
extractAndParseJSON) между API-стадиями, что стабилизирует межмодульный обмен при мультипровайдерной LLM-маршрутизации. - dCaples-AutoDidact: использует schema-driven контракт для
search_corpusи парсинг JSON tool-call из свободного текста (extract_json_objects), а затем переводит agent-output в токены/маски (AgenticOutputs,get_mask) для RL-тренера. - smolagents: фиксирует шаговую структуру в
AgentMemory(типизированныеTask/Planning/Action/Finalшаги) и использует ее как переносимый execution-trace между режимами агента. - starpig1129-DATAGEN: использует единый
TypedDict-контракт состояния для маршрутизации, ревизий и узлов human-in-the-loop; это state-centric подвариант контракта, обслуживающий межузловой обмен в графе.
Вариант с JSON-структурой вместо тегов упрощает парсинг, но усложняет переносимость в prompt-oriented пайплайнах. В R1 сохранен теговый формат как межконтурный стандарт; в Alibaba он совмещен с JSONL-конвейером для масштабного инференса. Skywork реализует объектно-типизированный подвариант контракта памяти с последующей нормализацией в экспортный формат. Tencent занимает state-centric вариант: основной контракт живет в объектной сессии выполнения и затем преобразуется в учебный формат без повторной генерации reasoning. btahir демонстрирует API-centric JSON-контракт: строгая структура ответа модели валидируется на каждом шаге pipeline и используется как интерфейс между UI, роутами и report-консолидацией. dCaples показывает train-oriented подвариант контракта: trace-представление ориентировано не на внешнюю сериализацию, а на формирование корректных supervision-масок для GRPO. DATAGEN демонстрирует workflow-centric подвариант: единый State контракт обслуживает маршрутизацию, quality-review и human-gate узлы в LangGraph.
Паттерн разделяет runtime генерации synthetic data и runtime benchmark-оценки на независимые контуры с собственными точками запуска и конфигурацией. Это позволяет независимо масштабировать, обновлять и валидировать оба процесса.
Паттерн нужен для предотвращения coupling между data-generation логикой и экспериментальной оценкой качества модели. Особенно полезен в исследовательских циклах с частыми итерациями датасета и метрик.
- Отдельные пайплайны, конфиги и CLI для generation и evaluation.
- Возможность повторного использования tool-слоя при независимом оркестрировании.
- Разные профили LLM и параметров под этапы генерации/оценки.
- Явный handoff через стандартизированный формат трейсов/ответов.
flowchart TD
GEN[Generation Runtime] --> DATA[Training Traces]
DATA --> FT[Fine-tuned Model]
FT --> EVAL[Evaluation Runtime]
EVAL --> MET[Benchmark Metrics]
- AQ-MedAI-MedResearcher-R1: отделяет
TrajectoryGenerationPipelineотEvaluationPipeline, сохраняя независимый reasoning runtime и CLI для benchmark-режимов. - Alibaba-NLP-DeepResearch: держит отдельные контуры
inference/*иevaluation/*, включая независимые judge/prompts и скрипты официальной оценки. - Ayanami0730-deep_research_bench: использует тот же принцип развязки контуров в benchmark-only виде: независимые пайплайны
RACEиFACTзапускаются отдельными этапами из shell-оркестратора и пишут артефакты в разные директории. - open_deep_research: отделяет runtime графа от eval-тура через тестовый набор evaluators и сравнительные сценарии, которые запускаются независимо от основного контурa.
- SkyworkAI-DeepResearchAgent: разделяет production-like runtime (
run_general/run_oai_deep_research) и benchmark-контур (run_gaia/run_hle) через отдельные конфиг-профили, datasets/scorers и JSONL-экспорт результатов. - dCaples-AutoDidact: разделяет контур подготовки synthetic QA (
generate_data.py) и контур RL/eval (autodidact.ipynb,simple_qa.py), сохраняя общий retrieval/tool слой как точку handoff. - deep-searcher: держит отдельный evaluation-harness (
evaluation/evaluate.py) для сравненияDeepvsNaiveрежимов, изолированный от online runtime.
В компактных системах возможен единый runtime с флагами режимов. В R1 выбран раздельный вариант для изоляции экспериментов и повторяемости; в Alibaba это дополнено отдельными official evaluators для разных наборов задач. Skywork демонстрирует гибрид: единое агентное ядро переиспользуется, но запуск и формат артефактов развязаны по benchmark-профилям. dCaples демонстрирует notebook-first вариант: контуры разведены логически и по модулям, но оркеструются из одного entry-point для локального single-GPU цикла.
Архитектура выделяет управление длиной контекста в отдельную подсистему, которая работает внутри или рядом с ReAct-циклом. Компрессия применяется проактивно, до достижения жестких лимитов, и влияет на дальнейшую стратегию поиска/чтения.
Паттерн предназначен для long-horizon сценариев, где накапливаются большие истории шагов и evidence-блоков. Он позволяет сохранять релевантный контекст и снижать деградацию качества при длинных траекториях.
- Отдельные модули summary/compression в runtime.
- Триггеры компрессии по длине, этапу или типу evidence.
- Сохранение опорных фактов при сжатии истории.
- Совместимость с продолжением tool-итераций после компрессии.
flowchart TD
LOOP[ReAct Loop] --> MEM[Context Buffer]
MEM --> LIM[Length / Budget Check]
LIM -->|exceeded| CMP[Compression Module]
CMP --> MEM2[Compressed Memory]
MEM2 --> LOOP
LIM -->|ok| LOOP
- Alibaba-NLP-DeepResearch: реализует две стратегии сжатия в
AgentFold(проактивная компрессия) иWebResummer(summary loop) для long-context траекторий. - deep-research: применяет
trimPromptиRecursiveCharacterTextSplitterдля token-aware сокращения контекста перед LLM-вызовами при извлечении learnings и генерации follow-up. - fdarkaou-open-deep-research: использует token-aware trimming и
RecursiveCharacterTextSplitterв LLM-провайдерах для контроля длины контекста при извлечении learnings и генерации отчета. - gpt-researcher: использует
ContextCompressor/VectorstoreCompressor/WrittenContentCompressorкак отдельную подсистему сжатия перед генерацией отчета. - open_deep_research: включает
compress_researchв цикл researcher и применяет trimming истории/поэтапное усечение findings при переполнении контекста.
Один вариант выполняет только экстрактивное сжатие, другой только абстрактивное суммирование. Гибридный вариант совмещает оба режима, переключаясь по фазе rollout и текущему budget.
Архитектура выделяет единую оркестрационную логику исследования и подключает к ней несколько интерфейсов доставки: CLI, REST, WebSocket и web-frontend. Все каналы используют единый core, а транспортные адаптеры отвечают только за прием запроса и потоковую выдачу статусов/результатов.
Паттерн решает проблему дублирования бизнес-логики между интерфейсами и обеспечивает одинаковое поведение при разных точках входа. Он особенно полезен для long-running задач, где нужен streaming прогресса и частичных артефактов.
- Один оркестратор для всех интерфейсов запуска.
- Транспортные адаптеры без дублирования логики.
- Streaming-first выдача логов/частичных результатов.
- Единый формат артефактов для UI и API.
flowchart TD
U[User / Client] --> CLI[CLI]
U --> API[REST API]
U --> WS[WebSocket]
U --> WEB[Web Frontend]
CLI --> ORCH[Core Orchestrator]
API --> ORCH
WS --> ORCH
WEB --> ORCH
ORCH --> PIPE[Research Pipeline]
PIPE --> OUT[Artifacts / Reports]
OUT --> WS
OUT --> API
OUT --> WEB
- gpt-researcher: единый
GPTResearcherиспользуется в CLI, FastAPI и WebSocket; Next.js фронтенд работает через proxy и получает streaming-выдачу. - local-deep-research: единый
ResearchService/AdvancedSearchSystemобслуживает web UI, REST API, Python API и SocketIO-стриминг прогресса. - smolagents: использует общий
MultiStepAgentruntime для CLI и Gradio UI, сохраняя единый оркестратор и формат артефактов. - zamalali-DeepGit: общий LangGraph-оркестратор запускается из CLI и Gradio UI; UI слой только стримит логи и рендерит HTML-таблицу.
Минимальный вариант ограничивается CLI+REST без streaming. В расширенном варианте добавляются WebSocket и фронтенд-обертки с прогрессивной выдачей отчета.
Архитектура вводит обязательную постобработку с фазами eval -> filter -> rewrite, где каждая фаза отвечает за отдельный класс дефектов. Сначала оценивается валидность и качество ответа, затем отбрасываются неподходящие траектории, затем корректируется reasoning-представление без разрушения структурного контракта.
Паттерн решает проблему шумных synthetic traces и уменьшает долю ошибочных/необучаемых примеров. Подходит для конвейеров, где генерация быстрая, но неоднородная по качеству.
- Quality gate встроен как обязательный, а не опциональный этап.
- Разделение ролей evaluator/filter/rewriter.
- Фильтрация по структуре, токенам, следам инструментов и качеству ответа.
- Поддержка нескольких evaluator-профилей под разные бенчмарки.
flowchart TD
RAW[Raw Trajectories] --> EVAL[Evaluate]
EVAL --> FILT[Filter]
FILT --> REW[Rewrite]
REW --> OUT[Training-ready Traces]
- AQ-MedAI-MedResearcher-R1: использует
PostProcessingPipelineсEvaluator,TrajectoryFilterиThinkRewriter; поддерживает профили оцениванияbase,gaia,browsecomp,medbrowsecomp. - Tencent-CognitiveKernel-Pro: использует inference-time
Evaluatorсretry/ensembleкак встроенный quality loop поверхAgentSession; это online-вариант quality gate без отдельной офлайн-фазы rewrite. - starpig1129-DATAGEN: реализует quality-review узел в LangGraph с возвратом к адресному агенту, далее
NoteAgentиRefinerс human review; это online gate внутри графа без отдельного eval/filter/rewrite контура.
Вариация с высоким recall может ослаблять фильтрацию и усиливать rewrite. В R1 сделан акцент на строгий отбор перед перезаписью и безопасный подвариант think-only rewrite, где переписывается только <think> при неизменном tool trace. Tencent показывает гибрид, где eval -> retry -> aggregate встроены в inference-контур на уровне шага/эпизода и работают как механизм повышения надежности до сохранения финальной траектории. DATAGEN демонстрирует адресный quality loop в графе: откат на конкретного агента и последующая human-gate проверка вместо офлайн-фазы.
Архитектура строит исполнение вокруг множества rollout-итераций и split/parallel планировщика, а не вокруг одного «идеального» прогона. Scheduler управляет пакетами задач, повторными попытками и записью промежуточных результатов как first-class механикой надежности.
Паттерн подходит для long-horizon research-задач с нестабильными внешними сервисами и высокой вариативностью траекторий. Он повышает устойчивость и throughput за счет управляемого параллелизма и итеративной агрегации результатов.
- Центральный scheduler для split/parallel rollout.
- Итеративная запись артефактов и чекпоинтов.
- Встроенные retry/fallback механики для внешних инструментов.
- Масштабирование через batch execution вместо одиночного синхронного цикла.
flowchart TD
IN[Dataset Split] --> SCH[Rollout Scheduler]
SCH --> R1[Rollout Workers]
R1 --> TOOLS[External Tools / APIs]
TOOLS --> R1
R1 --> BUF[Partial Outputs JSONL]
BUF --> AGG[Aggregation / Merge]
AGG --> OUT[Stable Batch Results]
- Alibaba-NLP-DeepResearch:
run_multi_react.pyреализует split/parallel rollout-оркестрацию с итеративной записью результатов и поддержкой больших batch-прогонов. - Tencent-CognitiveKernel-Pro: поддерживает step-level multi-run/aggregation внутри
CKAgent, где несколько кандидатов шага оцениваются и агрегируются перед продолжением траектории.
В lightweight-варианте используется только параллелизм без агрегации частичных rollout. В расширенном варианте (как у Alibaba) добавляются partial rollout стратегии и последующая компрессия/сведение рассуждений. Tencent демонстрирует микро-rollout вариант: агрегация выполняется не на уровне всего датасета, а на уровне отдельного агентного шага для локальной стабилизации решения.
Паттерн дополняет стандартный ReAct-контур браузерным execution-слоем через MCP/automation toolkit. Агент переходит от текстового retrieval к интерактивным действиям в веб-интерфейсах: навигации, кликам, чтению динамических страниц.
Архитектура полезна для задач, где нужная информация недоступна через простой search API и требует stateful browser-взаимодействия. Она расширяет покрытие сценариев без смены базового агентного контракта.
- Асинхронный browser loop как отдельный execution-канал.
- MCP-клиент и toolkit для управления браузерными действиями.
- Согласование browser-наблюдений с общим trace-форматом агента.
- Возможность смешивать browser steps и стандартные tools.
flowchart TD
AG[ReAct Agent] --> DEC[Action Decision]
DEC -->|web ui required| MCP[MCP Browser Client]
MCP --> BR[Browser Toolkit]
BR --> OBS[DOM / Page Observations]
OBS --> AG
DEC -->|api retrieval| TOOLS[Standard Tools]
TOOLS --> AG
- Alibaba-NLP-DeepResearch: в
NestBrowseподключает async browser loop,mcp_clientи browser toolkit как нативное расширение агентного цикла. - SkyworkAI-DeepResearchAgent: интегрирует
MCPAdapt/AsyncToolAdapterи локальный MCP server с JSON-реестром инструментов, совмещая MCP-канал сAutoBrowserUseToolи обычным tool layer в одном runtime.
Вариант «browser-only» редко масштабируется по стоимости. Практичный гибрид включает browser-MCP только для сложных страниц, оставляя обычные шаги на стандартном tool layer. В Skywork MCP используется шире browser-задач как first-class слой расширяемости, а не только как fallback для динамических страниц.
Архитектура строит промежуточный граф знаний и использует его как источник структуры для генерации обучающих задач и траекторий. Вместо прямой генерации из плоских текстовых промптов система сначала формирует связный набор сущностей, связей и подграфов, после чего порождает QA и reasoning-path.
Паттерн решает проблему управляемости сложности и покрытий при создании synthetic data для reasoning-моделей. Он особенно подходит для доменов, где важны multi-hop переходы, контролируемая композиция фактов и воспроизводимость генерации.
- Граф знаний как обязательный промежуточный слой между источниками и датасетом.
- Декомпозиция на build/link/sample/generate этапы.
- Переиспользование sampled subgraph для разных режимов QA-генерации.
- Явное отделение генерации структуры задачи от генерации финального ответа.
flowchart TD
SRC[Entities / Sources] --> BUILD[Graph Build]
BUILD --> LINK[Entity Linking]
LINK --> SAMPLE[Subgraph Sampling]
SAMPLE --> QA[QA + reasoning_path]
QA --> DATA[Synthetic Training Data]
- AQ-MedAI-MedResearcher-R1: реализует полный цикл через
GraphRagBuilderс поисковым расширением графа,EntityLinkerи топологическим семплингом перед генерацией QA.
Вариант с минимальным графом может ограничиваться только extraction/linking без продвинутого sampling. В R1 применен расширенный вариант с несколькими алгоритмами семплинга для управления сложностью задач.
Архитектура задает сложность reasoning-задач не только промптом, а формой sampled subgraph и правилами обхода. Сложность становится функцией топологии: длины цепей, числа мостов между кластерами, плотности связей и смешанных шаблонов.
Паттерн полезен для построения градуированных датасетов и контролируемых экспериментов по способности модели к multi-hop reasoning. Он снижает зависимость от ручной курации сложных вопросов.
- Набор алгоритмов семплинга с различной структурной нагрузкой.
- Явное маппирование «тип подграфа -> ожидаемая сложность».
- Возможность балансировать корпус по классам сложности.
- Использование reasoning_path как производной от структуры графа.
flowchart TD
KG[Knowledge Graph] --> S1[Chain Sampler]
KG --> S2[Bridge Sampler]
KG --> S3[Community Sampler]
S1 --> RP[reasoning_path]
S2 --> RP
S3 --> RP
RP --> QA[Difficulty-aware QA]
- AQ-MedAI-MedResearcher-R1: использует
EnhancedGraphSampler(augmented_chain,dual_core_bridge,community_core_path,max_chain,mixed) для явного контроля multi-hop сложности.
В гибридном варианте топологический контроль комбинируется с тематическим или временным контролем (фильтры домена/эпохи). В R1 основной управляющий сигнал именно топологический.
Паттерн разделяет оценку Deep Research-системы на два независимых контура, где каждый измеряет отдельную ось качества. Типичный разрез: «качество аналитического отчета» и «фактическая подтверждаемость утверждений по источникам». Контуры запускаются независимо и дают отдельные артефакты.
Архитектура решает проблему смешивания сигналов, когда один агрегированный score маскирует провал по важной метрике. Подходит для офлайн-бенчмарков, где нужна диагностичность и возможность донастраивать систему по отдельным аспектам качества.
- Два независимых evaluation-контура с разными входами и метриками.
- Общий orchestrator запускает контуры последовательно или параллельно.
- Раздельные output-контракты и директории результатов.
- Возможность отдельного перезапуска и отладки каждого контура.
flowchart TD
IN[Benchmark Inputs] --> ORCH[Run Orchestrator]
ORCH --> C1[Quality Contour]
ORCH --> C2[Factuality Contour]
C1 --> O1[results/quality/*]
C2 --> O2[results/factuality/*]
- Ayanami0730-deep_research_bench: реализует отдельные контуры
RACEиFACT; первый сравнивает отчеты с reference, второй валидирует citation-факты черезextract -> deduplicate -> scrape -> validate -> stat.
Частый гибрид добавляет третий контур для process-метрик (стоимость, latency, tool-efficiency). В минимальном варианте остаются только два ортогональных контура качества и фактичности.
Паттерн строит judge-оценку не на фиксированном rubric, а на критериях, генерируемых под конкретную задачу. Оценка выполняется в относительном режиме, где target сравнивается с reference в одном акте судейства, а итог нормализуется как функция двух оценок.
Паттерн снижает калибровочный сдвиг между отдельными вызовами judge-модели и улучшает переносимость между темами запросов. Особенно полезен для heterogeneous benchmark-наборов, где статический набор критериев системно теряет релевантность.
- Task-specific генерация критериев и весов перед judge-оценкой.
- Relative scoring (
targetпротивreference) вместо абсолютного single-score. - Многократный sampling критериев/весов с усреднением для стабилизации.
- Поддержка fail-soft парсинга judge-ответов в структурированный формат.
flowchart TD
Q[Task Prompt] --> CG[Criteria Generator]
CG --> RW[Weight Averaging]
T[Target Report] --> J[LLM Judge]
R[Reference Report] --> J
RW --> J
J --> P[Robust JSON Parse]
P --> S[Relative Score Calculator]
- Ayanami0730-deep_research_bench: генерирует критерии и веса под задачу, усредняет веса по нескольким sampling и считает итог через relative нормализацию
target/(target+reference).
Вместо полного relative режима может использоваться pairwise rank без числовой нормализации. Также встречается гибрид с фиксированным «core rubric» и динамическими доменными критериями как дополнительным слоем.
Паттерн организует офлайн-обработку как цепочку файловых стадий с append-friendly артефактами и строгим идентификатором записи. Каждый этап читает входные JSONL/текстовые файлы, записывает промежуточный результат и может быть безопасно перезапущен без потери уже обработанных элементов.
Паттерн решает проблему долгих и хрупких batch-прогонов при внешних API-зависимостях. Он обеспечивает воспроизводимость, контроль прогресса и операционную устойчивость при сетевых или форматных сбоях.
- Файловые контракты между стадиями вместо in-memory orchestration.
- Resume/skip логика по
idкак механизм идемпотентности. - Промежуточные артефакты как first-class чекпоинты.
- Retry/fallback в API и парсерах для fail-soft поведения.
flowchart TD
IN[Input JSONL] --> ST1[Stage N]
ST1 --> ART1[Intermediate Artifact]
ART1 --> CK[Processed ID Index]
CK -->|resume| ST1
ART1 --> ST2[Stage N+1]
ST2 --> OUT[Final Result Files]
- Ayanami0730-deep_research_bench: строит RACE/FACT как цепочки файловых шагов с
resumeпоid, промежуточными JSONL-артефактами вresults/*и fail-soft обработкой API/JSON-ответов.
Гибридный вариант совмещает file-checkpoints с очередями задач и worker-пулами. В lightweight-режиме достаточно последовательного CLI-скрипта с limit/force/resume флагами.