腾讯健康觅影:45° 眼底彩照多病种 AI 分析 Skill

前言

在 Agent 里做眼底图像分析,常见做法是手写 HTTP 客户端、自己拼 HMAC 签名、再维护上传与轮询两套接口。流程长、字段多,还容易把左右眼编码和查询结果里的 eyeCategory 搞混。下面介绍 SkillHub 上的 @tencent-adm/fundus-images-ai-analysis:把腾讯健康觅影眼底 AI 的上传、查询与结果整理写进 SKILL.md,Agent 按步骤调用即可。

这是什么

Fundus Images AI Analysis(中文名:腾讯健康-觅影-基于45°眼底彩照的多病种 AI 分析)是面向 45° 眼底彩照的多病种 AI 分析 Skill,坐标 @tencent-adm/fundus-images-ai-analysis,当前版本 1.0.4,来源为 enterprise,分类 professional,由腾讯健康觅影团队发布。

Skill 封装对 pacs.qq.com 第三方接口的调用(HMAC-SHA256 鉴权),覆盖:眼底图像上传、AI 结果轮询查询,以及青光眼与多病种结论的结构化输出。适用场景是用户要在对话里完成「眼底诊断、眼底分析、眼底图片、AI 诊断眼底、查眼底」等意图时,由 Agent 自动走完整流程。

SkillHub 页面显示评分 100000,下载 960 次,安装 10 次;标签含 requires_api_key=true(正式环境需向腾讯申请凭证,Skill 内亦提供试用 APP-ID / APP-TOKEN)。

核心功能

以下能力均来自 Skill 包内 SKILL.md 与参考文档,可与官方页面简介交叉核对。

  1. 图像上传:支持 JPEG、PNG、DICOM;单文件不超过 5MB;一次检查 images 数组 1~20 张,可左右眼合并上传。图片以 Base64 放入 JSON(不含 data:image/...;base64, 前缀)。
  2. AI 分析类型:查询时 aiType 可取 0(青光眼 + 多病种,推荐)、1(仅青光眼)、2(仅多病种)。多病种范围包括糖尿病性视网膜病变(DR)、年龄相关性黄斑变性(AMD)、视网膜静脉阻塞、屈光间质混浊、高血压眼底病变、豹纹状眼底、高度近视眼底改变等。
  3. 结果查询:上传成功后用自定义 studyId 轮询;处理中返回 code = 30008,建议每 10 秒查询一次,最长约 3 分钟(18 次)。
  4. 报告输出:needReport = 1 时可获得 PDF 报告链接(data.reportUrl);Skill 规定从 glaucomaResultList、multipleDiseasesResultList 中解析 status = 200 的条目并格式化展示。

底层接口(正式环境):

  • 上传:POST https://pacs.qq.com/thirdparty/studyupload/v2/{appId}
  • 查询:POST https://pacs.qq.com/thirdparty/queryEyeAIResult/{appId}

安装与启用

安装 SkillHub CLI

若尚未安装 CLI,可先检查版本;未安装时按 SkillHub 安装文档执行完整安装脚本。

command -v skillhub && skillhub --version
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

安装本 Skill

安装时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 可能不会被识别。

skillhub install fundus-images-ai-analysis --namespace tencent-adm --dir <你的 skills 目录>

常见路径(以 SkillHub 安装文档为准):

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/

也可在对话中让 Agent 按 SkillHub 安装说明 安装 @tencent-adm/fundus-images-ai-analysis。

鉴权与试用凭证

所有请求需在 Header 携带 appId、signature、timestamp(毫秒字符串)。签名算法:

signature = HMAC-SHA256(key=token, message=appId + timestamp)

Skill 文档提供的试用凭证(调用次数与并发有限):

项目 值
APP-ID 12708
APP-TOKEN 69842f96c5b14c0ca8042fc309f3f087
hospitalId 12708(与 APP-ID 相同)

长期使用需联系 miying@tencent.com,或访问 腾讯健康官网。

典型用法

Skill 要求 Agent 严格按顺序执行:上传 → 轮询查询 → 格式化输出。

Step 1:上传图片,记下 studyId

自行生成 studyId(如 study_ + 短 UUID),studyType 固定为 2(眼底),并为每张图设置 descPosition:"1" 左眼、"2" 右眼、"0" 未知。文件名含 OD/OS、_R/_L 等时可按 Skill 规则推断眼位。

