技术教程 · 阅读约 6 分钟

用 Claude 帮你审 MRI 报告?我用 30 行代码复刻了 HN 热榜第一的实验

用 Claude 帮你审 MRI 报告?我用 30 行代码复刻了 HN 热榜第一的实验

昨天 Hacker News 热榜出现了一件有点魔幻的事:一个人把自己的 MRI 报告扔给 Claude,让它给"第二意见"——帖子冲到了榜首,评论区炸了。

有人觉得这很危险,有人觉得这是未来医疗的雏形。但作为开发者,我第一反应是:这个 prompt 是怎么写的?能不能做成一个通用的"文档深度分析"工具?

花了一个下午,我用 Python 写了一个可以本地跑的版本,不止能分析医疗报告,任何需要"专家二次确认"的文档都能用——合同、代码审查报告、财务分析……


核心思路:让模型扮演"第二意见专家"

直接问 AI "这份报告怎么样" 效果很差。有效的 prompt 需要做三件事:

1. 给模型一个角色:明确它是哪个领域的专家

2. 结构化输出:要求它按固定格式回答,方便阅读

3. 强制它"挑刺":让它专门找原文里的模糊表述或潜在风险点

这三点组合起来,输出质量会有质变。


完整代码(可直接运行)


#!/usr/bin/env python3

"""

second_opinion.py

用 Claude 对任意文档给出"第二专家意见"

依赖:pip install openai

"""



from openai import OpenAI



# 无量 API 兼容 OpenAI 格式,改 base_url 就行

client = OpenAI(

    api_key="your_api_key_here",  # 去 api2everything.xyz 注册免费领 ¥1

    base_url="https://api2everything.xyz/v1"

)



SYSTEM_PROMPT = """你是一位拥有 20 年经验的资深顾问,擅长对专业文档进行深度审查。

你的任务是对用户提供的文档给出独立的"第二意见"。



请严格按以下结构输出:



## 📋 文档摘要

用 2-3 句话概括文档核心内容。



## ✅ 关键发现

列出文档中最重要的 3-5 个结论或数据点。



## ⚠️ 值得关注的点

找出文档中:

- 表述模糊或存在歧义的地方

- 数据异常或前后矛盾的地方

- 缺失但本应存在的信息



## 💡 建议的后续步骤

给出 2-3 条具体可执行的建议。



## 🔍 置信度评估

对以上分析的可靠程度打分(1-10),并说明原因。"""





def get_second_opinion(document_text: str, domain: str = "通用") -> str:

    """

    对文档获取第二意见



    Args:

        document_text: 文档内容

        domain: 文档领域(如"医疗"、"法律"、"财务"、"代码")



    Returns:

        结构化的分析报告

    """

    user_prompt = f"""

请以 {domain} 领域专家的视角,对以下文档给出第二意见:



---

{document_text}

---



请严格按照要求的格式输出分析报告。

"""



    response = client.chat.completions.create(

        model="claude-sonnet-4-5",  # 也可以换成 gpt-4o 或 gemini-2.0-flash

        messages=[

            {"role": "system", "content": SYSTEM_PROMPT},

            {"role": "user", "content": user_prompt}

        ],

        temperature=0.3,  # 分析类任务用低温度,减少"幻觉"

        max_tokens=2000

    )



    return response.choices[0].message.content





def main():

    # 示例:分析一段模拟的体检报告

    sample_report = """

    患者:张三,男,35岁

    检查日期:2025年7月



    影像所见:

    T2加权像显示L4-L5椎间盘信号减低,后缘轻度突出,硬膜囊受压不明显。

    L5-S1椎间盘轻度退变,无明显突出。

    各椎体未见明显骨质破坏及异常信号。



    印象:

    1. L4-L5椎间盘轻度膨出

    2. L5-S1椎间盘退变



    建议:结合临床,必要时进一步检查。

    """



    print("正在分析文档,请稍候...\n")

    result = get_second_opinion(sample_report, domain="医疗影像")

    print(result)





if __name__ == "__main__":

    main()


运行效果

对上面那份模拟报告,Claude 会输出类似这样的内容:


## ⚠️ 值得关注的点

- "硬膜囊受压不明显"表述模糊,"不明显"不等于"没有",

  需要追问具体压迫程度的量化数据

- 报告未提及患者是否有症状,影像结论与临床症状的对应关系缺失

- "必要时进一步检查"过于宽泛,缺乏具体检查建议



## 💡 建议的后续步骤

1. 要求放射科医生提供 L4-L5 突出距离的毫米级测量数据

2. 结合症状(有无下肢放射痛、麻木)判断是否需要肌电图检查

3. 6个月后复查对比,评估进展速度

这个输出质量,比很多"直接问 AI"的方式要高一个档次。


几个实用变体

稍微改一下 domain 参数和文档内容,这套框架可以直接复用:

| 场景 | domain 参数 | 文档类型 |

|------|------------|---------|

| 合同审查 | "法律合同" | 租房合同、劳动合同 |

| 代码 review | "软件工程" | PR 描述、架构设计文档 |

| 财务分析 | "财务审计" | 年报、财务报表 |

| 学术论文 | "学术审稿" | 论文草稿 |


关于模型选择和成本

这个脚本里用的是 claude-sonnet-4-5,分析一份 500 字的报告大约消耗 1500 tokens,正常调用官方 API 差不多要 ¥0.05 左右一次。

如果你要批量处理,或者只是日常学习测试,可以用 无量 API——同样的 Claude / GPT-4o / Gemini,比官方便宜 60% 以上,国内直连不用梯子,注册还送 ¥1 余额。上面代码改一行 base_url 就能用,格式完全兼容。


最后说两句

HN 那个帖子里,有人说"把医疗报告给 AI 看太危险了"。我觉得这个担忧有道理,但方向搞反了——危险的不是 AI 给意见,而是不懂如何使用 AI 的意见。

一个经过训练的用法(结构化输出 + 明确置信度 + 要求说明局限性)和直接问"这个报告正常吗",得到的结果差距极大。

工具是中性的,会不会用才是关键。

代码已经可以跑了,有问题或者有好的改进思路,评论区见。觉得有用的话点个赞,后续还会写更多这类"把热点变成可运行代码"的文章。


🔗 无量 API 注册链接(国内直连,改一行 base_url 即用):
https://api2everything.xyz/?utm_source=zhihu&utm_medium=article&utm_campaign=daily&aff=wqUb