Skip to main content
Glama

MEVA

医学证据验证代理

功能: MEVA 使用确定性(非 AI)验证器,评估 AI 生成的病历声明是否基于检索到的合成 FHIR 证据——不提供诊断、不提供治疗建议、不涉及真实患者数据。

🧪 在线沙箱

在浏览器中试用 MEVA——无需 Ollama、无需 API 密钥、无需安装。

▶ 打开在线沙箱

  • 仅含合成数据 — 21 个虚构的、由 Synthea 生成的患者

  • 确定性验证器 — 每个结果均来自纯 Python 证据匹配,而非模型的判断

  • 公共沙箱中不运行 AI 模型 — 您自行构建声明,MEVA 会将其与实际记录的(合成)数据进行核对

试用在线沙箱 · 快速开始 · 基准测试方法 · 贡献

MEVA 不是医疗聊天机器人、诊断 AI、临床决策支持工具、治疗推荐系统或医疗设备。 它未经临床验证。所有患者数据均为 100% 合成数据。完整声明请参阅下方的范围与安全以及 docs/safety-and-scope.md

Related MCP server: MediLinkAI

查看 MEVA 的实际效果

来自在线托管沙箱的截图——仅含合成数据,不构成医疗建议,且托管沙箱中不运行 AI 模型(每个结果均来自 MEVA 的确定性验证器,而非模型的判断)。

引导模式

引导模式

引导模式——选择一个虚构的患者,使用简单的英语工作流来验证声明。

基于证据的验证

基于证据的验证

MEVA 会将声明与记录的合成 FHIR 证据进行核对,并返回 SUPPORTED、CONTRADICTED、UNSUPPORTED 或 UNVERIFIABLE。

高级模式

高级模式

高级模式——面向开发者、研究人员和贡献者的技术证据浏览器和结构化声明控件。

为何存在 MEVA

本地 AI 代理可以调用工具、检索真实数据并生成结构化的“答案”——但没有任何机制强制该结构化答案与代理检索到的证据实际匹配。MEVA 直接衡量这一差距,其验证器从不信任模型对自身正确性的自我报告。

架构

flowchart TD
    A[Synthetic Synthea FHIR data] --> B[MEVA FHIR layer]
    B --> C[MCP tools]
    C --> D[Local AI model - via Ollama]
    D --> E[Natural-language answer]
    E --> F[Claim extraction]
    F --> G[Deterministic evidence verifier]
    G --> H[Benchmark / report]

MEVA 支持两种评估模式,分别报告,绝不合成为一个分数(参见 docs/decoupled-evaluation.md):

  • END_TO_END —— 被测模型回答一个问题,并在单次运行中将自身的答案编码为 MEVA 的结构化 MedicalClaim 模式。

  • DECOUPLED —— 被测模型仅以自然语言作答;一个单独的固定提取器模型将保存的文本转换为结构化声明,并以相同方式进行验证。这便将“模型是否知道正确答案”与“模型是否正确格式化了 JSON”分离开来。

在这两种模式下,最终验证步骤——将声明与实际证据进行匹配——始终是纯粹的、确定性的 Python 代码。任何 LLM 都不会评判自身(或其他模型)的正确性。

快速开始

git clone https://github.com/Tanz2024/meva-health-ai
cd meva-health-ai

python3 -m venv .venv
source .venv/bin/activate

pip install -e .

pytest

MEVA 设计为在此仓库的克隆副本内运行(如上所述——先 git clone,再进行可编辑安装),而非作为从其他地方安装的独立软件包。其合成 FHIR 夹具(data/synthetic/synthea/)和基准定义(benchmarks/)是从仓库相对路径读取的,而不是作为可安装的包数据捆绑在一起的——在仓库检出目录之外通过 pip install 安装构建的 wheel/sdist 将无法获得患者数据。这是当前有意的范围(这是一个研究/工程仓库,而非分发库)——如果将来发生变化,请参阅 docs/publishing-checklist.md

这会运行完整的离线测试套件(无需 AI 模型——参见无 AI 即可运行的内容)。

可选——本地 AI:

ollama pull qwen3:4b
python3 examples/verify_local.py

更多可运行脚本请参阅 examples/,有关 MEVA 如何与 Ollama 通信,请参阅 docs/local-ai.md

无 AI 即可运行的内容(无需 Ollama)

