メインコンテンツまでスキップ
バージョン: 次へ

OpenAIFilesAPI

OpenAIFilesAPI クラスはOpenAI のAPI を使用してファイルを管理する機能を提供します。 ファイルをアップロードして、 Fine-tuningBatch 処理、そしてVision を含む様々なエンドポイントで使用することができます。

注意: この API はOpenAI としか互換性がありません。 互換性のあるプロバイダー ドキュメンテーションに記載されている他のプロバイダーでは、ファイル管理操作をサポートしていません。

API 参照: https://platform.openai.com/docs/api-reference/files

ファイルサイズ上限

  • 個別のファイル: 1ファイルあたり 512 MB まで
  • 組織全体: 1 TB まで(組織 によってアップロードされたすべてのファイルの累計サイズ)

関数

create()

create(file : 4D.File | 4D.Blob; purpose : Text; parameters : cs.OpenAIFileParameters) : cs.OpenAIFileResult

様々なエンドポイントで使用できるファイルをアップロードします。

エンドポイント: POST https://api.openai.com/v1/files

引数説明
ファイル4D.File あるいは 4D.BlobアップロードするファイルあるいはBlob オブジェクト(ファイル名ではない)。
purposeText必須。 アップロードされたファイルの目的。
parametersOpenAIFileParameters失効期限のポリシーを含めた、オブションの引数。
戻り値OpenAIFileResultファイルの結果

エラーのスロー: file が4D.File あるいは 4D.Blob ではない場合、あるいはpurpose がからの場合にはエラーがスローされます。

サポートされている目的

  • assistants: Assistants API で使用されます (⚠️ OpenAI では非推奨)
  • batch: Batch API で使用されます (デフォルトでは 30 日後に失効します)
  • fine-tune: 微調整 で使用されます
  • vision: ビジョンの微調整に使用される画像
  • user_data: 任意の目的のための柔軟なファイルタイプ
  • evals: eval データセットに使用する

ファイルフォーマットの要件

  • 微調整API: 特定のフォーマットを持つ .jsonl ファイルのみがサポートされます
  • Batch API: 特定のフォーマットを持つ .jsonl ファイルで 200 MB までのものがサポートされます
  • Assistants API: 特定のファイルタイプをサポートします(Assistants ツールガイドを参照してください)
  • チャット補完 API: PDF のみがサポートされます

同期の例

var $file:=File("/RESOURCES/training-data.jsonl")

var $params:=cs.AIKit.OpenAIFileParameters.new()
$params.expires_after:={}
$params.expires_after.anchor:="created_at"
$params.expires_after.seconds:=2592000 // 30 日

var $result:=$client.files.create($file; "fine-tune"; $params)

If ($result.success)
var $uploadedFile:=$result.file
// $uploadedFile.id -> "file-abc123"
// $uploadedFile.filename -> "training-data.jsonl"
// $uploadedFile.bytes -> 120000
End if

非同期の例

ファイルアップロードは(特に512 MBまでの大きなファイルの場合)長時間のオペレーションとなり得るため、アプリケーションをブロックするのを避けるために非同期の呼び出しを使用することが推奨されます。 詳細については非同期呼び出し を参照してください。

var $file:=File("/RESOURCES/large-training-data.jsonl")

var $params:=cs.AIKit.OpenAIFileParameters.new()
$params.onTerminate:=Formula(MyFileUploadCallback($1))

// このコードであればブロックすることなく即座に結果を返す
$client.files.create($file; "fine-tune"; $params)

コールバック関数はOpenAIFileResult を受け取ります:

// MyFileUploadCallback
#DECLARE($result: cs.AIKit.OpenAIFileResult)

If ($result.success)
var $uploadedFile:=$result.file

ALERT("File uploaded successfully: "+$uploadedFile.filename)
// ファイル ID を後で使うために保存しておく
Form.uploadedFileId:=$uploadedFile.id
Else
ALERT("Upload failed: "+Formula(JSON Stringify($result.errors)))
End if

retrieve()

retrieve(fileId : Text; parameters : cs.OpenAIParameters) : cs.OpenAIFileResult

特定のファイルに関する情報を返します。

エンドポイント: GET https://api.openai.com/v1/files/{file_id}

引数説明
fileIdText必須。 取得するファイルの ID 。
parametersOpenAIParametersリクエスト用のオプションの引数。
戻り値OpenAIFileResultファイルの結果

スロー: fileId が空の場合にはエラーをスローします。

例題

var $result:=$client.files.retrieve("file-abc123")

If ($result.success)
var $file:=$result.file
// $file.filename -> "mydata.jsonl"
// $file.bytes -> 120000
// $file.purpose -> "fine-tune"
End if

list()

list(parameters : cs.OpenAIFileListParameters) : cs.OpenAIFileListResult

ユーザーの組織に属するファイルの一覧を返します。

エンドポイント: GET https://api.openai.com/v1/files

引数説明
parametersOpenAIFileListParametersフィルタリングとページネーションに関するオプションの引数。
戻り値OpenAIFileListResultファイルリストの結果

例題

var $params:=cs.AIKit.OpenAIFileListParameters.new()
$params.purpose:="assistants"
$params.limit:=50
$params.order:="desc"

var $result:=$client.files.list($params)

If ($result.success)
var $files:=$result.files
// $files.length -> 2

For each ($file; $files)
// $file.filename -> "salesOverview.pdf", "puppy.jsonl", etc.
End for each
End if

delete()

delete(fileId : Text; parameters : cs.OpenAIParameters) : cs.OpenAIFileDeletedResult

ファイルを削除します。

エンドポイント: DELETE https://api.openai.com/v1/files/{file_id}

引数説明
fileIdText必須。 削除するファイルの ID 。
parametersOpenAIParametersリクエスト用のオプションの引数。
戻り値OpenAIFileDeletedResultファイル削除の結果

スロー: fileId が空の場合にはエラーをスローします。

例題

var $result:=$client.files.delete("file-abc123")

If ($result.success)
var $status:=$result.deleted

If ($status.deleted)
ALERT("File deleted successfully")
End if
End if

参照