Модуль md.2 · Урок 1
Сквозной пайплайн: Retriever, Reasoner, Tools, Report
Чему вы научитесь
- Понимать роль каждого из четырёх агентов в пайплайне agentic-RAG
- Читать сквозной поток данных от вопроса до отчёта
- Собирать минимальный учебный пайплайн на Python
- Встраивать дисклеймер в финальный отчёт программно
Из чего состоит пайплайн
MedicalAgentX (открытое демо agentic-RAG) показывает наглядную архитектуру: четыре агента, каждый со своей узкой ролью, работают по очереди. Это удобный учебный каркас — каждую роль можно понять и заменить отдельно.
flowchart LR
Q["PDF-кейс\n+ вопрос"] --> R["Retriever\nпоиск похожего"]
R --> RE["Reasoner\nрассуждение"]
RE --> T["ToolsConsultant\nвызов мед-API"]
T --> RG["ReportGenerator\nотчёт + дисклеймер"]
style R fill:#eef2ff,stroke:#4400FF
style T fill:#fef3c7,stroke:#d97706
style RG fill:#ecfdf5,stroke:#059669
| Агент | Задача | Чем опирается на источники |
|---|---|---|
| Retriever | Найти похожие случаи и релевантные фрагменты | Векторный поиск по базе (FAISS) |
| Reasoner | Построить рассуждение и гипотезы | Только по найденным фрагментам |
| ToolsConsultant | Проверить факты через реальные инструменты | Вызов медицинских API (лекарства, онтологии) |
| ReportGenerator | Собрать структурированный отчёт | Цитаты + обязательный дисклеймер |
Почему это безопасная зона
Каждый агент опирается не на «память» модели, а на найденные документы и проверенные инструменты. Reasoner рассуждает по фрагментам от Retriever, ToolsConsultant сверяет факты через API, а ReportGenerator обязан указать источники. Это прямое применение всего, что мы прошли в модуле о достоверности.
Родственный сценарий: ambient-скрайб
Тот же принцип «структурированный черновик, который проверяет и подписывает врач» лежит в основе самого массового сценария медицинского AI — ambient-документации (скрайба). На вход идёт не PDF-кейс, а транскрипт живого приёма; на выходе — черновик заметки в формате SOAP (Subjective — жалобы, Objective — осмотр и данные, Assessment — оценка, Plan — план).
Меняется источник, но рамка та же: ReportGenerator собирает черновик, а финальную заметку правит и подписывает врач. Именно на этом сценарии построены западные DAX, Abridge и Glass — они снимают рутину документации, но не принимают клинических решений.
Минимальный учебный каркас
Ниже — скелет пайплайна без привязки к конкретному фреймворку. Каждый шаг возвращает данные следующему. Реальный MedicalAgentX использует оркестрацию EvoAgentX, но логика та же.
def pipeline(case_text: str, question: str) -> str:
# 1. Retriever: похожие фрагменты из базы
chunks = retriever.search(question, k=5)
# 2. Reasoner: гипотезы строго по найденному
reasoning = reasoner.run(question, context=chunks)
# 3. ToolsConsultant: проверка фактов через мед-инструменты
checks = tools.verify(reasoning.entities) # препараты, взаимодействия
# 4. ReportGenerator: отчёт с цитатами и дисклеймером
report = report_gen.build(reasoning, checks, sources=chunks)
return finalize(report)
def finalize(report: str) -> str:
disclaimer = ("Учебный материал, не медицинская консультация. "
"Решение принимает врач. Только для справки специалисту.")
return f"{report}\n\n---\n{disclaimer}"
Как запускать по шагам
Подготовьте базу. Несколько обезличенных или синтетических PDF-кейсов (подробно — в следующем уроке про индексацию).
Проверьте Retriever отдельно. Убедитесь, что на тестовый вопрос он возвращает осмысленные фрагменты, а не случайные.
Прогоните полный пайплайн. Сверьте, что в отчёте есть цитаты на источники и дисклеймер в конце.
Вычитайте отчёт. Откройте каждую цитату и проверьте, что она подтверждает тезис.
Что дальше
Пайплайн нужен база. Следующий урок — как индексировать медицинские PDF: md.2/02.