檔案與已發布的產出物
檔案儲存在智慧體的環境中。產出物是從 OpenAI 託管環境中的檔案發布而成的副本。即使環境已到期,你仍可下載該副本。
| 環境 | 如何擷取檔案 |
|---|---|
self_hosted | 使用供應商的檔案 API 或掛載的檔案系統。 |
openai_hosted | 若要擷取 /workspace/outputs 下的檔案,請使用工作階段的 Artifacts API。 |
none | 沒有環境檔案系統。請從工作階段項目讀取輸出。 |
上傳檔案
使用 OpenAI 託管環境時,請在建立工作階段時透過 environment.files 提供輸入檔案,並為每個檔案指定 /workspace 下的目的地路徑。
使用 type: "file_id" 搭配來自 Files API 的 file_id,或使用 type: "inline" 搭配經 base64 編碼的 data。這兩種形式都必須提供 path。
若要在環境連線後新增檔案,請使用環境的 Files API。
擷取你的檔案
從自己的環境擷取
請智慧體將輸出寫入已知路徑。回合完成後,透過供應商或基礎設施擷取該檔案。在環境到期或你刪除環境之前,將檔案儲存至應用程式的儲存空間。
自行託管環境中的檔案不會透過 Artifacts API 發布,包括 /workspace/outputs 下的檔案。如需各供應商的檔案存取方式,請參閱沙盒供應商。
從 OpenAI 託管環境擷取
請智慧體將檔案儲存在 /workspace/outputs 下,例如 /workspace/outputs/report.pdf。回合完成時,OpenAI 會將輸出發布為不可變更的產出物。
將 API 用戶端、工作階段 ID、已完成的回合 ID、產出物路徑及本機目的地傳入此函式。此函式會列出產出物,並下載同時符合回合與路徑的檔案:
# Pass the saved session ID, completed turn ID, artifact path, and local destination.
def download_artifact(client, session_id, turn_id, path, destination):
for artifact in client.beta.agents.sessions.artifacts.list(session_id):
if artifact.turn_id != turn_id or artifact.path != path:
continue
with client.beta.agents.sessions.artifacts.with_streaming_response.content(
artifact.id, session_id=session_id
) as response:
response.stream_to_file(destination)
return
raise FileNotFoundError(f"No artifact for {path!r} in turn {turn_id}")如需請求與回應欄位的資訊,請參閱列出產出物、擷取中繼資料及下載內容的參考資料。
下載多個檔案
此 API 每次請求只能下載一個產出物,未提供批次下載端點。
若要下載多個檔案,請先列出產出物,再請求各檔案的 content。
若要一次下載,請智慧體將結果打包為 ZIP 檔案,
儲存在 /workspace/outputs 下,再將該壓縮檔作為單一產出物下載。
檔案存續時間
環境到期後,已發布的產出物仍會保留。請在刪除工作階段前,下載所有需要保留的內容。
無法透過此 API 上傳或編輯產出物。若要發布新版本,請智慧體更新檔案,並再完成一個回合。使用回合 ID 和路徑來區分版本。
不再需要已發布的副本時,請刪除產出物。刪除產出物不會影響環境中的原始檔案。
檔案限制
| 檔案操作 | 限制 |
|---|---|
| 建立工作階段時包含的檔案 | 每次請求 50 個檔案。 |
| 內嵌上傳 | 每個檔案 5 MiB,以 base64 編碼前的大小計算。 |
| 單次建立請求中的內嵌上傳 | 總計 10 MiB,以 base64 編碼前的大小計算。 |
| 從 Files API 複製的檔案 | 每個檔案 50 MiB。 |
| 已發布的產出物 | 每個檔案 200 MiB。 |
| 一併發布的輸出 | 總計 500 MiB。 |