Aller au contenu principal
Version : 20 R10

Appel asynchrone

Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone.

Vous devez fournir une 4D.Formula pour recevoir le résultat. Voir OpenAIParameters pour une liste de ces paramètres.

La méthode asynchrone est basée sur 4D.HTTPRequest, ainsi la réponse sera reçue dans le process courant.

⚠️ Si votre process se termine à la fin de la méthode courante (par exemple, si vous utilisez New process ou l'éditeur de méthode), la formule de callback peut ne pas être appelée de manière asynchrone. Dans ce cas, il est nécessaire d'utiliser CALL WORKER ou CALL FORM.

Exemples d’utilisation

Liste de modèles

$client.models.list({formula: Formula(MyReceiveMethod($1))})

$1 sera une instance de OpenAIModelListResult, donc la méthode MyReceiveMethod pourrait être :

#DECLARE($result: cs.AIKit.OpenAIModelListResult)

If($result.success)

Form.models:=$result.models

Else

Alert($result.errors.formula(Formula(JSON Stringify($1))).join("\n"))

End if

Complétions de chat

var $messages:=[{role: "system"; content: "You are a helpful assistant."}]
$messages.push({role: "user"; content: "Could you explain me why 42 is a special number"})

$client.chat.completions.create($messages; { onResponse: Formula(MyChatCompletionsReceiveMethod($1))})

$1 sera une instance de OpenAIChatCompletionsResult, donc la méthode MyChatCompletionsReceiveMethod pourrait être :

#DECLARE($result: cs.AIKit.OpenAIChatCompletionsResult)

ASSERT($result.success) // Nous utilisons ici onResponse, le callback n'est reçu qu'en cas de succès.
Form.assistantMessage:=$result.choices[0].text