網頁擷取工具允許 Claude 從指定的網頁和 PDF 文件中擷取完整內容。
最新的網頁擷取工具版本(web_fetch_20260318)支援搭配 Claude Fable 5、Claude Opus 4.8、Claude Mythos 5、Claude Mythos Preview、Claude Opus 4.7、Claude Opus 4.6 和 Claude Sonnet 4.6 使用的動態過濾功能。Claude 可以編寫並執行程式碼,在擷取的內容進入「context window」(上下文視窗)之前進行過濾,僅保留相關資訊並捨棄其餘部分。這可在維持回應品質的同時減少 token 消耗。web_fetch_20260318 也新增了用於代理式工作流程的回應包含控制。先前的版本(web_fetch_20260309 用於動態過濾和快取繞過、web_fetch_20260209 僅用於動態過濾、web_fetch_20250910 用於基本擷取)仍然可用。
對於 Claude Mythos Preview,網頁擷取可在 Claude API 和 Microsoft Foundry 上使用。目前在 Amazon Bedrock 或 Vertex AI 上的 Mythos Preview 尚不支援此功能。
請使用意見回饋表單提供關於模型回應品質、API 本身或文件品質的意見回饋。
關於零資料保留(Zero Data Retention)資格和 allowed_callers 解決方法,請參閱伺服器工具。
在 Claude 同時處理不受信任的輸入與敏感資料的環境中啟用網頁擷取工具,會帶來資料外洩風險。請僅在受信任的環境中或處理非敏感資料時使用此工具。
為了將外洩風險降至最低,Claude 不被允許動態建構 URL。Claude 只能擷取使用者明確提供的 URL,或來自先前網頁搜尋或網頁擷取結果的 URL。然而,使用此工具時仍存在應審慎考量的殘餘風險。
如果您擔心資料外洩,請考慮:
max_uses 參數限制請求次數allowed_domains 參數限制為已知的安全網域關於模型支援,請參閱工具參考。
當您在 API 請求中加入網頁擷取工具時:
網頁擷取工具目前不支援使用 JavaScript 動態渲染的網站。
當請求指向特定頁面或文件時,Claude 會進行擷取:
對於未參照特定頁面的一般知識或開放式問題,Claude 不會進行擷取。「摘要這篇文章:<url>」會觸發擷取;「REST API 設計的最佳實務是什麼?」則會直接回答。
擷取完整的網頁和 PDF 可能會快速消耗 token,尤其是當只需要從大型文件中取得特定資訊時。使用 web_fetch_20260209 或更新版本時,Claude 可以編寫並執行程式碼,在將擷取的內容載入上下文之前進行過濾。
此動態過濾功能特別適用於:
動態過濾需要啟用程式碼執行工具。網頁擷取工具(無論是否啟用動態過濾)可在 Claude API、AWS 上的 Claude Platform 和 Microsoft Foundry 上使用。目前在 Amazon Bedrock 或 Vertex AI 上尚不支援。
若要啟用動態過濾,請使用 web_fetch_20260209 或任何更新版本。以下範例使用 web_fetch_20260209:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Fetch the content at https://example.com/research-paper and extract the key findings.",
}
],
tools=[{"type": "web_fetch_20260209", "name": "web_fetch"}],
)
print(response)在您的 API 請求中提供網頁擷取工具:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Please analyze the content at https://example.com/article",
}
],
tools=[{"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}],
)
print(response)網頁擷取工具支援以下參數:
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// Optional: Limit the number of fetches per request
"max_uses": 10,
// Optional: Only fetch from these domains
"allowed_domains": ["example.com", "docs.example.com"],
// Optional: Never fetch from these domains
"blocked_domains": ["private.example.com"],
// Optional: Enable citations for fetched content
"citations": {
"enabled": true
},
// Optional: Maximum content length in tokens
"max_content_tokens": 100000
}max_uses 參數限制執行網頁擷取的次數。如果 Claude 嘗試的擷取次數超過允許值,web_fetch_tool_result 會是一個帶有 max_uses_exceeded 錯誤代碼的錯誤。目前沒有預設限制。
關於使用 allowed_domains 和 blocked_domains 進行網域過濾,請參閱伺服器工具。
max_content_tokens 參數限制包含在上下文中的內容量。如果擷取的內容超過此限制,工具會將其截斷。這有助於在擷取大型文件時控制 token 使用量。
max_content_tokens 參數限制為近似值。實際使用的輸入 token 數量可能會有少量差異。
需要 web_fetch_20260309 或更新版本(包括 web_fetch_20260318)。
use_cache 參數控制是否可以傳回快取的內容。設定 "use_cache": false 以繞過快取並擷取最新內容;預設值為 true。僅在使用者明確要求最新內容或擷取快速變化的來源時才停用快取,因為繞過快取會增加延遲。
需要 web_fetch_20260318 或更新版本。
response_inclusion 參數控制當擷取結果在同一回合中被已完成的程式碼執行呼叫消耗時,擷取結果區塊在 API 回應中的顯示方式。設定 "response_inclusion": "excluded" 可從回應中完全移除那些巢狀的 server_tool_use 和結果區塊配對,為不需要將原始頁面內容回傳給用戶端的代理式工作流程降低輸出 token 成本。預設值為 "full"。來自直接呼叫的結果,或來自在完成前暫停的程式碼執行呼叫的結果,一律會完整傳回,以便在下一回合中送回。
{
"tools": [
{
"type": "web_fetch_20260318",
"name": "web_fetch",
"response_inclusion": "excluded"
}
]
}與網頁搜尋一律啟用引用不同,網頁擷取的引用是選擇性的。設定 "citations": {"enabled": true} 以啟用 Claude 引用擷取文件中的特定段落。
當直接向終端使用者顯示 API 輸出時,必須包含對原始來源的引用。如果您對 API 輸出進行修改,包括在向終端使用者顯示之前重新處理和/或與您自己的素材結合,請根據與您法務團隊的諮詢結果適當地顯示引用。
以下是回應結構範例:
{
"role": "assistant",
"content": [
// 1. Claude's decision to fetch
{
"type": "text",
"text": "I'll fetch the content from the article to analyze it."
},
// 2. The fetch request
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": {
"url": "https://example.com/article"
}
},
// 3. Fetch results
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_01234567890abcdef",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/article",
"content": {
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "Full text content of the article..."
},
"title": "Article Title",
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:00Z"
}
},
// 4. Claude's analysis with citations (if enabled)
{
"text": "Based on the article, ",
"type": "text"
},
{
"text": "the main argument presented is that artificial intelligence will transform healthcare",
"type": "text",
"citations": [
{
"type": "char_location",
"document_index": 0,
"document_title": "Article Title",
"start_char_index": 1234,
"end_char_index": 1456,
"cited_text": "Artificial intelligence is poised to revolutionize healthcare delivery..."
}
]
}
],
"id": "msg_a930390d3a",
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"server_tool_use": {
"web_fetch_requests": 1
}
},
"stop_reason": "end_turn"
}擷取結果包含:
url:被擷取的 URLcontent:包含擷取內容的文件區塊retrieved_at:擷取內容時的時間戳記網頁擷取工具會快取結果以提升效能並減少重複請求。傳回的內容可能不一定反映該 URL 上可用的最新版本。快取行為會自動管理,並可能隨時間變更以針對不同的內容類型和使用模式進行最佳化。
對於 PDF 文件,內容會以 base64 編碼資料的形式傳回:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_02",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/paper.pdf",
"content": {
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmo..."
},
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:02Z"
}
}當網頁擷取工具遇到錯誤時,Claude API 會傳回 200(成功)回應,並在回應主體中表示該錯誤:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_error",
"error_code": "url_not_accessible"
}
}以下是可能的錯誤代碼:
invalid_input:無效的 URL 格式url_too_long:URL 超過最大長度(250 個字元)url_not_allowed:URL 被網域過濾規則和模型限制封鎖url_not_accessible:無法擷取內容(HTTP 錯誤)too_many_requests:超過速率限制unsupported_content_type:不支援的內容類型(僅支援文字和 PDF)max_uses_exceeded:超過網頁擷取工具的最大使用次數unavailable:發生內部錯誤基於安全考量,網頁擷取工具只能擷取先前已出現在對話上下文中的 URL。這包括:
此工具無法擷取 Claude 產生的任意 URL,或來自基於容器的伺服器工具(程式碼執行、Bash 等)的 URL。
網頁擷取可與網頁搜尋無縫協作,以進行全面的資訊收集:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Find recent articles about quantum computing and analyze the most relevant one in detail",
}
],
tools=[
{"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5,
"citations": {"enabled": True},
},
],
)
print(response)在此工作流程中,Claude 將會:
當網頁搜尋和網頁擷取工具都啟用,且使用者指名特定頁面或文件但未提供 URL 時(例如「閱讀 anthropics/anthropic-sdk-python 儲存庫的 README」),Claude 會使用網頁搜尋找到它,然後擷取該結果。
關於跨回合快取工具定義,請參閱工具使用與提示快取。
啟用「streaming」(串流)時,擷取事件是串流的一部分,在內容擷取期間會有暫停:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_abc123", "type": "message"}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}
// Claude's decision to fetch
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_fetch"}}
// Fetch URL streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"url\":\"https://example.com/article\"}"}}
// Pause while fetch executes
// Fetch results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_fetch_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "web_fetch_result", "url": "https://example.com/article", "content": {"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "Article content..."}}}}}
// Claude's response continues...您可以在 Messages Batches API 中包含網頁擷取工具。透過 Messages Batches API 進行的網頁擷取工具呼叫,其定價與一般 Messages API 請求中的呼叫相同。
網頁擷取的使用除了標準 token 費用外,不會產生額外費用:
{
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": {
"web_fetch_requests": 1
}
}
}網頁擷取工具在 Claude API 上可供使用,且無需額外費用。您只需為成為對話上下文一部分的擷取內容支付標準 token 費用。
為了避免無意間擷取大量內容而消耗過多 token,請使用 max_content_tokens 參數,根據您的使用情境和預算考量設定適當的限制。
典型內容的 token 使用量範例:
Was this page helpful?