Aller au contenu principal
Version : Suivant

OpenAIFilesAPI

La classe OpenAIFilesAPI fournit des fonctionnalités pour gérer les fichiers en utilisant l'API d'OpenAI. Les fichiers peuvent être téléversés et utilisés à partir de différents points de terminaison, y compris Fine-tuning, traitement Batch et Vision.

Note: Cette API est uniquement compatible avec OpenAI. Les autres fournisseurs listés dans la page fournisseurs compatibles ne prennent pas en charge les opérations de gestion de fichiers.

Référence API : https://platform.openai.com/docs/api-reference/files

Limites de taille des fichiers

  • Fichiers individuels : jusqu'à 512 Mo par fichier
  • Total de l'organisation : jusqu'à 1 To (taille cumulée de tous les fichiers téléversés par votre organization)

Fonctions

create()

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

Téléverser un fichier qui peut être utilisé par différents points de terminaison (endpoints).

Endpoint: POST https://api.openai.com/v1/files

ParamètresTypeDescription
file4D.File ou 4D.BlobL'objet Fichier ou Blob (et non nom du fichier) à téléverser.
purposeTextObligatoire. L'objectif visé du fichier téléversé.
parametersOpenAIFileParametersParamètres optionnels incluant la politique d'expiration.
RésultatOpenAIFileResultLe résultat du fichier

Erreur: Génère une erreur si file n'est pas un 4D.File ou un 4D.Blob, ou si purpose est vide.

Objectifs pris en charge

  • assistants : Utilisé dans l'API Assistants (⚠️ déprécié by OpenAI)
  • batch : Utilisé dans l'API Batch (expire après 30 jours par défaut)
  • fine-tune : Utilisé pour le réglage fin
  • vision : Images utilisées pour le réglage fin de vision
  • user_data : Type de fichier flexible pour n'importe quel usage
  • evals : Utilisé pour les ensembles de données d'évaluation

Formats de fichiers requis

  • API Fine-tuning API : Ne prend en charge que les fichiers .jsonl avec des formats spécifiques requis
  • API Batch : Ne prend en charge que les fichiers .jsonl jusqu'à 200 Mo avec un format spécifique requis
  • API Assistants : Prend en charge des types de fichiers spécifiques (voir le guide Assistants Tools)
  • API de complétions de Chat : Seuls les PDF sont pris en charge

Exemple synchrone

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 jours

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

Exemple asynchrone

Étant donné que les téléversements de fichiers peuvent être des opérations longues (en particulier pour les fichiers volumineux jusqu'à 512 Mo), il est recommandé d'utiliser des appels asynchrones pour éviter de bloquer votre application. Voir Appels asynchrones pour plus de détails.

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

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

// Cet appel retourne immédiatement sans blocage
$client.files.create($file; "fine-tune" ; $params)

La fonction de rappel reçoit un OpenAIFileResult :

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

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

ALERT("File uploaded successfully : "+$uploadedFile.filename)
// Stocker l'ID du fichier pour une utilisation ultérieure
Form.uploadedFileId:=$uploadedFile.id
Else
ALERT("Upload failed : "+Formula(JSON Stringify($result.errors)))
End if

retrieve()

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

Retourne des informations sur un fichier spécifique.

Endpoint: GET https://api.openai.com/v1/files/{file_id}

ParamètresTypeDescription
fileIdTextObligatoire. L'ID du fichier à récupérer.
parametersOpenAIParametersParamètres optionnels pour la requête.
RésultatOpenAIFileResultLe résultat du fichier

Erreur: Génère une erreur si fileId est vide.

Exemple

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

Renvoie une liste de fichiers appartenant à l'organisation de l'utilisateur.

Endpoint: GET https://api.openai.com/v1/files

ParamètresTypeDescription
parametersOpenAIFileListParametersParamètres optionnels pour le filtrage et la pagination.
RésultatOpenAIFileListResultListe des fichiers

Exemple

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

Supprime un fichier.

Endpoint: DELETE https://api.openai.com/v1/files/{file_id}

ParamètresTypeDescription
fileIdTextObligatoire. L'ID du fichier à supprimer.
parametersOpenAIParametersParamètres optionnels pour la requête.
RésultatOpenAIFileDeletedResultLe résultat de la suppression du fichier

Erreur: Génère une erreur si fileId est vide.

Exemple

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

Voir également