
k-skill 的 MFDS 药品安全核查技能基于 e약은요 与 k-skill-proxy 的先访谈、再查询式用药安全助手【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本篇技术指南围绕 k-skill 仓库中的mfds-drug-safety技能展开完整讲解如何通过韩国食品医药品安全处식약처, MFDS官方 OpenAPI 查询药品概要信息e약은요与安全常备药品信息안전상비의약품。文章以 docs/features/mfds-drug-safety.md 为骨架结合仓库内 Python helper、k-skill-proxy 代理源码与单元测试说明症状出现时先回问、确认 red flag、再查官方资料的安全工作流以及无需用户侧 API Key 的代理查询实现。读完你将掌握该技能的 CLI 用法、参数解析、输出格式与底层代理调用链并理解其信息提供而非诊断的边界设计。一、功能定位能做什么不能做什么mfds-drug-safety是 k-skill 面向韩国用户的公共健康类技能skill.json中category: public-health、locale: ko-KR。其能力边界在文档与源码中都被明确限定能做的通过k-skill-proxy代理查询 식약처 官方의약품개요정보e약은요接口通过同一代理查询안전상비의약품 정보安全常备药品信息接口以产品名제품명为维度汇总功效、用法、注意事项、相互作用、不良反应、保管方法用户提及症状或服药情况时先走interview回问流程确认 red flag再决定是否查询用户无需自己持有 API Key密钥只存在于代理服务器侧。不能做的不进行任何诊断、处方或服药指导不做这药能不能吃的最终判断不对症状问题直接下结论必须先回问。文档与instruction.md中的免责声明原句为이 기능은 식약처 공식 자료를 정리하는 정보 제공 도구이며 약사·의사의 진단, 처방 또는 복약지도를 대신하지 않는다.本功能是整理 식약처 官方资料的信息提供工具不替代药剂师/医生的诊断、处方或用药指导。个人是否服用、剂量变更、停药等判断应交给药剂师或医生确认。二、前置条件与密钥模型2.1 运行环境要求根据 docs/features/mfds-drug-safety.md 与 instruction.md使用该技能需要依赖说明网络连接访问公共数据门户上游接口与代理服务python3运行 helper 脚本mfds_drug_safety.py随 skill 捆绑的 helper位于 mfds-drug-safety/scripts/mfds_drug_safety.pyk-skill-proxy提供/v1/mfds/drug-safety/lookup路由的 hosted 或 self-host 代理DATA_GO_KR_API_KEY只放在代理运营服务器环境中用户侧无需配置2.2 用户侧零密钥设计这是一个值得注意的安全设计用户侧无需任何必需密钥。密钥只存在于代理服务器端DATA_GO_KR_API_KEY公共数据门户密钥只能出现在代理运营服务器的环境变量中绝不能出现在用户侧对话、文件或 shell 参数里KSKILL_PROXY_BASE_URL为可选环境变量仅在使用 self-host 或独立代理时才需要设置留空时默认使用 hosted 代理https://k-skill-proxy.nomadamas.org。该逻辑在 helper 的 resolve_proxy_base_url 中实现读取explicit_base_url或环境变量KSKILL_PROXY_BASE_URL若值为off/false/0/disable/disabled/none则抛出ValueError否则返回去除尾部/的地址缺省回退到默认 hosted 代理。对应的单元测试 test_mfds_drug_safety.py 验证了默认代理、自定义代理、off禁用三种分支。三、官方数据面两个上游接口与一个代理路由技能对接的官方表面Official surfaces共有三层3.1 上游公共数据接口数据公共数据门户文档接口 Endpoint의약품개요정보e약은요公共数据门户 15075057https://apis.data.go.kr/1471000/DrbEasyDrugInfoService/getDrbEasyDrugList안전상비의약품 정보公共数据门户 15097208https://apis.data.go.kr/1471000/SafeStadDrugService/getSafeStadDrugInq在代理源码 packages/k-skill-proxy/src/mfds.js 中这两个 Endpoint 被硬编码为DRUG_EASY_ENDPOINT与SAFE_STAD_ENDPOINT。3.2 代理路由代理侧路由为GET /v1/mfds/drug-safety/lookup托管地址为https://k-skill-proxy.nomadamas.org/v1/mfds/drug-safety/lookup。从代理服务端实现 server.js 可以看出该路由的完整处理链参数校验调用normalizeMfdsDrugLookupQuery非法参数返回400 bad_request缓存查询以mfds-drug-safety-lookup为 route 键构建缓存键命中时直接返回缓存并在proxy.cache.hit: true中标注密钥检查若代理服务器未配置DATA_GO_KR_API_KEY返回503 upstream_not_configured上游调用调用fetchMfdsDrugLookup并发请求两个上游接口响应封装在 payload 上追加proxy字段名称、缓存命中、TTL、请求时间。四、interview强制回问流程4.1 设计动机文档明确指出이 helper 는 증상 질문에 대한 직접 진단을 하지 않는다. 증상이 있으면 바로 단정하지 말고 먼저 되묻는다.本 helper 不对症状问题做直接诊断出现症状时不要急于下结论先回问。当用户提及症状或服药情况时Agent 必须先回问而不是直接给出答案。4.2 推荐访谈问题文档给出的标准回问清单在 helper 的 build_drug_interview 中以must_ask数组实现谁要服用本人/儿童/孕妇/老年人——누가 복용하려는지 알려주세요. (본인/아이/임산부/고령자)已经吃过什么药 / 现在想吃什么药产品名/成分名分别列出从何时起、多久一次、每次吃多少当前症状及开始时间正在服用的其他药物、基础疾病、过敏史4.3 red flag 判定与应急转接red_flags数组包含四类急诊信号호흡곤란 또는 숨쉬기 힘듦呼吸困难或喘不上气의식저하, 실신, 혼동意识减退、晕厥、意识混乱입술·혀 붓기 또는 심한 전신 발진嘴唇/舌肿胀或严重全身皮疹지속되는 구토, 경련, 심한 흉통持续呕吐、抽搐、剧烈胸痛一旦出现任一 red flag立即优先转接 119·急诊室·医护人员而不是继续查药——urgent_action字段原文为red flag 가 하나라도 있으면 약 정보 조회보다 즉시 119·응급실·의료진 연결을 우선하세요.单元测试 test_mfds_drug_safety.py 断言了must_ask中必须包含谁服用多久/剂量正在服用的药过敏等回问项以及red_flags中必须包含호흡곤란의식等信号、urgent_action必须包含즉시 119。五、lookup经代理查询官方信息5.1 CLI 用法helper 使用argparse定义两个子命令见 build_parserinterview--question问题文本、--symptoms症状描述输出回问 JSONlookup--item-name可重复必填、--limit默认 5整数、--proxy-base-url可选覆盖默认代理。文档中的两个标准调用示例# 先回问输出必须追问的问题集与 red flag 清单 npx -y nomadamas/k-skill0 exec mfds-drug-safety scripts/mfds_drug_safety.py -- interview \ --question 타이레놀이랑 판콜 같이 먹어도 되나요? \ --symptoms 두드러기와 어지러움 # 查询按产品名查官方信息可传多个 --item-name npx -y nomadamas/k-skill0 exec mfds-drug-safety scripts/mfds_drug_safety.py -- lookup --item-name 타이레놀 --item-name 판콜5.2 底层请求构造lookup_drugs函数mfds_drug_safety.py的调用链如下通过resolve_proxy_base_url解析代理基地址拼接{base_url}/v1/mfds/drug-safety/lookup对每个--item-name追加一个itemName查询参数再追加limit参数以Accept: application/json、User-Agent: k-skill-mfds/1.0发起 GET 请求。单元测试 test_mfds_drug_safety.py 通过注入fake_request_json捕获了实际请求 URL断言其命中https://proxy.example.com/v1/mfds/drug-safety/lookup、包含 URL 编码后的两个itemName参数以及limit3。5.3 代理侧的双接口并发查询代理端 fetchMfdsDrugLookup 对每个产品名并发发起两个上游请求e약은요 接口参数ServiceKey、pageNo1、numOfRowslimit、typejson、itemName安全常备药品接口参数serviceKey、pageNo1、numOfRowslimit、typejson、PRDLST_NM。随后分别经normalizeEasyDrugItem映射 e약은요 的itemName/entpName/efcyQesitm/useMethodQesitm/atpnWarnQesitm/atpnQesitm/intrcQesitm/seQesitm/depositMethodQesitm/itemSeq与normalizeSafeStandbyDrugItem映射安全常备药品的大写字段PRDLST_NM/BSSH_NM/EFCY_QESITM/USE_METHOD_QESITM/ATPN_WARN_QESITM/ATPN_QESITM/INTRC_QESITM/SE_QESITM归一化为统一输出。注意两个接口字段命名风格不同驼峰 vs 全大写归一化层将二者拉齐。extractDataGoItems还兼容了三种上游返回结构XML→JSON 自动转换的body.items.item包裹形态、原生 JSON 扁平数组形态、以及每项带item键的包裹数组形态。5.4 错误处理helper 的 read_json_response 对三类异常做了语义化处理HTTP 503 且 body 中error upstream_not_configured→ 提示k-skill-proxy에 필요한 API 키가 설정되어 있지 않습니다代理未配置所需 API 密钥上游返回message字段 → 透传该 message网络层URLError→ 提示설정된 k-skill-proxy 서버가 응답하지 않습니다代理无响应稍后重试或联系运营者。main中lookup命令捕获ValueError/ApiError后以 JSON 形式输出到 stderr 并返回退出码 1。六、输出格式示例文档给出了标准 JSON 输出经代理归一化后由 helper 原样打印{ query: { item_names: [타이레놀, 판콜], limit: 5 }, items: [ { source: drug_easy_info, item_name: 타이레놀정160밀리그램, company_name: 한국얀센, efficacy: 감기로 인한 발열 및 동통에 사용합니다., interactions: 다른 해열진통제와 함께 복용하지 마십시오. } ], proxy: { name: k-skill-proxy } }值得注意的字段设计source区分数据来源drug_easy_infoe약은요或safe_standby_medicine安全常备药品代理端返回中note字段mfds.js原文强调상호작용 문구는 공식 품목 안내를 그대로 요약한 참고 정보이며, 복용 가능 여부의 최종 판단은 약사·의료진 확인이 필요합니다.相互作用语句是对官方品目指南的摘要性参考信息可否服用的最终判断需经药剂师/医务人员确认代理缓存命中时会追加proxy.cache.hit与ttl_ms未命中则含requested_at时间戳。七、完整工作流与响应策略结合 docs/features/mfds-drug-safety.md 的기본 흐름与 instruction.md 的 Workflow标准执行顺序为先回问用户提及症状/服药情况时用interview命令准备追问问题集按must_ask逐项确认谁吃、吃什么、吃多久、症状、其他药/基础病/过敏red flag 筛查任一信号命中则立即转 119·急诊·医疗人员跳过查询确认药名后查询药名确认后通过lookup命中代理路由/v1/mfds/drug-safety/lookup获取官方信息简要整理输出功效、用法、注意事项、相互作用、不良反应、保管方法回答能否同服只引用官方相互作用原文作为依据并明确最终判断需药剂师/医疗人员确认。响应策略Response policy的硬性约束包括不做诊断/处方/用药指令只以官方文档中的功效/注意/相互作用语句为依据做摘要相互作用语句模糊或存在 red flag 时转交药剂师/医生咨询有症状的问题不得跳过回问直接作答。任务的完成标准Done when为已先回问症状/服药情况、已确认 red flag 与否、已通过代理路由取得官方查询结果并整理为 JSON、摘要中至少包含产品名、公司名、功效/注意/相互作用。八、验证方式与已知边界文档검증 메모记录2026-04-13已在本地实际执行过--help、interview两个命令并验证了lookup的请求 URL 指向/v1/mfds/drug-safety/lookuphelper 本身与 interview 流程已验证live 成功路径需要在代理服务器配置好DATA_GO_KR_API_KEY的环境下继续验证。仓库侧的自动化验证由 test_mfds_drug_safety.py 提供interview 结构断言、两类数据归一化断言、代理 URL 解析断言。使用该技能前应理解的两个边界密钥边界DATA_GO_KR_API_KEY必须只在代理运营服务器环境用户侧任何环节对话、文件、shell 参数都不得出现明文凭据——这也是 SKILL.md 中 Hard rules 的通用约束医学边界所有相互作用信息均为官方品目指南摘要属参考信息是否可同服的最终判断必须由药剂师或医疗人员完成。代理服务器未配置密钥时返回的503 upstream_not_configured也应如实转达而非绕过代理直接拼接上游请求。如需了解同仓库的食品安全侧实现可对照 scripts/mfds_food_safety.py 及其在 packages/k-skill-proxy/src/mfds.js 中的fetchMfdsFoodSafetySearch实现两者共用DATA_GO_KR_API_KEY与extractDataGoItems解析层但业务边界药品 vs 食品召回/不合格各自独立。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考