載入中

Anthropic API 提供兩項強大的功能,它們搭配使用時效果特別出色:Files API 與 Code Execution(程式碼執行)。雖然乍看之下它們似乎是各自獨立的功能,但將兩者結合起來,卻能為將複雜任務委派給 Claude 開啟一些非常有趣的可能性。

Files API

Files API 提供了一種處理檔案上傳的替代方式。您不必將圖片或 PDF 以 base64 資料的形式直接編碼在訊息中,而是可以事先上傳檔案,之後再參照它們。

運作方式如下:

  • 使用獨立的 API 呼叫將您的檔案(圖片、PDF、文字等)上傳至 Claude
  • 接收一個包含唯一檔案 ID 的檔案元資料物件
  • 在未來的訊息中參照該檔案 ID,而不必包含原始檔案資料

當您想要多次參照同一個檔案,或是處理若每次請求都包含會顯得繁瑣的較大檔案時,這種方式特別有用。

Code Execution 工具

Code execution(程式碼執行)是一種伺服器端工具,不需要您提供實作。您只需在請求中包含一個預先定義的工具結構(schema),Claude 便可以選擇在隔離的 Docker 容器中執行 Python 程式碼。

程式碼執行環境的主要特性:

  • 在隔離的 Docker 容器中執行
  • 沒有網路存取權限(無法進行外部 API 呼叫)
  • Claude 可以在單次對話中多次執行程式碼
  • 結果會被擷取並由 Claude 解讀,以產生最終回應

結合 Files API 與 Code Execution

真正的強大之處在於將這些功能結合使用。由於 Docker 容器沒有網路存取權限,Files API 便成為將資料傳入與傳出執行環境的主要方式。

以下是典型的工作流程:

  1. 使用 Files API 上傳您的資料檔案(例如 CSV)
  2. 在您的訊息中包含一個帶有該檔案 ID 的容器上傳區塊(container upload block)
  3. 請 Claude 分析資料
  4. Claude 撰寫並執行程式碼以處理您的檔案
  5. Claude 可以產生輸出(例如圖表),供您下載

實際範例

讓我們來看一個使用串流服務資料的實際範例。這個 CSV 檔案包含使用者資訊,包括訂閱方案等級、觀看習慣,以及他們是否已流失(取消訂閱)。

首先,使用輔助函式上傳檔案:

python
file_metadata = upload('streaming.csv')

接著建立一則訊息,其中同時包含已上傳的檔案以及分析請求:

python
messages = []
add_user_message(
    messages,
    [
        {
            "type": "text",
            "text": """Run a detailed analysis to determine major drivers of churn.
            Your final output should include at least one detailed plot summarizing your findings."""
        },
        {"type": "container_upload", "file_id": file_metadata.id},
    ],
)

chat(
    messages,
    tools=[{"type": "code_execution_20250522", "name": "code_execution"}]
)

理解回應內容

當 Claude 使用程式碼執行時,回應中會包含多種類型的區塊:

  • 文字區塊 - Claude 的分析與說明
  • 伺服器工具使用區塊 - Claude 決定執行的實際程式碼
  • 程式碼執行工具結果區塊 - 執行程式碼後的輸出

Claude 可能在單次回應中多次執行程式碼,逐步建構其分析。每個執行週期都包含程式碼及其結果。

下載產生的檔案

其中一項最強大的功能,是 Claude 能夠產生檔案(例如圖表或報告)並讓這些檔案可供下載。當 Claude 建立視覺化圖表時,它會被儲存在容器中,您可以使用 Files API 下載它。

請在回應中尋找 type: "code_execution_output" 的區塊——這些區塊包含產生內容的檔案 ID:

python
download_file("file_id_from_response")

最終結果是一份包含專業視覺化圖表的完整分析,若以人工撰寫程式碼來完成,將需要耗費大量時間。

超越資料分析

雖然資料分析是一個自然而然的應用場景,但 Files API 與程式碼執行的結合還開啟了許多其他可能性:

  • 圖片處理與操作
  • 文件解析與轉換
  • 數學運算與建模
  • 具自訂格式的報告產生

關鍵在於,您可以將複雜的運算任務委派給 Claude,同時透過 Files API 保持對輸入與輸出的控制。這創造出一種強大的工作流程,讓 Claude 成為您的程式設計助手,能夠實際執行並反覆改進解決方案。