OpenAIChatHelper
L'assistant de conversation permet de conserver une liste de messages en mémoire et d'effectuer des invites consécutives.
Propriétés
| Nom de propriété | Type | Valeur par défaut | Description |
|---|---|---|---|
chat | OpenAIChatAPI | - | L'instance de l'API de conversation utilisée pour la communication avec OpenAI. |
systemPrompt | OpenAIMessage | - | Le message d'invite du système qui guide les réponses de l'assistant de conversation. |
numberOfMessages | Integer | 15 | Le nombre maximum de messages à conserver dans l'historique des conversations. |
parameters | OpenAIChatCompletionsParameters | - | Les paramètres pour la requête OpenAI de génération de réponse conversationnelle. |
messages | Collection de OpenAIMessage | [] | La collection de messages échangés dans la session de conversation. |
tools | Collection de OpenAIModel | [] | Liste des outils OpenAI enregistrés pour l'appel de fonctions. |
autoHandleToolCalls | Boolean | True | Booléen indiquant si les appels d'outils sont gérés automatiquement à l'aide des outils enregistrés. |
lastErrors | Collection | - | Collection contenant les dernières erreurs rencontrées lors des opérations de chat. |
Constructeur
Pour créer une nouvelle instance de OpenAIChatHelper, il est préférable d'utiliser la méthode create() de l'API de conversation du client OpenAI :
var $chatHelper:=$client.chat.create("Vous êtes un assistant utile.")
Cette méthode crée un nouvel assistant de conversation avec l'invite système spécifiée et l'initialise avec les paramètres par défaut. L'invite du système définit le rôle et le comportement de l'assistant tout au long de la conversation.
Fonctions
prompt()
prompt(prompt : Variant) : OpenAIChatCompletionsResult
| Paramètres | Type | Description |
|---|---|---|
| prompt | Text or OpenAIMessage | The text prompt to send to OpenAI chat, or an OpenAIMessage object for more complex messages (e.g., with images or files). |
| Résultat | OpenAIChatCompletionsResult | La réponse conversationnelle générée. |
Envoie une invite utilisateur au modèle de conversation et retourne la réponse générée. You can pass either a simple text string or an OpenAIMessage object for more advanced scenarios like including images or files.
Exemple d'utilisation
// Simple text prompt
var $result:=$chatHelper.prompt("Hello, how can I help you today?")
$result:=$chatHelper.prompt("Why 42?")
// Using OpenAIMessage for advanced scenarios (e.g., with images)
var $message:=cs.AIKit.OpenAIMessage.new({role: "user"; content: "What's in this image?"})
$message.addImageURL("https://example.com/photo.jpg"; "high")
$result:=$chatHelper.prompt($message)
// Using OpenAIMessage with files
var $fileMessage:=cs.AIKit.OpenAIMessage.new({role: "user"; content: "Analyze this document"})
$fileMessage.addFileId($uploadedFile.id)
$result:=$chatHelper.prompt($fileMessage)
reset()
reset()
Réinitialise le contexte de la conversation en effaçant tous les messages et en désenregistrant tous les outils. Cela permet d'entamer une nouvelle conversation tout en conservant l'invite et les paramètres du système.
Exemple de réinitialisation
$chatHelper.prompt("Hello !")
$chatHelper.reset() // Efface tous les messages et outils précédents
registerTool()
registerTool(tool : Object; handler : Variant)
| Paramètres | Type | Description |
|---|---|---|
| tool | Object | Objet de définition d'outil (ou instance OpenAITool) |
| handler | Object | The function to handle tool calls (4D.Function or Object), optional if defined inside tool as handler property |
Enregistre un outil avec sa fonction de gestion automatique des appels d'outils.
Le paramètre handler peut être :
- Un objet 4D.Function : Fonction de gestion directe
- An Object: An object containing a formula property matching the tool function name
La fonction de gestion reçoit un objet contenant les paramètres transmis par l'appel à l'outil OpenAI. Cet objet contient des paires clé-valeur dont les clés correspondent aux noms des paramètres définis dans le schéma de l'outil et dont les valeurs sont les arguments réels fournis par le modèle d'IA.
Register Tool Examples
// Exemple 1: Enregistrement simple avec gestionnaire direct
var $tool:={type: "function"; function: {name: "get_weather"; description: "Get current weather"; parameters: {type: "object"; properties: {location: {type: "string"; description: "City name"}}}}}
var $handler:=Formula(return "Sunny, 25°C in "+$1.location)
$chatHelper.registerTool($tool; $handler)
// Exemple 2: Outil avec propriété handler (pas de deuxième paramètre)
var $tool:={name: "calculate"; description: "Perform calculations"; handler: Formula(return String(Num($1.expression)))}
$chatHelper.registerTool($tool)
// Exemple 3: Utilisation de notation objet
$chatHelper.registerTool({tool: $tool; handler: $handler})
// Exemple 4: Objet avec fonction correspondant au nom d'outil
var $tool:={name: "getTime"; description: "Get current time"}
var $handlerObj:=cs.MyTimeTool.new() // classe avec fonction getTime
$chatHelper.registerTool($tool; $handlerObj)
registerTools()
registerTools(toolsWithHandlers : Variant)
| Paramètres | Type | Description |
|---|---|---|
| toolsWithHandlers | Variant | Objet ou collection contenant les outils et leurs gestionnaires |
Enregistre plusieurs outils à la fois. Le paramètre peut être :
- Collection : Tableau d'objets outils (avec des gestionnaires intégrés ou séparés)
- Objet : Objet dont les propriétés sont des noms de fonctions correspondant à des définitions d'outils
- Objet avec attribut
tools: Objet contenant une collectiontoolset des propriétés formula correspondant à des noms d'outils
Register Multiple Tools Examples
Exemple 1 : Format collection avec des gestionnaires dans les outils
var $weatherTool:={name: "getWeather"; description: "Get current weather"; handler: Formula(return "Sunny, 25°C in "+$1.location)}
var $calculatorTool:={name: "calculate"; description: "Perform calculations"; handler: Formula(return String(Num($1.expression)))}
$chatHelper.registerTools([$weatherTool; $calculatorTool])
Exemple 2 : Format objet avec outil et gestionnaire séparés
var $toolsWithSeparateHandlers:={}
$toolsWithSeparateHandlers.getWeather:={tool : $weatherToolDefinition; handler : $weatherHandler}
$toolsWithSeparateHandlers.calculate:={tool : $calculatorToolDefinition; handler : $calculatorHandler}
$chatHelper.registerTools($toolsWithSeparateHandlers)
Exemple 3 : Objet avec attribut collection d'outils et propriétés formules (fonctions)
Classe MyTools :
Class constructor
this.tools:=[{name: "getWeather"; description: "Get current weather"}; \
{name: "getTime"; description: "Get current time"}] // Collection of tool definitions
Function getWeather($parameters: Object)
return "Sunny, 25°C"
Function getTime($parameters: Object)
return String(Current time)
$chatHelper.registerTools(cs.MyTools.new())
Exemple 4 : Format objet simple avec outils en tant que propriétés
var $tools:={}
$tools.getWeather:=$weatherTool // Outil avec propriété handler
$tools.calculate:=$calculatorTool // Outil avec propriété handler
$chatHelper.registerTools($tools)
unregisterTool()
unregisterTool(functionName : Text)
| Paramètres | Type | Description |
|---|---|---|
| functionName | Text | Le nom de l'outil fonction à désinscrire |
Désenregistre un outil spécifique via son nom de fonction. Cette opération supprime l'outil de la collection d'outils enregistrés, efface son gestionnaire et le supprime des paramètres.
Exemple de Unregister Tool
$chatHelper.registerTool($weatherTool; $weatherHandler)
$chatHelper.unregisterTool("get_weather") // Supprime l'outil météo
unregisterTools()
unregisterTools()
Désenregistre tous les outils en même temps. Cette opération efface tous les gestionnaires d'outils, vide la collection d'outils et supprime tous les outils des paramètres.
Exemple de Unregister All Tools
$chatHelper.registerTools($multipleTools)
$chatHelper.unregisterTools() // Supprimer tous les outils