最新
療心智能團隊入圍 2026 台灣醫療科技展創新獎 | DietMate 臨床營養 AI 平台開放診所試用 | Taiwan Health MCP v0.1.0 更新上線,支援 FHIR R4 資源與台灣 FDA 藥品查詢 →
聯絡我們
✓ 連結已複製
技術分享

Anthropic Skills 實戰:打造動態載入的醫療 AI Agent

用 Anthropic Skills 打造你的第一個醫療 AI Agent:從 SOAP note 到出院摘要,一套架構支援所有病歷模板,實測節省 70% Token 成本,新增科別從 2 天縮短到 30 分鐘。

BY 療心智能團隊 2026.07.30 · 2 分鐘閱讀

本文架構的靈感來自 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 應用。

ABOUT THE AUTHOR
療心智能團隊

討論區 (0 則留言)

加載評論中...