签名与上传的 Python 示例(摘自 Skill 文档,将 image_path 换为本地眼底图路径):

import hmac, hashlib, time, json, base64, uuid, urllib.request

app_id = "12708"
token = "69842f96c5b14c0ca8042fc309f3f087"
image_path = "/path/to/image.jpg"

timestamp = str(int(time.time() * 1000))
signature = hmac.new(token.encode(), (app_id + timestamp).encode(), hashlib.sha256).hexdigest()

with open(image_path, "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

study_id = "study_" + uuid.uuid4().hex[:12]
body = {
    "studyId": study_id,
    "studyName": "眼底检查",
    "studyDate": int(time.time()),
    "studyType": 2,
    "images": [{
        "imageId": "img_" + uuid.uuid4().hex[:8],
        "content": image_b64,
        "descPosition": "2"
    }]
}

url = f"https://pacs.qq.com/thirdparty/studyupload/v2/{app_id}"
req = urllib.request.Request(url, data=json.dumps(body).encode(), method="POST")
req.add_header("appId", app_id)
req.add_header("signature", signature)
req.add_header("timestamp", timestamp)
req.add_header("Content-Type", "application/json; charset=utf-8")

with urllib.request.urlopen(req, timeout=60) as resp:
    result = json.loads(resp.read().decode())

响应 code = 0 表示上传成功;后续查询使用请求体里的 studyId,而非响应里的新 ID。

Step 2:轮询诊断结果

body = {
    "hospitalId": "12708",
    "studyId": study_id,
    "aiType": 0,
    "needReport": 1
}

轮询 POST https://pacs.qq.com/thirdparty/queryEyeAIResult/12708,code = 30008 时等待 10 秒继续,直到 code = 0 且 data 非空,或达到约 3 分钟上限。

Step 3:在对话中呈现结果

从 data 提取青光眼与多病种列表,仅处理 status = 200 的条目;注意查询结果里 eyeCategory(0=左、1=右)与上传时 descPosition(1=左、2=右)编码不同。输出应包含形态学指标、病变检测、疾病诊断小结及 PDF 链接,并附带「AI 辅助、非临床确诊」类免责声明(Skill 模板中有完整字段表)。

试用样例图可从 Skill 文档给出的网盘获取(提取码 KZY7)。

在已安装 Skill 的 Agent 中,用户只需用自然语言描述需求并附上图片路径,例如:「请用眼底分析 Skill 看一下这张右眼彩照」,并带上触发词「眼底分析」「查眼底」等,Agent 会按 SKILL.md 执行上述三步。

适用场景与注意

适合谁

  • 医疗健康、眼科信息化、体检筛查等需要在 Agent 内对接眼底 AI 的开发者或集成方。
  • 希望在 Cursor、Claude Code、Codex 等环境中用统一 Skill 约束调用顺序与输出格式,而不是每次临时查 API 文档的团队。

限制与注意

  • 图像格式与大小:JPEG / PNG / DICOM,单文件 ≤ 5MB;参考文档还要求单次检查图片总大小 ≤ 5MB。
  • 上传接口因 Base64 体积较大,建议超时 60 秒;查询接口 30 秒即可。
  • 每次上传应使用新的 studyId,避免与历史检查冲突。
  • 参考文档中 patientId 在上传接口为必填;Skill 内 Python 示例未展示该字段,生产集成应以 API 参考文档为准补全患者标识。
  • 输出仅供辅助参考,不能替代执业医师诊断;合规与隐私(患者信息、影像存储)需自行满足业务与法规要求。
  • 试用凭证有次数与并发限制;正式上线需申请正式 appId / token。

结尾

@tencent-adm/fundus-images-ai-analysis 把 45° 眼底彩照的多病种 AI 能力收敛成 Agent 可执行的固定流程:上传、轮询、结构化解读,并对接腾讯健康觅影正式 API。若你要在 Skill 生态里接入眼底 AI,可从 SkillHub 安装该包并按文档配置鉴权。

  • SkillHub 页面:https://www.skillhub.cn/skills/tencent-adm/fundus-images-ai-analysis
  • API 技能地址:https://api.skillhub.cn/tencent-adm/fundus-images-ai-analysis
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