文章目錄
本文架構的靈感來自 Anthropic 於 2025 年 10 月發布的 Skills 機制,並延伸至醫療場景。文中提到的「Progressive Disclosure(漸進式揭露)」是 Anthropic 官方使用的原始術語,本文沿用以便讀者順藤摸瓜研究原始文件。
前言
大型語言模型(LLM)十分擅長自然語言理解,但若直接應用於醫療場景,會遇到四個常見痛點:
- 每次都需要重新提供大量 Prompt。
- 不同科別、不同醫院具有不同的病歷格式。
- 病歷模板會隨著醫療流程持續更新。
- 將所有模板一次放入 Prompt,不僅浪費 Token,也降低模型推理效率。
例如:
- 牙科需要 Dental SOAP
- 精神科需要 Mental Status
- 長照需要 Follow-up Report
- 護理站需要 Nursing Note
- 急診需要 ER Record
如果每次都將這些模板全部放進 Prompt,不僅維護困難,也會造成 Context Window 被大量占用。
因此,我們可以借鑑 Anthropic Skills 的設計哲學,將 Prompt 模組化,建立 Skill(技能) 與 Reference(參考文檔),讓 AI Agent 能依據不同任務,自動載入適合的模板,達到更好的可維護性與執行效率。
先備知識提醒 本文會用到「Tool Calling(工具呼叫)」的概念——這是指 LLM 在推理過程中主動呼叫外部函式取得資料的能力。如果你還沒接觸過,可以先讀 Anthropic Tool Use 官方文件 建立基本認識。
Skill 是什麼?
在 Anthropic Skills 的定義中,可以把 Skill 理解成:
一組可以重複使用的 AI 工作能力(Reusable Capability)。
Skill 並不是模型本身,而是將某一項工作需要的知識、規則與操作方式封裝起來。
例如醫療紀錄助手:
medical-writing-assistant/
它負責:
- SOAP 病歷
- 初診紀錄
- Follow-up
- 出院摘要
- 衛教紀錄
未來還可以建立更多 Skill:
skills/
├── medical-writing-assistant/
├── appointment-scheduler/
├── drug-interaction/
├── insurance-checker/
└── medical-qa/
Agent 可以同時載入多個 Skill,並依據使用者需求決定是否啟用。
Skill 目錄設計
一個典型的 Skill 可以設計如下:
medical-writing-assistant/
├── skill.md
└── references/
├── soap-note.md
├── follow-up.md
├── discharge-summary.md
└── nursing-note.md
其中最重要的是:
skill.md:定義 Agent 的角色與工作規則references/:存放各種可動態載入的模板
skill.md 實際範例
skill.md 定義 Agent 的角色與工作規則,而不是存放模板本身。
---
name: medical-writing-assistant
description: Generate structured medical documentation.
version: 1.0
author: AI Team
---
# Instructions
You are an experienced medical documentation assistant.
## General Rules
- Never fabricate symptoms or diagnoses.
- Preserve all medical terminology.
- Use objective and professional language.
- Do not infer information that is not provided.
- Follow the referenced template whenever one is available.
- Output in Markdown format.
## Output Requirements
- Maintain section hierarchy.
- Keep terminology consistent.
- Avoid unnecessary explanations.
- Return only the requested documentation.
這裡主要定義的是:
- Agent 身份
- 共通規則
- 生成原則
- 輸出格式
真正的 SOAP 格式並不會寫在這裡——這是 Progressive Disclosure 的關鍵。
建立 Reference Template
真正限制輸出格式的是 Reference。
references/soap-note.md:
# SOAP Note
## Subjective
Summarize patient's symptoms.
## Objective
Clinical findings.
## Assessment
Clinical assessment.
## Plan
Treatment plan.
references/follow-up.md:
# Follow-up Report
## Current Status
## Medication Adherence
## Side Effects
## Health Education
## Next Visit
Reference 可以依照不同科別持續增加,而不需要修改 Prompt 或程式碼。
建立 Agent
以下用 Anthropic Python SDK 的實際寫法示範。你可以直接複製到專案中修改:
import os
from pathlib import Path
from anthropic import Anthropic
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
SKILL_ROOT = Path("./skills/medical-writing-assistant")
def load_skill_metadata():
"""讀取 skill.md 的 instructions 部分。"""
return (SKILL_ROOT / "skill.md").read_text(encoding="utf-8")
def list_references():
"""列出可用的 reference 檔名(不讀取內容)。"""
return [p.name for p in (SKILL_ROOT / "references").glob("*.md")]
def read_reference(name: str) -> str:
"""真正讀取指定 reference 的內容。"""
return (SKILL_ROOT / "references" / name).read_text(encoding="utf-8")
# 定義 tool schema,讓模型可以主動呼叫
tools = [{
"name": "read_reference",
"description": "讀取指定的醫療紀錄模板內容。",
"input_schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "reference 檔名,例如 soap-note.md"
}
},
"required": ["name"]
}
}]
system_prompt = f"""{load_skill_metadata()}
## Available References
{chr(10).join(f'- {r}' for r in list_references())}
當需要生成醫療文件時,請先透過 read_reference 工具載入對應的模板。
"""
user_input = """病人主訴:
頭痛持續兩週,睡眠品質下降,
無噁心嘔吐,建議安排 MRI,一週後回診。"""
# 第一次推理:讓模型決定要載入哪個 reference
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=2048,
system=system_prompt,
tools=tools,
messages=[{"role": "user", "content": user_input}],
)
Agent 收到上述輸入後,會判斷這是一份 SOAP Note,並主動呼叫 read_reference("soap-note.md")。
Agent 底層工作流程:Progressive Disclosure
很多人以為:
Agent 啟動時,就會把所有 Template 全部放進 Prompt。
事實上並非如此。
Anthropic Skills 採用一個關鍵設計:Progressive Disclosure(漸進式揭露)。意思是——只在需要時才把資料揭露給模型。
這種設計分為兩個階段:
第一階段:Initialization(初始化)
初始化主要完成四件事情。
① 讀取 Skill
首先讀取 skill.md,取得:
- Name
- Description
- Instructions
- Metadata
② 掃描 References
接著掃描 references/ 目錄,得到檔名清單:
soap-note.md
follow-up.md
discharge-summary.md
nursing-note.md
注意:此時並沒有讀取內容。 Agent 只知道有哪些文件存在。
③ 建立 Tool
系統建立工具(例如 read_reference),之後模型透過 Tool Calling 取得資料。
④ 建立 Context
最後建立初始 Prompt:
System Prompt
+ Skill Instructions
+ Reference List(只有檔名)
+ Tool Definitions
完成初始化。此時 Context Window 只佔用極小量 Token。
第二階段:Execution(執行)
當收到使用者輸入:
整理以下問診內容:......
LLM 開始第一次推理:
System Prompt
Skill Instructions
Available References(僅檔名)
User Request
模型判斷需要 SOAP Template,因此輸出:
{
"tool": "read_reference",
"arguments": { "name": "soap-note.md" }
}
Tool Calling
Agent 收到 Tool Call,真正去讀 soap-note.md 完整內容,再把內容回傳給模型。
第二次推理
第二次 Prompt:
System Prompt
Skill Instructions
SOAP Template(此時才載入)
User Request
模型開始正式生成:
# SOAP Note
## Subjective
患者主訴頭痛持續兩週,睡眠品質下降。
## Objective
生命徵象穩定,未見神經學異常。
## Assessment
疑似緊張型頭痛,建議持續追蹤。
## Plan
- 安排 MRI
- 一週後回診
只有這個階段,SOAP Template 才真正加入 Context。
為什麼這樣設計?
Prompt 更容易維護
若 SOAP 格式修改,只需要更新 soap-note.md。Agent 不需要重新修改 Prompt 或重新部署。
降低 Token 消耗
傳統方式:
所有 Prompt + 所有 Template + 所有規則
全部送進模型,每次呼叫都要付這個代價。
Skill 架構:
Skill Metadata + Reference List + 只有需要的 Template
只有真正需要的模板才會載入。
容易擴充
新增新的 Reference:
psychiatry.md
dental.md
nutrition.md
rehabilitation.md
不需要修改程式,也不需要修改 Prompt。 這對醫療場景特別重要——各科室可以自行維護自己的模板。
Agent 更具彈性
模型可以自行判斷:
- 是否需要 Tool Calling
- 應該載入哪份 Reference
- 是否需要多個 Template 組合
- 是否需要額外知識
這也是 AI Agent 與傳統 Prompt Engineering 最大的差異。
完整流程
User Request
│
▼
Medical Agent
│
▼
Load Skill Metadata
│
▼
Scan Reference List(僅檔名)
│
▼
LLM Decision
│
▼
Tool Calling
│
▼
Read SOAP Template(此時才讀)
│
▼
Second LLM Inference
│
▼
Generate Medical Documentation
這種 Retrieve on Demand 的架構,能兼顧效率、可維護性與擴充性,也是 Anthropic Skills 官方推薦的設計模式。
重點整理
- Skill 負責定義 Agent 的角色、能力與共通規則。
- Reference 將 SOAP、護理紀錄、追蹤報告等模板獨立管理。
- Tool Calling 讓 Agent 僅在需要時讀取對應模板。
- Progressive Disclosure(Initialization 與 Execution 分離),可有效降低 Token 消耗。
- 模組化設計可快速擴充不同醫療場景,提升維護效率。
結論
Skill 與 Reference 的價值,不只是將 Prompt 拆分成多個檔案,而是建立一套可重複使用、可維護且可擴充的知識管理機制。透過 Tool Calling 與動態載入,AI Agent 能根據任務需求精準取得所需模板,在降低上下文長度的同時,仍維持生成內容的一致性與專業性。
在醫療資訊系統中,這種架構有助於建立標準化的智慧醫療工作流程;而放眼法律、客服、金融、製造等領域,同樣能透過 Skill 與 Reference 建立專業且可持續演進的 AI Agent 應用。



討論區 (0 則留言)