Claude Model Capabilities 完整指南:從 Extended Thinking 到 Vision 的全面解析
Claude API 提供了豐富的模型能力(Model Capabilities),涵蓋從深度推理到多模態處理的完整功能矩陣。本文將逐一深入解析十三大核心能力,確保不遺漏任何一個知識點。
一、Extended Thinking:延伸思考
基本概念
Extended Thinking 賦予 Claude 增強的推理能力,讓模型在給出最終答案前,先進行逐步的內部推理過程。啟用後,API 回應會包含 thinking content blocks(思考區塊),隨後才是 text content blocks(文字回覆)。
支援模型
- Claude Opus 4.6:僅支援 Adaptive Thinking(手動模式已棄用)
- Claude Sonnet 4.6:支援手動 Extended Thinking(含 Interleaved 模式)及 Adaptive Thinking
- Claude Opus 4.5、4.1、4:完整支援
- Claude Sonnet 4.5、4:完整支援
- Claude Haiku 4.5:完整支援
- Claude Sonnet 3.7:已棄用,但仍支援
使用方式
透過 thinking 參數啟用:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[{"role": "user", "content": "問題內容"}],
)
budget_tokens 決定 Claude 可用於內部推理的最大 token 數。此值必須小於 max_tokens。注意:在 Opus 4.6 上 budget_tokens 已棄用,應改用 Adaptive Thinking。
Summarized Thinking(摘要式思考)
Claude 4 系列模型的 Extended Thinking 回傳的是思考過程的摘要,而非完整思考內容。關鍵要點:
- 計費基於完整思考 token,而非摘要 token
- 帳單上的 output token 數不會與回應中可見的 token 數吻合
- 摘要的前幾行較為詳細,適合用於 prompt engineering 除錯
- 摘要由不同模型處理,思考模型本身看不到摘要結果
- Claude Sonnet 3.7 仍回傳完整思考輸出
Streaming Thinking
透過 SSE 串流時,思考內容以 thinking_delta 事件傳送。思考區塊結束前會有一個 signature_delta 事件,包含用於驗證的簽名。
Extended Thinking 與 Tool Use
Extended Thinking 可與 Tool Use 搭配使用,但有以下限制:
- 僅支援
tool_choice: {"type": "auto"}或{"type": "none"} - 強制工具呼叫(
any或指定工具名稱)不相容 - 必須將
thinkingblocks 完整傳回 API 以維持推理連貫性 - 不可在 assistant turn 中途切換 thinking 模式
Interleaved Thinking(交錯思考)
在 Tool Use 場景中,Interleaved Thinking 允許 Claude 在每次工具呼叫結果回傳後再次思考,實現更精細的多步推理。
模型支援情況:
- Opus 4.6:使用 Adaptive Thinking 時自動啟用,不需 beta header
- Sonnet 4.6:支援
interleaved-thinking-2025-05-14beta header,或透過 Adaptive Thinking 自動啟用 - 其他 Claude 4 模型:需加入 beta header
啟用 Interleaved Thinking 後,budget_tokens 可以超過 max_tokens,因為它代表整個 assistant turn 中所有思考區塊的總預算。
Thinking Encryption 與 Redaction
完整思考內容會被加密並存於 signature 欄位,用於驗證思考區塊的完整性。偶爾 Claude 的內部推理會觸發安全系統,此時部分或全部思考區塊會被加密為 redacted_thinking blocks。這些區塊傳回 API 時會被解密,不影響 Claude 繼續推理。
Prompt Caching 互動
- 思考參數(啟用/停用或預算改變)會使訊息快取斷點失效
- System prompt 和工具定義的快取不受思考參數變更影響
- Interleaved Thinking 會放大快取失效效果
Thinking Block Preservation
從 Claude Opus 4.5 開始(包含 Opus 4.6),前一輪 assistant turn 的思考區塊預設會保留在模型上下文中。好處是可以優化快取命中率,但長對話會消耗更多 context 空間。
定價
- 思考過程產生的 token 按 output token 計費
- 上一輪 assistant turn 的思考區塊在後續請求中作為 input token 計費
- 帳單上的 output token 數不等於回應中可見的 token 數
二、Adaptive Thinking:自適應思考
基本概念
Adaptive Thinking 是在 Claude Opus 4.6 和 Sonnet 4.6 上使用 Extended Thinking 的推薦方式。與手動設定 budget_tokens 不同,Adaptive Thinking 讓 Claude 根據請求的複雜度動態決定是否使用以及使用多少 Extended Thinking。
使用方式
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "問題內容"}],
)
與 Effort 參數整合
Adaptive Thinking 可與 effort 參數搭配使用:
| Effort 等級 | 思考行為 |
|---|---|
max | Claude 總是深度思考,無約束(僅 Opus 4.6) |
high(預設) | Claude 幾乎總是思考,對複雜任務進行深度推理 |
medium | 中度思考,對非常簡單的查詢可能跳過思考 |
low | 最小化思考,對簡單任務跳過思考以追求速度 |
Adaptive vs Manual vs Disabled
| 模式 | 設定 | 適用場景 |
|---|---|---|
| Adaptive | thinking: {type: "adaptive"} | Claude 自動決定思考深度 |
| Manual | thinking: {type: "enabled", budget_tokens: N} | 需要精確控制思考 token 花費 |
| Disabled | 省略 thinking 參數 | 不需要 Extended Thinking |
自動啟用 Interleaved Thinking
Adaptive Thinking 會自動啟用 Interleaved Thinking,Claude 可在工具呼叫之間進行思考,特別適合 agentic 工作流程。
Prompt Caching
連續使用 adaptive 思考的請求會保留 prompt cache 斷點。但在 adaptive 和 enabled/disabled 之間切換會破壞訊息的快取斷點。
行為可透過 Prompt 調整
可以在 system prompt 中加入指導來調整思考觸發行為:
Extended thinking adds latency and should only be used when it
will meaningfully improve answer quality - typically for problems
that require multi-step reasoning. When in doubt, respond directly.
三、Effort 參數:控制回應深度
基本概念
Effort 參數讓開發者控制 Claude 在回應時願意花費多少 token,在回應品質與 token 效率之間取得平衡。此參數支援 Claude Opus 4.6、Sonnet 4.6 和 Opus 4.5,無需 beta header。
Effort 等級
| 等級 | 說明 | 典型用途 |
|---|---|---|
max | 最高能力,不限 token 花費(僅 Opus 4.6) | 需要最深推理與最詳盡分析的任務 |
high | 高能力,等同未設定參數 | 複雜推理、困難程式問題、agentic 任務 |
medium | 平衡方式,適度 token 節省 | 需要速度、成本與效能平衡的 agentic 任務 |
low | 最高效,大幅 token 節省 | 簡單任務、subagent、需要最佳速度和最低成本 |
使用方式
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
messages=[{"role": "user", "content": "問題內容"}],
output_config={"effort": "medium"},
)
Effort 影響所有 token 輸出
Effort 影響回應中的所有 token,包括:
- 文字回覆和說明
- 工具呼叫和函式參數
- Extended Thinking(當啟用時)
這意味著較低的 effort 不僅減少回覆長度,也會減少工具呼叫次數。
Sonnet 4.6 的建議
Sonnet 4.6 預設為 high effort。建議明確設定 effort:
- medium:推薦預設值,適合大多數應用
- low:高流量或延遲敏感的工作負載
- high:需要 Sonnet 4.6 最高智力的任務
四、Fast Mode:高速模式(Research Preview)
基本概念
Fast Mode 為 Claude Opus 4.6 提供高達 2.5 倍的 output token 生成速度,適用於延遲敏感和 agentic 工作流程。目前處於 research preview 階段,需要加入等候名單。
使用方式
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
speed="fast",
betas=["fast-mode-2026-02-01"],
messages=[{"role": "user", "content": "問題內容"}],
)
關鍵特性
- 同一模型,更快的推論配置,智力和能力不變
- 速度提升集中在 output tokens per second(OTPS),而非 time to first token(TTFT)
- 僅支援 Claude Opus 4.6
定價
Fast Mode 的定價為標準 Opus 費率的 6 倍:
- Input:$30 / MTok
- Output:$150 / MTok
Fast Mode 定價可與其他定價修飾符疊加(如 Prompt Caching、Data Residency)。
Rate Limits
Fast Mode 有獨立的 rate limit,與標準 Opus rate limit 分開。回應中包含 anthropic-fast-* 相關的 header 資訊。
Fallback 策略
當 Fast Mode 的 rate limit 被用盡時,可以捕捉 RateLimitError 並移除 speed: "fast" 參數以回退到標準速度。注意:切換速度會導致 prompt cache miss。
限制
- 切換 fast/standard 速度會使 prompt cache 失效
- 不支援 Batch API
- 不支援 Priority Tier
五、Structured Outputs:結構化輸出
基本概念
Structured Outputs 透過 constrained decoding(約束解碼)確保 Claude 的回應遵循特定 schema,保證輸出有效且可解析。提供兩個互補功能:
- JSON Outputs(
output_config.format):以特定 JSON 格式取得回應 - Strict Tool Use(
strict: true):保證工具名稱和輸入的 schema 驗證
JSON Outputs
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "提取此郵件的關鍵資訊..."}],
output_config={
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
},
"required": ["name", "email"],
"additionalProperties": False,
},
}
},
)
回應中的 response.content[0].text 會是符合 schema 的有效 JSON。
SDK 整合
各 SDK 提供便利的 helper:
- Python:使用 Pydantic model 搭配
client.messages.parse() - TypeScript:使用 Zod schema 搭配
zodOutputFormat() - Java:使用 Java class 搭配
outputFormat(Class<T>) - Ruby:使用
Anthropic::BaseModel搭配output_config: {format: Model}
Strict Tool Use
在工具定義中加入 strict: true 即可啟用:
tools=[{
"name": "get_weather",
"description": "取得天氣資訊",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
},
"required": ["location"],
"additionalProperties": False,
},
}]
保證效果:
- 工具
input嚴格遵循input_schema - 工具
name始終有效
JSON Schema 限制
支援的功能:
- 所有基本型別:object、array、string、integer、number、boolean、null
enum(僅限 string、number、bool、null)anyOf、allOf(有限制)$ref、$def、definitions- 字串格式:
date-time、time、date、duration、email、hostname、uri、ipv4、ipv6、uuid
不支援的功能:
- 遞迴 schema
- 外部
$ref - 數值約束(
minimum、maximum、multipleOf) - 字串約束(
minLength、maxLength) additionalProperties設為false以外的值
Grammar Compilation 與 Caching
- 首次使用特定 schema 時會有額外延遲(grammar 編譯)
- 編譯後的 grammar 會快取 24 小時
- 變更 schema 結構會使快取失效
無效輸出情況
- Refusal(
stop_reason: "refusal"):安全拒絕優先於 schema 約束 - Token Limit(
stop_reason: "max_tokens"):回應被截斷,可能不符合 schema
功能相容性
- 相容:Batch Processing、Token Counting、Streaming
- 不相容:Citations、Message Prefilling
六、Citations:引用
基本概念
Citations 讓 Claude 在回答文件相關問題時提供詳細的引用來源,幫助追蹤和驗證資訊。所有活躍模型(Haiku 3 除外)均支援此功能。
運作方式
- 提供文件並啟用 citations(
citations.enabled=true) - 文件被處理和分塊
- Claude 回覆中包含引用資訊
文件類型
| 類型 | 適用場景 | 分塊方式 | 引用格式 |
|---|---|---|---|
| Plain Text | 簡單文字、散文 | 句子 | 字元索引(0-based) |
| 含文字的 PDF | 句子 | 頁碼(1-based) | |
| Custom Content | 列表、逐字稿、特殊格式 | 不額外分塊 | 區塊索引(0-based) |
回應結構
啟用 citations 後,回應包含多個 text blocks,每個 text block 可包含 Claude 的宣稱和支持該宣稱的引用列表:
{
"type": "text",
"text": "草是綠色的",
"citations": [{
"type": "char_location",
"cited_text": "The grass is green.",
"document_index": 0,
"start_char_index": 0,
"end_char_index": 20
}]
}
Token 成本
- 啟用 citations 會因系統提示和文件分塊而略增 input tokens
cited_text欄位不計入 output tokens- 在後續對話輪次中傳回時,
cited_text也不計入 input tokens
功能相容性
- 相容:Prompt Caching、Token Counting、Batch Processing
- 不相容:Structured Outputs(JSON output format)
七、Streaming Messages:串流訊息
基本概念
透過設定 "stream": true,使用 Server-Sent Events(SSE)逐步接收回應。
SDK 使用方式
with client.messages.stream(
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
model="claude-opus-4-6",
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
取得完整 Message(不處理事件)
若不需要逐步處理文字,SDK 提供在底層使用 streaming 但回傳完整 Message 物件的方式:
with client.messages.stream(
max_tokens=128000,
messages=[{"role": "user", "content": "撰寫詳細分析..."}],
model="claude-opus-4-6",
) as stream:
message = stream.get_final_message()
當 max_tokens 大於 21,333 時,SDK 會強制要求使用 streaming 以避免 HTTP timeout。
事件類型
串流使用以下事件流程:
message_start:包含空content的 Message 物件- 一系列 content blocks,各含
content_block_start、多個content_block_delta、content_block_stop message_delta:頂層 Message 變更(如stop_reason)message_stop:串流結束
Content Block Delta 類型
text_delta:文字內容增量input_json_delta:工具呼叫的 JSON 參數增量(為 partial JSON 字串)thinking_delta:Extended Thinking 的思考內容增量signature_delta:思考區塊的簽名citations_delta:引用資訊增量
錯誤復原
- Claude 4.5 及更早版本:可透過將部分回應作為 assistant message 的開頭來恢復中斷的串流
- Claude 4.6:需加入 user message 指示模型從中斷處繼續
八、Batch Processing:批次處理
基本概念
Message Batches API 是一種強大且節省成本的方式,用於異步處理大量 Messages 請求。特別適合不需即時回應的任務,大多數批次在 1 小時內完成,同時降低 50% 的成本。
定價
所有用量均以標準 API 價格的 50% 計費:
| 模型 | 批次 Input | 批次 Output |
|---|---|---|
| Claude Opus 4.6 | $2.50 / MTok | $12.50 / MTok |
| Claude Sonnet 4.6 | $1.50 / MTok | $7.50 / MTok |
| Claude Haiku 4.5 | $0.50 / MTok | $2.50 / MTok |
批次限制
- 每批次最多 100,000 個 Message 請求或 256 MB(以先達到者為準)
- 處理時間最長 24 小時
- 結果可在建立後 29 天內取用
- 批次以 Workspace 為範圍
使用方式
message_batch = client.messages.batches.create(
requests=[
Request(
custom_id="request-1",
params=MessageCreateParamsNonStreaming(
model="claude-opus-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
),
),
]
)
可批次處理的功能
任何可透過 Messages API 發送的請求都可加入批次:Vision、Tool Use、System Messages、多輪對話、任何 beta 功能。
結果類型
| 結果類型 | 說明 |
|---|---|
succeeded | 請求成功 |
errored | 請求遇到錯誤(不計費) |
canceled | 使用者在處理前取消(不計費) |
expired | 24 小時過期(不計費) |
與 Prompt Caching 搭配
批次處理支援 Prompt Caching,但由於異步併行處理,cache hit 僅以 best-effort 方式提供,通常 cache hit rate 介於 30%-98%。
九、PDF Support:PDF 處理
基本概念
Claude 可以理解 PDF 中的文字、圖片、圖表和表格,適用於分析財務報告、提取法律文件資訊、翻譯文件、將文件資訊轉換為結構化格式等場景。
需求與限制
| 需求 | 限制 |
|---|---|
| 最大請求大小 | 32MB |
| 每次請求最大頁數 | 100 |
| 格式 | 標準 PDF(無密碼/加密) |
提供 PDF 的三種方式
- URL 引用:直接引用線上 PDF 的 URL
- Base64 編碼:將 PDF 轉為 base64 後放入
documentcontent block - Files API:上傳 PDF 後以
file_id引用
處理流程
- 系統將每頁轉換為圖片,同時提取每頁的文字
- Claude 分析文字和圖片以理解文件
- Claude 回覆時可同時引用文字和視覺內容
Token 成本估算
- 文字 token:每頁通常 1,500-3,000 tokens
- 圖片 token:每頁轉換為圖片後,套用 Vision 的成本計算
效能最佳實踐
- 將 PDF 放在文字之前
- 使用標準字體
- 確保文字清晰可讀
- 將頁面旋轉到正確方向
- 在提示中使用邏輯頁碼
- 大型 PDF 分塊處理
- 啟用 Prompt Caching 以加速重複分析
Amazon Bedrock 上的 PDF 支援
Bedrock 的 Converse API 有兩種模式:
- Converse Document Chat(原始模式):僅基本文字提取
- Claude PDF Chat(新模式):完整視覺理解,需啟用 citations
十、Search Results:搜尋結果
基本概念
Search Result content blocks 為 RAG 應用程式啟用自然引用和來源歸屬功能,將 web search 品質的引用帶到自訂應用程式中。
提供方式
- 從工具呼叫回傳:自訂工具回傳搜尋結果,適合動態 RAG
- 作為頂層內容:直接在 user messages 中提供搜尋結果
Schema 結構
{
"type": "search_result",
"source": "https://example.com/article",
"title": "文章標題",
"content": [
{"type": "text", "text": "搜尋結果的實際內容..."}
],
"citations": {"enabled": true}
}
引用格式
Claude 使用搜尋結果中的資訊時,會自動包含引用:
{
"type": "search_result_location",
"source": "https://example.com",
"title": "文章標題",
"cited_text": "被引用的確切文字",
"search_result_index": 0,
"start_block_index": 0,
"end_block_index": 0
}
引用控制
預設情況下 citations 是停用的。需要明確設定 citations.enabled: true 來啟用。注意:同一請求中所有搜尋結果的 citations 設定必須一致(全部啟用或全部停用)。
支援模型
所有主要 Claude 模型均支援,包括 Opus 4.6、Sonnet 4.6、Sonnet 4.5、Opus 4.5、Opus 4.1、Opus 4、Sonnet 4、Haiku 4.5 等。
十一、Multilingual Support:多語言支援
效能表現
Claude 在多語言任務中表現出色,以英語(100%)為基準的相對效能:
| 語言 | Opus 4.1 | Sonnet 4.5 | Haiku 4.5 |
|---|---|---|---|
| 西班牙語 | 98.1% | 98.2% | 96.4% |
| 葡萄牙語 | 97.8% | 97.8% | 96.1% |
| 法語 | 97.9% | 97.5% | 95.7% |
| 中文(簡體) | 97.1% | 96.9% | 94.2% |
| 日語 | 96.9% | 96.8% | 93.5% |
| 韓語 | 96.6% | 96.7% | 93.3% |
| 阿拉伯語 | 97.1% | 97.2% | 92.5% |
| 印地語 | 96.8% | 96.7% | 92.4% |
| 孟加拉語 | 95.7% | 95.4% | 90.4% |
| 斯瓦希里語 | 89.8% | 91.1% | 78.3% |
| 約魯巴語 | 80.3% | 79.7% | 52.7% |
上述數據基於 MMLU 測試集的翻譯版本,由專業人工翻譯。
最佳實踐
- 提供清晰的語言上下文:明確指定輸入/輸出語言以提高可靠性
- 使用原生文字:以原生文字(而非音譯)提交文字可獲最佳效果
- 考慮文化脈絡:有效溝通需要語言之外的文化和地區意識
語言支援考量
- Claude 可處理大多數使用標準 Unicode 字元的世界語言
- 效能因語言而異,廣泛使用的語言表現特別強
- 即使在數位資源較少的語言中,Claude 仍維持有意義的能力
十二、Embeddings:嵌入向量
基本概念
文字嵌入(text embeddings)是文字的數值表示,用於衡量語義相似度。Anthropic 本身不提供嵌入模型,推薦使用 Voyage AI。
Voyage AI 推薦模型
| 模型 | Context Length | 維度 | 說明 |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 | 最佳通用和多語言檢索品質 |
voyage-3.5 | 32,000 | 1024 | 平衡效能與檢索品質 |
voyage-3.5-lite | 32,000 | 1024 | 最佳延遲和成本 |
voyage-code-3 | 32,000 | 1024 | 程式碼檢索最佳化 |
voyage-finance-2 | 32,000 | 1024 | 金融領域最佳化 |
voyage-law-2 | 16,000 | 1024 | 法律領域最佳化 |
此外還有多模態模型 voyage-multimodal-3,可處理交錯的文字和圖片內容。
使用方式
import voyageai
vo = voyageai.Client()
texts = ["範例文字 1", "範例文字 2"]
result = vo.embed(texts, model="voyage-3.5", input_type="document")
重要參數
input_type:對檢索任務必須指定"document"或"query"output_dtype:支援float、int8、uint8、binary、ubinary量化選項
相似度函式
Voyage 嵌入已正規化為長度 1,因此 dot-product 和 cosine similarity 等效,且計算更快。
十三、Vision:視覺能力
基本概念
Claude 的視覺能力允許理解和分析圖片,開啟多模態互動的可能性。
基本限制
- 單一請求最多 100 張圖片(API)或 20 張(claude.ai)
- 單張圖片最大 8000x8000 px(超過 20 張時限 2000x2000 px)
- 單張圖片最大 5MB(API)或 10MB(claude.ai)
- 支援格式:JPEG、PNG、GIF、WebP
提供圖片的三種方式
- Base64 編碼:直接在
imagecontent block 中提供 - URL 引用:引用線上圖片的 URL
- Files API:上傳後以
file_id引用
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://example.com/image.jpg",
},
},
{"type": "text", "text": "描述這張圖片。"},
],
}],
)
圖片大小與 Token 成本
最佳做法是在上傳前調整圖片大小。長邊超過 1568 pixels 的圖片會被縮放。Token 計算公式:tokens = (width px * height px) / 750
範例成本(基於 Opus 4.6 的 $3/MTok input):
| 圖片大小 | Token 數 | 每張成本 |
|---|---|---|
| 200x200 px | ~54 | ~$0.00016 |
| 1000x1000 px | ~1334 | ~$0.004 |
| 1092x1092 px | ~1590 | ~$0.0048 |
最佳實踐
- 圖片放在文字之前可獲最佳效果
- 確保圖片清晰、不模糊
- 重要文字確保可讀且不過小
- 多張圖片時使用「Image 1:」「Image 2:」標註
限制
- 無法辨識(即命名)圖片中的人物
- 低品質、旋轉或過小圖片可能導致錯誤
- 空間推理能力有限(如讀類比時鐘、描述棋子位置)
- 大量小物體的計數可能不精確
- 無法判斷圖片是否為 AI 生成
- 不處理違反使用政策的不當或明確內容
- 不適用於複雜診斷掃描(CT、MRI)
- Claude 只能理解圖片,不能生成或編輯圖片
總結
Claude 的 Model Capabilities 涵蓋了從深度推理(Extended Thinking、Adaptive Thinking)到效率控制(Effort、Fast Mode),從結構化輸出(Structured Outputs)到來源追蹤(Citations、Search Results),從串流處理(Streaming)到批量運算(Batch Processing),再到多模態處理(PDF Support、Vision)和多語言支援。每項能力都可獨立使用或互相搭配,為開發者構建複雜 AI 應用提供了完整的工具箱。
在實際開發中,建議根據場景選擇合適的能力組合。例如:需要高品質推理的任務可啟用 Adaptive Thinking 搭配 high effort;需要快速回應的簡單任務可使用 low effort 甚至 Fast Mode;需要處理大量資料的場景適合 Batch Processing 搭配 Prompt Caching;RAG 應用可結合 Search Results 和 Citations 實現精確的來源歸屬。