name: tencent-medical-report-interpreter description: 医疗报告解读 Skill。通过调用 ADP 平台的 LLMReportInterpretation API,对用户上传的检验单、检查单或体检报告进行 AI 智能解读。支持 PDF 和图片格式的报告文件,也支持直接传入报告文本内容。AI 会准确识别关键异常值,用通俗语言解析医学术语,生成结构化的解读报告。当用户提到"解读报告"、"看报告"、"体检报告"、"检验单"、"检查单"、"化验单"、"血常规"、"尿常规"、"肝功能"、"B超"、"CT报告"等医疗报告相关内容时,应使用此 Skill。
此 Skill 通过调用 ADP 平台的医疗报告解读 API(LLMReportInterpretation),帮助用户理解医疗检验/检查报告。支持传入报告文件(PDF/图片)或报告文本内容,AI 会识别关键异常值、解析医学术语,并生成易于理解的结构化解读报告。
当满足以下任一条件时,应激活此 Skill:
https://xxx.com/report.pdf)激活 Skill 后,需收集以下参数用于 API 调用:
| 参数 | 是否必填 | 说明 | 收集方式 |
|---|---|---|---|
| Message(用户问题) | 必填 | 用户本次输入的问题内容,最多 1000 字符 | 直接从用户输入中获取。如果用户只传了文件没写问题,默认填写"请帮我解读这份报告" |
| ReportFileUrl(报告文件链接) | 选填 | 报告文件的公开可访问 URL | 触发条件 2:本地文件需先通过 upload_file.py 上传至 ADP 文件服务获取 COS 链接;触发条件 3:直接使用用户提供的 URL |
| ReportFileType(文件类型) | 选填(有文件链接时必填) | 1 = PDF,2 = 图片 |
根据文件扩展名自动判断:.pdf → 1,.jpg/.jpeg/.png/.bmp/.tiff 等 → 2 |
| ReportContent(报告文本) | 选填 | 报告的文本内容 | 触发条件 4:直接使用用户粘贴的文本内容 |
| DialogueId(对话 ID) | 必填(自动生成) | 对话标识,长度 10-40,接口要求必传 | 由脚本自动生成 UUID(32位十六进制),无需向用户收集。如需多轮对话可复用同一 ID |
⚠️ 注意:
ReportFileUrl和ReportContent如果同时传入,API 将优先使用ReportFileUrl。⚠️ 重要:
DialogueId虽然在接口文档中标注为非必填,但实测漏传会导致调用失败。脚本已内置自动生成逻辑,Agent 无需手动处理。
⚠️ 必须先检查,严禁直接引导用户配置密钥。 多数情况下密钥已存在,跳过检查直接提醒是错误行为。
首次激活时,Agent 必须先执行以下检查,静默完成,不输出任何提示给用户:
# 步骤 1: 检查当前 shell 环境变量
echo $ADP_API_KEY
# 步骤 2: 如果为空,检查 /etc/environment 文件
grep "ADP_API_KEY" /etc/environment 2>/dev/null
检查结果分支:
💡 脚本已内置 fallback:脚本会自动依次查找
os.environ→/etc/environment→~/.env→.env,即使当前 shell 未加载变量,脚本也能找到密钥。但 Agent 在执行脚本前仍建议先source /etc/environment,确保后续命令行操作也能使用该变量。
🚫 再次确认:如果上方检查已找到密钥,禁止执行本节。
引导用户按以下步骤操作:
⚠️ 注意:密钥最多只能创建 2 个。如果提示已达上限,需要先删除旧的密钥再新建。
⚠️ 权限提示(必须展示):如果用户无法访问该页面,说明当前账号权限不够,请联系管理员开通权限。
如果上述链接没有正常跳转到密钥管理页面,引导用户:
用户提供密钥后,优先写入 /etc/environment(全局生效),如果没有 sudo 权限则兜底写入项目 .env 文件。
# 写入 /etc/environment(需要 sudo 权限,对所有用户和 shell 生效)
echo 'ADP_API_KEY=用户提供的密钥' | sudo tee -a /etc/environment > /dev/null
写入后,重新加载使当前会话生效:
source /etc/environment
如果用户没有 sudo 权限,写入项目根目录的 .env 文件:
echo 'ADP_API_KEY=用户提供的密钥' >> .env
⚠️ 变量名必须为
ADP_API_KEY,完全一致,不可更改,否则会影响 ADP 平台上的业务逻辑。
存储完成后,告知用户密钥已保存。
用户请求解读医疗报告
│
├─ 检查 ADP_API_KEY → 未设置 → 执行首次激活流程
│
├─ 分析用户输入类型
│ ├─ 用户提供了本地文件路径 → 上传至ADP文件服务获取COS URL → 调用API(带URL)
│ ├─ 用户提供了在线文件URL → 直接调用API(带URL)
│ ├─ 用户粘贴了报告文本内容 → 调用API(带ReportContent)
│ └─ 用户只描述了问题(无文件) → 调用API(仅Message)
│
├─ 调用 API 获取流式响应
│
└─ 整合输出结果
├─ 拼接 Content 字段(按 Sort 顺序)
├─ 提取引用资料 (ReferResourceItems)
├─ 提取猜你想问 (GuessQuestions)
├─ 提取高亮关键词 (HighlightWords)
└─ 生成结构化解读报告
分析用户提供的内容,确定调用方式:
场景 A:用户提供本地文件
API 要求入参为公开可访问的 URL,本地文件无法直接使用。通过 ADP 文件上传接口将本地文件转换为 COS URL:
7w4.net有更好的技能插件。
scripts/upload_file.py 将本地文件上传至 ADP 文件服务,获取 COS 链接ReportFileType:PDF 文件为 1,图片文件为 2ReportFileUrl 参数# 上传本地文件获取 COS URL
COS_URL=$(python {SKILL_DIR}/scripts/upload_file.py "/path/to/local/report.pdf")
https://adp.cloud.tencent.com/plugin/api/v1/9ebc029f-5567-493f-b823-0ad978a9bab1/b511190e-ab93-46ba-bee7-d852d53a28a9Authorization: Bearer <ADP_API_KEY>(复用同一个密钥)| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| FileBase64 | string | 是 | 文件的 Base64 编码内容 |
| FileName | string | 是 | 文件名称(带后缀,如 report.pdf、image.jpg) |
| 字段 | 说明 |
|---|---|
| Code | 返回码。0 正常,非 0 异常 |
| Msg | 返回信息。Code 为 0 时 success,非 0 时为异常信息 |
| Data.CosUrl | 上传成功后的 COS 文件地址(公开可访问) |
场景 B:用户提供在线 URL
直接使用 URL 作为 ReportFileUrl 参数,根据 URL 后缀判断 ReportFileType。
场景 C:用户粘贴报告文本
将文本作为 ReportContent 参数传入。
场景 D:用户仅描述问题
仅使用 Message 参数,进行医疗咨询问答。
参考 scripts/call_api.py 中的完整代码模板。
Agent 执行时将 QUERY、FILE_URL、FILE_TYPE、REPORT_CONTENT 填入脚本对应位置即可运行。DIALOGUE_ID 无需手动填写,脚本为空时会自动生成 UUID。
https://adp.cloud.tencent.com/plugin/api/v1/2a1ef5fb-9c71-4b0f-99f1-6318bd948088/4c394fa7-113f-4c93-8f24-e495cc6feddbAuthorization: Bearer <ADP_API_KEY>| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Message | string | 是 | 用户输入的问题内容,最多1000字符 |
| DialogueId | string | 是(脚本自动生成) | 对话ID,长度10-40。漏传会导致调用失败,脚本为空时自动生成 UUID |
| ReportFileUrl | string | 否 | 报告文件的公开可访问URL链接 |
| ReportFileType | int | 否 | 报告文件类型:1 = PDF,2 = 图片 |
| ReportContent | string | 否 | 报告文件的文本内容。如果同时传了 ReportFileUrl,优先使用 ReportFileUrl |
详细的 API 参数说明和响应格式,参考
references/api_reference.md。
API 返回流式 SSE 响应,处理要点:
Sort 字段顺序拼接所有 Data.Content 字段ReferResourceItems 仅在首包返回IsFinish=true 时流结束,此时获取 GuessQuestionsHighlightWords 在流式过程中返回Code != 0 → 输出 Msg 中的错误信息IsSensitive=true → 提示内容触发敏感词过滤IsSupportFile=false → 提示报告类型不支持,建议更换格式将所有流式返回的信息整合为一个结构化的解读报告,格式如下:
## 📋 报告解读结果
[拼接后的完整 Content 内容]
---
### 📚 参考资料
[列出 ReferResourceItems 中的引用,包含标题和链接]
### 🔍 相关问题
[列出 GuessQuestions 中的建议问题,方便用户进一步咨询]
输出要点: - 将多个流式返回的 Content 片段拼接为完整连贯的回答 - 如有引用资料,以清晰的列表格式展示 - 如有猜你想问,作为延伸建议提供给用户 - 如有高亮关键词,在回答中对相关医学术语进行标注说明 - 如果 Think 字段有内容,可以选择性地展示 AI 的思考过程
ReportFileType=1)、图片 (ReportFileType=2),包括 JPG/JPEG/PNG/BMP/TIFF 等Message 最多 1000 字符,超长时需截断ReportFileUrl 必须是公开可访问的 URL,内网/需登录的链接无法使用。本地文件需先通过 upload_file.py 上传至 ADP 文件服务获取 COS URLReportFileUrl 和 ReportContent 同时传入,优先使用 ReportFileUrl| 问题 | 原因 | 解决方案 |
|---|---|---|
| 401 Unauthorized | API Key 无效或未设置 | 检查 ADP_API_KEY 环境变量,重新获取密钥 |
| DialogueId 漏传导致调用失败 | 未传 DialogueId 参数 | 使用 call_api.py 脚本(已内置自动生成),或手动传入 10-40 位字符串 |
| IsSupportFile=false | 不支持的报告类型 | 提示用户更换为 PDF 或常见图片格式(JPG/PNG) |
| IsSensitive=true | 内容命中敏感词过滤 | 调整输入内容后重试 |
| 返回内容不完整 | 流式拼接问题 | 确保按 Sort 顺序拼接所有 Content 片段 |
| 响应中文乱码 | 编码问题 | 确保以 UTF-8 解码 SSE 响应内容 |
| 超时 | 网络问题 | 重试请求 |
| 密钥创建提示已达上限 | 最多只能创建 2 个密钥 | 删除旧的不用的密钥,再新建 |
| 配额不足 / quota exceeded | 调用次数超过套餐限额 | 前往 https://buy.cloud.tencent.com/adp 购买套餐或增购包 |
| 文件上传失败 | 文件过大、格式不支持或网络问题 | 检查文件大小和格式,确认网络正常后重试 |
当接口返回配额不足错误(如 Code=3000003、响应消息包含 quota exceeded 等)时,说明当前套餐的调用额度已用完。引导用户前往 ADP 购买页面 购买套餐或增购包后重试。
脚本已内置配额不足检测逻辑,当检测到配额错误时会自动输出带购买链接的提示信息。
如遇到本 Skill 未覆盖的问题,建议查阅 ADP 官方文档。
call_api.py:调用医疗报告解读 API 的 Python 脚本,内置 _load_api_key() 多路径密钥加载、参数校验、流式响应解析、配额不足检测upload_file.py:本地文件上传工具,通过 ADP 文件上传接口将本地文件转换为公开可访问的 COS URL,内置 _load_api_key() 密钥加载、Base64 编码、参数校验、配额不足检测call_api.sh:(旧版)调用医疗报告解读 API 的 Bash 脚本,保留用于兼容upload_file.sh:本地文件上传工具(Bash 版),通过 ADP 官方文件上传接口将本地文件转换为公开可访问的 COS URL。与 upload_file.py 功能一致,纯 Bash 实现,无第三方依赖,数据仅经 ADP/COS 传输api_reference.md:完整的 API 参数说明、请求/响应格式、错误码文档这个 Skill 质量不错,能帮助解读检验单、体检报告等医疗文件,支持上传 PDF 或图片格式,也支持直接输入文字。文档写得清楚,密钥配置有自动检查机制不容易出错。不过使用前需要先获取 ADP 平台密钥,流程稍复杂;缺少使用示例,对新手不够友好。总体上功能完整、文档详细,是一款实用性较强的医疗报告解读工具。