MEVA 的大部分功能在完全不需要 AI 模型的情况下即可运行:

  • FHIR 解析(src/meva/fhir/

  • 确定性证据验证(src/meva/verification/

  • 基准数据集加载与验证(meva.benchmark.validator

  • 完整的离线测试套件(pytest

  • 验证器挑战示例(examples/verify_contradiction_demo.py)——这些示例使用手写的错误声明测试 MEVA 自身的验证逻辑,不涉及实时模型

仅在真正运行本地模型推理examples/ask_local.pyexamples/chat_local.py)或模型辅助声明提取(examples/run_decoupled_pilot.pyrun_decoupled_full.pyrun_extractor_fidelity.py)时才需要 Ollama。

合成数据

MEVA 的公共患者夹具(data/synthetic/synthea/patient-01.jsonpatient-21.json)由本项目在本地生成,使用获得 Apache-2.0 许可的官方 Synthea 生成器(固定于标签 v3.4.0),并使用固定、有文档记录且可复现的种子。任何位置都不包含真实患者数据。完整的生成细节(确切命令、种子以及每个文件的 SHA-256 哈希值)请参见 data/synthetic/synthea/PROVENANCE.md。完整情况(包括为什么早期一组 18 名患者(用于 Stage 8A)被替换——这组早期患者是从一个未声明许可证的仓库复制的,已不再属于公共数据集)请参阅 docs/synthetic-data.md(另见 docs/historical-sample-data-provenance.md)。

基准测试结果

MEVA 有两个已记录的基准数据集,二者绝不能混为一谈:

公共可复现数据集:benchmark v0.4 ——完全基于上述本地生成的 Apache-2.0 夹具构建(53 个病例,16 位唯一患者;参见 benchmarks/v0.4/manifest.json)。v0.4 模型对比结果待定 ——尚未对 v0.4 进行过 qwen3:4b/llama3.2:3b 运行。

历史开发结果:benchmark v0.3 ——以下是完整的 qwen3:4b 与 llama3.2:3b 对比结果。该结果是在现已移除的旧患者集(见上文)上测得的——它仍然是方法论和研究结论的有效历史开发记录,但不是当前公共 v0.4 数据集上的结果,二者不得直接比较。完整报告:docs/baseline-results-v0.3.md(下表中的数字使用了修正后的 Stage 7C2.1 可验证覆盖率公式——修正历史请参阅该文档;未修正的原始数字也同时予以披露,并未隐藏)。

不宣布获胜者。 请将事实依据分数与可验证覆盖率结合阅读——基于极少数可核查声明计算出的高事实依据分数,看起来会比实际更好。

检索 + END_TO_END 结构化输出指标(v0.3,历史)

qwen3:4b

llama3.2:3b

工具召回率

1.000

0.981

工具精确率

1.000

1.000

工具精确匹配

1.000

0.962

证据召回率

0.810

0.738

E2E 结构化有效性

0.917

0.087

E2E 可验证覆盖率

0.656

0.120

E2E 事实依据分数

83%

70%

DECOUPLED 评估(v0.3,历史;单独的固定 qwen3:4b 提取器)

qwen3:4b

llama3.2:3b

DECOUPLED 可验证覆盖率

0.990

0.987

DECOUPLED 事实依据分数

89%

80%

DECOUPLED 评估使用 qwen3:4b 作为固定的声明提取器,处理两个模型保存的答案,包括 qwen3:4b 自身的——这引入了潜在的提取器特定偏差,该偏差已在 docs/decoupled-evaluation.md 中明确记录。END_TO_END 和 DECOUPLED 回答的是不同的问题,绝不能解读为“模型变得更好了”。

提取器验证——提取器并非完美

开发集(10 个夹具)

留出集(14 个未见夹具)

精确率

1.000

0.929

召回率

1.000

0.813

F1

1.000

0.867

精确声明集匹配

1.000

0.857

阴性声明保留

1.000

1.000

属性准确率

1.000

0.750

不要将上文 ~99% 的 DECOUPLED 覆盖率数字解读为“99% 的提取准确率”。 覆盖率衡量的是验证器能够检查多少提取器的输出;这里的留出集数字则衡量该输出是否真正与源回答所说的匹配。

观察类别相关发现

两个模型在观察类别问题上的得分都异常低:qwen3:4b 为 20%,llama3.2:3b 为 0% 事实依据分数(每组 n=10 个案例)。Stage 7D2.2 使用 MEVA 的真实 FHIR 数据和工具层对每个观察案例进行了独立审计,发现没有任何基础设施或评估缺陷会使这些结果无效——20 个模型-案例对中有 18 个是真实的模型事实依据错误。完整审计:docs/observation-audit.md这描述的是基准测试行为,而非临床性能。

试用 MEVA(仅确定性验证,无 AI 模型)

探索 MEVA 确定性验证器针对 21 个公共 v0.4 合成患者的四种方式——均不需要 AI 模型

公共托管沙箱(无需安装): 打开在线沙箱

本地浏览器沙箱:

pip install -e ".[playground]"
streamlit run streamlit_app.py

本地 CLI 试验场:

python3 examples/playground.py demo
python3 examples/playground.py list-patients
python3 examples/playground.py verify --patient-id <id> --category allergy --assertion present --value "Peanut"

完整的本地 AI 模式(可选,需要 Ollama——请参阅下文无 AI 即可运行的内容)。

这四种方式共享同一个服务层(meva.playground),并调用 MEVA 真实、未修改的验证器——您自行陈述声明(类别/断言/值);MEVA 会将其与实际记录的数据进行核对,并返回 SUPPORTED/CONTRADICTED/UNSUPPORTED/UNVERIFIABLE 及完整的溯源信息。完整细节(包括四种方式的区别):docs/playground.md

有关托管沙箱的截图(引导模式、验证结果和高级模式),请参阅本 README 顶部的查看 MEVA 的实际效果

文档

文档

内容

docs/safety-and-scope.md

MEVA 是什么、不是什么 — 请先阅读

docs/synthetic-data.md

合成患者数据的来源

docs/mcp-server.md

MCP 工具层

docs/local-ai.md

MEVA 如何与本地 Ollama 模型通信

docs/evidence-verification.md

确定性验证器

docs/reproducibility.md

可复现性设置能/不能保证什么

docs/benchmarking.md

基准测试引擎

docs/benchmark-dataset.md

数据集构建与验证

docs/model-comparison.md

多模型比较方法论

docs/decoupled-evaluation.md

为什么 END_TO_END 和 DECOUPLED 都存在

docs/claim-extraction-contract.md

声明提取模式契约

docs/observation-audit.md

观察类别合理性审计

docs/baseline-results-v0.3.md

完整基准测试 v0.3 报告(历史)

data/synthetic/synthea/PROVENANCE.md

公共夹具生成来源

docs/historical-sample-data-provenance.md

前患者数据集被替换的原因/方式

docs/playground.md

公共确定性验证器游乐场(CLI)

范围与安全性

MEVA 使用仅合成(Synthea 生成)的患者数据 — 不包含也不应贡献任何真实患者数据。它不提供诊断或治疗建议,并且未经临床验证。其指标(Evidence Grounding Score、Verifiable Claim Coverage 等)是工程/研究基准指标 — 它们衡量模型的声明是否与检索到的证据匹配,而非医学正确性、诊断准确性或患者安全。所有 AI 推理均仅限本地,通过 Ollama 进行 — MEVA 从不调用付费或云端 AI API。完整声明:docs/safety-and-scope.md

贡献

  1. 选择一个 issue(或提出一个)

  2. Fork 该仓库

  3. 创建一个分支

  4. 进行你的修改

  5. 运行 pytest

  6. 打开一个 pull request

完整的设置、测试细节,以及如何添加 FHIR 支持、基准测试用例(仅限合成数据)、验证器测试或模型适配器:CONTRIBUTING.md。另请阅读 CODE_OF_CONDUCT.md

寻找第一个贡献?

查看开放的 GitHub issues: https://github.com/Tanz2024/meva-health-ai/issues

一个好的起点是标记为 good first issuehelp wanted 的 issue。

更多建议的贡献领域请参阅 docs/contributor-issues.md,设置和提交指南请参阅 CONTRIBUTING.md

许可证

MEVA 的源代码和本地生成的合成数据均依据 Apache License 2.0 许可。第三方依赖项和模型拥有各自的许可证 — 请参阅 THIRD_PARTY_NOTICES.md。早期一个关于公开再分发的许可问题(一个从无声明许可证的仓库复制的前患者数据集)已在 Stage 8A.1 中通过将该数据替换为本地生成的 Apache-2.0 夹具而解决 — 完整历史请参阅 docs/historical-sample-data-provenance.md

引用

关于 MEVA v0.1.0 的引用元数据,请参阅 CITATION.cff

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    C
    maintenance
    A clean-room SHARP-on-MCP compliant FHIR R4 MCP server that enables AI agents to interact with any FHIR R4 endpoint using SHARP context headers, without server-side OAuth. It provides clinical tools, lab results, imaging, and interactive MCP-UI dashboards.
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Clinical decision-support MCP server that lets AI agents reason over live FHIR patient data for medication review, appointment scheduling, and care gap identification.
    7,813
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    A neutral verification court for AI tools that ranks MCP servers by executing them against ground truth and recording results. Enables agents to consult execution records, contribute verdicts, and challenge claims.
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

  • Deterministic fact verification for AI agents — checksums & curated data, not guesses.

  • Read-only MCP over an agentic SLR workspace with per-claim citation verification

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tanz2024/meva-health-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server