Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
AI 기반 의료 허위 정보 탐지기, VeriTrust가 의료 주장 하나하나를 검증하고 근거 논문을 인용한다
Detector de noticias falsas de salud con IA. VeriTrust verifica afirmaciones médicas una a una y cita la literatura científica en que se basa (PubMed, Europe PMC).
건강Python · TypeScriptGitHub @ldelvillar가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Medical misinformation detection system powered by a multi-agent AI system
README 전체를 불러오는 중입니다.
README 전문 보기 ↗AI-powered medical misinformation detection. Users submit a piece of health-related content — pasted text, a URL, or a document (PDF/TXT/MD) — and VeriTrust returns an evidence-grounded verdict: Verdadero (true), Falso (false), Parcialmente falso (partly false), or Dudoso (uncertain), with a confidence score, a per-claim breakdown, the biomedical sources consulted, and a medical report explaining the verdict in plain Spanish.
Health misinformation spreads faster than experts can debunk it. VeriTrust automates the first pass of that debunking: it extracts the verifiable medical claims from a text, cross-checks each one against real biomedical literature (Europe PMC, PubMed, openFDA, AEMPS CIMA), derives a verdict from the stance of that literature, and writes up the result — with the honesty to say "Dudoso" and lower its confidence when the literature is thin, contradictory, or silent.
Analysis is asynchronous: the pipeline chains several LLM calls and literature lookups, so it runs in a background worker instead of the HTTP request. POST /analysis returns a pending id immediately; an arq worker picks the job off Redis, runs the LangGraph pipeline, and the frontend polls GET /analysis/{id} every 2 s (showing the live pipeline stage) until the verdict is ready.
flowchart TB
UI["Next.js frontend<br/>(Clerk auth)"]
subgraph WEB["Web process — FastAPI"]
API["POST /analysis → insert 'pending' row, enqueue job<br/>GET /analysis/{id} → status + result"]
end
PG[("PostgreSQL<br/>analyses, claims, sources")]
REDIS[("Redis<br/>arq job queue")]
subgraph WORKER["Worker process — arq (python -m app.worker)"]
PREP["Prepare input<br/>URL / file text extraction"]
subgraph GRAPH["LangGraph pipeline"]
EX["1 · Extractor<br/>claims + search queries + drug terms"]
TR["2 · Translator<br/>clinical English, one batched call"]
IN["3 · Investigator<br/>evidence retrieval + relevance judge"]
HE["4 · Health Expert<br/>evidence verdict + medical report"]
EX --> TR --> IN --> HE
end
PREP --> EX
end
LLM["LLM provider<br/>Mistral API (compose) · Ollama (local default)"]
LIT["Europe PMC · PubMed · openFDA · AEMPS CIMA"]
UI -- "JWT" --> API
API --> PG
API -- "enqueue" --> REDIS
REDIS --> PREP
EX -.-> LLM
TR -.-> LLM
IN -.-> LLM
HE -.-> LLM
IN --> LIT
HE -- "verdict · claims · sources · report" --> PG
UI -- "poll every 2s" --> API
| Agent | Model | What it does |
|---|---|---|
| Extractor | llama3 | Extracts the verifiable medical claims from the input text, plus an English boolean search query and the drug name (if any) for each claim. Structured output. |
| Translator | translategemma | Translates all claims to clinical English in a single batched call — the literature sources work in English. |
| Investigator | ministral-3:14b¹ | Queries Europe PMC, PubMed, and openFDA for every claim in parallel — plus AEMPS CIMA when the claim names a drug. An LLM judge filters the hits for relevance and tags each source's stance (supports / contradicts). Computes evidence coverage: the share of claims with relevant literature. |
| Health Expert | llama3.2 | Derives each claim's fake probability from the stance of the retrieved literature (Laplace-smoothed, so thin evidence never reaches certainty), and bands each claim into true, false or uncertain — a band around the decision threshold maps to uncertain, and a claim no source speaks to is uncertain by construction, never false. The overall verdict follows from the claims' verdicts: true and false claims together make it partly false. Then it writes the medical report with llama3.2, grounded in the retrieved sources. |
¹ The ministral-3:14b judge needs ~11 GB loaded, ideally on a 16 GB GPU.
Three guardrails temper the raw verdict (app/core/verdict.py):
/r/{token} page per analysis, revocable.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