使用 Claude 建構 LLM 驅動的應用程式
此技能可協助您使用 Claude 建構 LLM 驅動的應用程式。根據您的需求選擇合適的界面,檢測專案語言,然後閱讀相關的語言特定文件。
開始之前
掃描目標檔案(或如果沒有目標檔案,則掃描提示和專案)中是否存在非 Anthropic 提供者的標記 - import openai、from openai、langchain_openai、OpenAI(、gpt-4、gpt-5、檔案名稱如 agent-openai.py 或 *-generic.py,或任何明確指示保持程式碼提供者中立的說明。如果您發現任何此類標記,請停止並告知使用者此技能會產生 Claude/Anthropic SDK 程式碼;詢問他們是否要將檔案切換為 Claude,或者想要非 Claude 的實作。切勿使用 Anthropic SDK 呼叫編輯非 Anthropic 的檔案。(例外:prompt-audit 子命令是非互動式的,不會在此處停止 - 它會在報告的陳述假設中記錄非 Anthropic 提供者標記,並且絕不建議將非 Anthropic 檔案切換為 Anthropic SDK。)
輸出要求
當使用者要求您新增、修改或實作 Claude 功能時,您的程式碼必須透過下列其中一種方式呼叫 Claude:
- 專案語言的官方 Anthropic SDK(
anthropic、@anthropic-ai/sdk、com.anthropic.*等)。只要專案存在支援的 SDK,這就是預設選擇。 - 原始 HTTP(
curl、requests、fetch、httpx等)— 僅當使用者明確要求 cURL/REST/原始 HTTP、專案是 shell/cURL 專案,或該語言沒有官方 SDK 時。
切勿混合使用兩者 — 不要僅僅因為感覺更輕量就在 Python 或 TypeScript 專案中使用 requests/fetch。切勿退而求其次使用 OpenAI 相容的適配層。
絕不猜測 SDK 用法。 函式名稱、類別名稱、命名空間、方法簽章和匯入路徑必須來自明確的文件 — 可以是此技能中的 {lang}/ 檔案,也可以是 shared/live-sources.md 中列出的官方 SDK 儲存庫或文件連結。如果您需要的繫結在技能檔案中沒有明確記錄,請在撰寫程式碼前,從 shared/live-sources.md 中 WebFetch 相關的 SDK 儲存庫。不要從 cURL 形狀或其他語言的 SDK 推斷 Ruby/Java/Go/PHP/C# 的 API。
如果 WebFetch 或儲存庫存取失敗(網路限制、逾時、克隆被封鎖):不要一直重試 — 從 {lang}/ 檔案中的模式和命名空間/套件表格撰寫程式碼,在其上執行編譯器或直譯器,並根據錯誤輸出進行迭代。對於靜態型別 SDK(C#、Java、Go),針對本地錯誤的編譯-修正迴圈比被封鎖的網路研究更快得到可運作的程式碼。
預設值
除非使用者另有要求:
對於 Claude 模型版本,請使用 Claude Opus 5.5,您可以透過確切的模型字串 claude-opus-5-5 存取。對於任何稍微複雜的事情,請預設使用適應性思考(thinking: {type: "adaptive"})。最後,對於任何可能涉及長輸入、長輸出或高 max_tokens 的請求,請預設使用串流 — 它可以防止請求逾時。如果您不需要處理個別串流事件,請使用 SDK 的 .get_final_message() / .finalMessage() 輔助方法來取得完整回應。當串流請求定義了使用者定義的(客戶端)工具時,在每個工具上設定 eager_input_streaming: true,以便大型工具輸入(檔案內容、程式碼、文件)在產生時即時串流,而不是在伺服器完成緩衝後一次性到達;然後客戶端負責驗證:SDK 的寬鬆解析器可能會回傳一個靜默截斷的輸入而不是引發異常,因此在執行之前,請針對其 schema 驗證每個解析後的工具輸入(型別化的執行器輔助方法如 betaZodTool / 型別化的 @beta_tool 會執行此操作;betaTool() JSON-Schema 工具和手動迴圈必須自行驗證),將失敗視為無效的 JSON(當您持有區塊時,回傳 INVALID_JSON 錯誤的 tool_result,否則重新發出),在執行工具前檢查 max_tokens / refusal 停止原因,並且只捕獲 SDK 的 JSON 錯誤,而不是其型別化的 API 錯誤 — 模式請參考 shared/tool-use-concepts.md -> 急切輸入串流。對於非串流請求、伺服器工具,以及當請求通過代理或拒絕該欄位的較舊 Bedrock 模型部署時,請將其保持關閉。
警告:API 漂移 - 您的訓練先備知識可能已過時
幾個常見的 Claude API 形狀在 2025-2026 年發生了變化。如果您從訓練中回憶起某個模式,請在撰寫程式碼前根據此技能中的 {lang}/ 檔案進行驗證 — 下表為最常見的漂移點:
| 領域 | 過時的先前知識 | 當前 API |
|---|---|---|
| 擴展思考 | thinking: {type: "enabled", budget_tokens: N} | 在 Claude 4.6+ 模型上:thinking: {type: "adaptive"}。budget_tokens 在 Opus 4.6 / Sonnet 4.6 上已棄用,並在 Fable 5/5.1 / Sonnet 5.5 / Sonnet 5 / Opus 5.5 / 5 / 4.8 / 4.7 上回傳 400 錯誤。4.6 之前的模型仍使用 budget_tokens。 |
| 網路搜尋 / 網路擷取工具類型 | web_search_20250305、web_fetch_20250910 | web_search_20260209、web_fetch_20260209(動態過濾)用於 Opus 5.5/5/4.8/4.7/4.6、Sonnet 5.5、Sonnet 5 和 Sonnet 4.6。較舊的模型保留基本變體;在 Vertex AI 上僅提供基本的 web_search_20250305(Vertex 上沒有網路擷取)— 請參閱下方的伺服器工具 QR。 |
| PHP 參數名稱 | snake_case 有線格式作為命名引數(max_tokens) | 頂層命名引數為 camelCase(maxTokens)。巢狀陣列鍵因功能而異(例如 'taskBudget'、'skillID'、'mcp_server_name')— 從記錄的範例中複製確切的鍵;不要批量轉換。 |
| 受管代理憑證 | 透過自訂工具在宿主端保密(在保管庫推出前是唯一選項) | Vault environment_variable 憑證 — 由 Anthropic 儲存,在出口時替換,在沙箱中永遠不可見(shared/managed-agents-tools.md -> Vaults)。宿主端自訂工具仍然是自托管沙箱的備用方案。 |
| Files API / Skills | client.beta.files.* / client.beta.skills.* 帶有 beta files-api-2025-04-14 / skills-2025-10-02 | 已結束測試:client.files.* / client.skills.*,無 beta 標頭。在當前的 SDK 中,client.beta.files / client.beta.skills 與先前版本相比具有破壞性的形狀變更,與穩定的命名空間相匹配 — 請根據 shared/live-sources.md -> Files API / Skills Guide 進行遷移。 |
此技能中的 {lang}/ 檔案權威性高於回憶的模式。
子命令
如果此提示底部的使用者請求是單純的子命令字串(無 prose),請搜尋此文件中的所有子命令表格 — 包括下方附加的章節中的表格 — 並直接遵循匹配的動作欄位。這讓使用者可以透過 /claude-api <subcommand> 調用特定流程。如果文件中沒有表格匹配,則將請求視為一般的 prose。
| 子命令 | 動作 |
|---|---|
migrate | 將現有的 Claude API 程式碼遷移至更新的模型。立即閱讀 shared/model-migration.md 並按順序執行:步驟 0(確認範圍 — 在任何編輯前詢問要處理哪些檔案/目錄)、步驟 1(分類每個檔案),然後是每個目標的破壞性變更章節。不要總結指南 — 執行它。如果使用者沒有指定目標模型,請在同一次詢問中詢問要遷移到哪個模型以及範圍問題。在應用每個目標的變更後,根據 shared/prompt-audit.md 審查範圍內的提示文字、工具描述和請求程式碼 — 為來源模型撰寫的提示是每次遷移的一部分,並且它不會自我宣告。 |
prompt-audit | 審查現有的提示、工具描述、技能和代理設定檔(CLAUDE.md、規則檔案、指令、子代理)是否有過時的模式(「廢料」):為較舊模型撰寫的文字,以及儲存庫已不再需要或相互矛盾的指示。立即閱讀 shared/prompt-audit.md 並按順序執行:步驟 0(根據請求和儲存庫建立範圍和目標模型 — 在報告中陳述假設,不要停下來詢問)、庫存、來源,然後是模式掃描。完整產出兩個交付物 — 審查報告(包含 file:line、模式、為何過時、信心的發現)和建議的 diff — 無需暫停等待確認;僅當請求明確要求時才應用編輯。不要總結指南 — 執行它。 |
upgrade | 跨主要版本升級專案的 Anthropic SDK 依賴項 — 目前是 Python SDK,anthropic 0.x -> 1.x。尾隨字詞可能指定語言和/或範圍(upgrade python、upgrade python sdk src/)。立即閱讀 python/claude-api/sdk-upgrade.md 並按順序執行:步驟 0(確認範圍,然後建立當前和目標版本 — 必須存在已發布的 1.x 才能撰寫固定版本)、步驟 1 庫存、每個編號章節,然後是驗證和報告。不要總結指南 — 執行它。如果檢測到或指定的語言在此技能中沒有 sdk-upgrade.md,請說明該 SDK 尚未捆綁主要版本升級指南,並引導使用者參考該 SDK 的 CHANGELOG(shared/live-sources.md 中的儲存庫);不要從 Python 指南自行編造一個。這不是模型遷移 — 要將程式碼遷移到更新的 Claude 模型,請使用 migrate。 |
cost-optimize | 在不犧牲輸出品質的情況下,降低現有 Claude API 程式碼的執行成本。立即閱讀 shared/cost-optimization.md 並按順序執行:步驟 0(建立範圍、品質基準和基線)、Token 輪廓 — 當使用者擁有管理 API 金鑰時透過 Usage and Cost Admin API 測量,當應用程式有自己的 response.usage 日誌時從中測量(詢問),否則從程式碼估算 — 然後是儲蓄排序的槓桿簡短清單(以美元、帳單百分比或相對級距報價,具體取決於您擁有的數據來源)、免費勝場(快取、輸入 Token 衛生、迴圈衛生、輸出 Token 衛生、批次),然後才是權衡(預算、工作量、模型選擇、多模型);任何獲得位置的槓桿都會成為自己的 diff — 預設提議,當使用者要求並批准時應用,並針對其影響的流量進行評估覆蓋 — 而「不建議更改」是一個有效的結果。兩條常規:每次執行模型都會花費真金白銀,因此請先獲得使用者的批准;並且當缺少某個槓桿的背景資訊時,請與使用者互動解決 — 此工作流程不預期一次完成審查。不要總結指南 — 執行它;向使用者呈現輪廓和排名計劃是執行的一部分。 |
build-eval | 協助使用者為其 Claude 驅動的應用程式建立評估集。立即閱讀 shared/evals/build-eval.md 並執行其訪談:步驟 0(正在評估什麼)、步驟 1(獲取提示來源 — 現有評估 / 記錄 / 合成)、步驟 2(評分方法)、步驟 3(可執行腳本 + 測量成本)。在產出評估之前,獲得使用者對輸入、評分方法和成本的明確批准。 |
preserved-thinking-migration | 使現有整合與保留思考相容 — 該檢查確保思考區塊僅在產生它的對話中有效。立即閱讀 shared/preserved-thinking-migration.md 並按順序執行:步驟 0(範圍、流量類別、平台和模型、執行狀態、品質基準、基線)、步驟 0.5(使用三請求自我測試證明檢查正在執行)、步驟 1(捕獲請求體、使用 shared/preserved-thinking-migration/prefix_diff.py 區分連續對、掃描程式碼以找出原因、命名每個編輯以及它是否是有意的)、步驟 2(在 thinking-binding-controls-2026-08-01 標頭下使用 prefix_mismatch_behavior: "drop_block" 重放測試切片、計算每個對話中新增的丟棄區塊、在存在時讀取診斷標頭)、步驟 3(每個原因一個 diff,按推理遺失的順序 — 預設提議,在使用者要求時應用 — 然後重新測量、保留或還原;當評估存在時的三臂協議)、當路由在模型之間切換時(在 shared/preserved-thinking-migration/causes.md 中,包含原因表和保留清單)的模型切換章節、步驟 4(中斷輪廓和變更)。兩條常規:每次重放都會花費真金白銀,因此請先獲得使用者對測量預算的批准;而「不建議更改」 — 切片重放了思考且沒有丟棄任何內容 — 是一個有效的結果。僅在較新的 beta 下具有僅附加形式的原因(保留尾部與背景壓縮:compact-2026-09-04;同名工具變更:inline-tools-2026-09-15)在該 beta 不可用時,會被測量和決定,而不是重寫。至於原因(三步驟檢查、僅附加編輯表),它鏈接到 shared/model-migration.md -> 破壞性變更 3;不要總結指南 — 執行它。 |
hillclimb | 針對現有評估迭代改善使用者的應用程式。立即閱讀 shared/evals/eval-hillclimb.md 並遵循:步驟 0(確認存在可運行的評估 — 如果沒有,路由到 build-eval)、步驟 1(要更改什麼 / 哪些是禁止觸碰的)、步驟 2(基於每次運行測量成本的預算 + 停止條件)、獲得計劃批准,然後是讀取->提議->應用->運行->記錄迴圈,並帶有磁碟狀態和訓練/驗證/測試分割。 |
語言檢測
在閱讀程式碼範例之前,確定使用者正在使用的語言(例外:對於 prompt-audit 子命令,跳過此章節的詢問步驟 — 審查是非互動式的,且其庫存是語言無關的;當無法推斷出語言時,繼續無需詢問,並在報告中陳述假設):
- 查看專案檔案以推斷語言:
*.py、requirements.txt、pyproject.toml、setup.py、Pipfile-> Python — 從python/讀取*.ts、*.tsx、`packag