OPENAICHAT

Aperçu

L'application de workflow OPENAICHAT vous permet d'interagir avec un modèle de chat OpenAI.

Mode de fonctionnement

  • L'application vous permet d'interagir avec les modèles de complétion OpenAI.

  • Des logs d'application sont disponibles. Ceux-ci peuvent être spécifiés en définissant la valeur du paramètre OpenAiChatLogLevel dans le fichier web.config sur 0 pour désactiver la journalisation, 1 pour les logs d'erreur, 2 pour des logs d'informations ou 3 pour les logs de débogage; la valeur par défaut est 0.

Paramètres requis

ParamètreTypeDirectionDescription

MODEL

TEXT

IN

ID du modèle à utiliser Vous pouvez trouver les modèles disponibles au lien suivant : https://platform.openai.com/docs/models/model-endpoint-compatibility;

Vous pouvez utiliser l'une des configurations suivantes : avec des messages système/utilisateur, avec un numéro de message ou avec un tableau de messages JSON.

Avec des messages système/utilisateur

ParamètreTypeDirectionDescription

SYSTEM_MESSAGE

TEXT

IN

Le contenu du message système

USER_MESSAGE

TEXT

IN

Le contenu du message utilisateur

Avec un numéro de message

ParamètreTypeDirectionDescription

MESSAGE_ROLEx

TEXT

IN

Le type du message, où x correspond au numéro du message ; le la valeur doit être assistant, system ou user

MESSAGE_CONTENTx

TEXT

IN

Le contenu du message utilisateur, où x correspond au numéro du message

Avec un tableau de messages JSON

ParamètreTypeDirectionDescription

MESSAGE_JSON

TEXT

IN

L'objet de message du tableau JSON ; la structure doit correspondre à ce qui suit :

[
    {
        "role": "assistant/system/user",
        "content": "First message content"
    },
    {
        "role": "assistant/system/user",
        "content": "Second message content"
    }
]

Paramètres facultatifs

ParamètresTypeDirectionDescription

API_KEY

TEXT

IN

Clé API OpenAI

Par défaut, cette valeur provient du paramètre OpenAiApiKey du fichier web.config.

URL

TEXT

IN

Point de terminaison de l'API; la valeur par défaut est https://api.openai.com/v1/audio/transcriptions

TEMPERATURE

NUMERIC

IN

Température d'échantillonnage, comprise entre 0 et 1; la valeur par défaut est 1

Des valeurs plus élevées (par exemple 0.8) rendront la sortie plus aléatoire, tandis que des valeurs plus faibles (par exemple 0.2) la rendront plus ciblée et déterministe.

TOP_P

NUMERIC

IN

Une alternative à l'échantillonnage avec température, appelée échantillonnage de noyau, où le modèle prend en compte les résultats des jetons avec une masse de probabilité top_p. Ainsi, 0.1 signifie que seuls les jetons comprenant la masse de probabilité la plus élevée de 10 % sont pris en compte.

Par défaut : 1

FREQUENCY_PENALTY

NUMERIC

IN

Nombre compris entre -2.0 et 2.0. Les valeurs positives pénalisent les nouveaux jetons en fonction de leur fréquence existante dans le texte jusqu'à présent, réduisant ainsi la probabilité que le modèle répète mot pour mot la même ligne.

Par défaut : 0

MAX_TOKENS

NUMERIC

IN

Nombre maximum de jetons pouvant être générés lors de la fin du chat; la valeur par défaut est 256

PRESENCE_PENALTY

NUMERIC

IN

Numéro compris entre -2.0 et 2.0 ; la valeur par défaut est 0

Les valeurs positives pénalisent les nouveaux jetons selon qu'ils apparaissent ou non dans le texte jusqu'à présent, augmentant ainsi la probabilité du modèle de parler de nouveaux sujets.

RESPONSE_FORMAT

TEXT

IN

Format de réponse : text , json_object ou de json_schema.

Lorsque la valeur est json_object, l'invite système doit contenir le mot-clé JSON. Lorsque la valeur est json_schema, il faut renseigner le schema attendu dans le paramètre RESPONSE_FORMAT_JSON_SCHEMA.

RESPONSE_FORMAT_JSON_SCHEMA

TEXT

IN

Le schema JSON qui sera utilisé par le modèle pour répondre. Un exemple est présent ici : RESPONSE_FORMAT_JSON_SCHEMA

APP_RESPONSE_IGNORE_ERROR

TEXT

IN

Spécifie (Y ou N) si l'erreur doit être ignorée; la valeur par défaut est N

En cas d'erreur, si le paramètre a Y comme valeur, l'erreur sera ignorée et les paramètres OUT définis (APP_RESPONSE_STATUS ou APP_RESPONSE_CONTENT) seront mappés. Sinon, une exception sera levée.

TOOLS

TEXT

IN

Listes des outils à dispositions du modèle, le format doit être en json et correspondre au format d'OpenAI : https://platform.openai.com/docs/api-reference/chat/create#chat-create-tools Un exemple est présent ici : TOOLS

TOOL_CHOICE_REQUIRED

TEXT

IN

Spécifie si le modèle doit obligatoirement choisir un outil. Y ou N (défaut)

PARALLEL_TOOL

TEXT

IN

Spécifie si le modèle peut choisir plusieurs outils. Y (défaut) ou N

MESSAGE_HISTORY

TEXT

INOUT

L'historique des messages

SELECTED_TOOL

TEXT

OUT

La liste des noms d'outils qui ont été séléctionnés, séparé par une virgule.

SELECTED_TOOL_PARAM

TEXT

OUT

Tableau JSON représentant la liste des outils sélectionnés avec leurs paramètres. Un exemple de rendu est présent ici: SELECTED_TOOLS_PARAMS

SELECTED_TOOLS_COUNT

TEXT

OUT

Le nombre d'outils sélectionnés.

RESULT

TEXT

OUT

Appel de résultat du chat

RESULT_CONTENT

TEXT

OUT

Contenu du message de l'assistant

RESULT_TOTAL_TOKENS

NUMERIC

OUT

Total des jetons utilisés pour la génération

RESULT_COMPLETION_TOKENS

NUMERIC

OUT

Total des jetons utilisés pour la génération

RESULT_PROMPT_TOKENS

NUMERIC

OUT

Total des jetons utilisés pour l'invite

APP_RESPONSE_STATUS

TEXT

OUT

Code d'état de la réponse

APP_RESPONSE_CONTENT

TEXT

OUT

Charge utile de réponse ou message d'erreur

Cas de l'utilisation du schéma JSON

En utilisation un schéma JSON comme format de réponse, cela force l'application à répondre de manière structuré pour correspondre au schéma.

Vous avez la possibilité d'extraire directement les valeurs retourné pour les mettre dans une données, il suffit d'indiquer en nom de paramètre le nom de la propriété à extraire et de mettre en OUT la donnée cible.

Exemples

TOOLS

[
    {
        "name": "GET_STOCK_INFORMATION",
        "description": "Get stock information about a product. If the product is not found, return an error. If the stock is less than 10, return a warning and a purchase order should be done.",      
        "parameters": {
            "type": "object",
            "properties": {
                "product_name": {
                    "type": "string",
                    "description": "The product name"
                },
                "serial_number": {
                    "type": "string",
                    "description": "The product serial number"
                }
            },
            "additionalProperties": false,
            "required": ["serial_number"]
        }
    },
    {
        "name": "PURCHASE_ORDER",
        "description": "Make a purchase order for a product.",    
        "parameters": {
            "type": "object",
            "properties": {
                "product_name": {
                    "type": "string",
                    "description": "The product name"
                },
                "serial_number": {
                    "type": "string",
                    "description": "The product serial number"
                },
                "quantity": {
                    "type": "number",
                    "description": "The quantity of the product to purchase"
                }
            },
            "additionalProperties": false,
            "required": ["serial_number", "quantity"]
        }
    }
]

SELECTED_TOOLS_PARAMS

[
    {
        "name": "GET_STOCK_INFORMATION",
        "id": "call_Vuc2Ga8jP7vUksxG9C0fwpY8",
        "parameters": {
            "product_name": "vis",
            "serial_number": "V45645"
        }
        
    },
    {
        "name": "GET_STOCK_INFORMATION",
        "id": "call_nq3SCVUk0FjAHCeqOZGNXpC8",
        "parameters": {
            "product_name": "boulons",
            "serial_number": "b456"
        }
    }
]

RESPONSE_FORMAT_JSON_SCHEMA

{
  "name": "schema",
  "schema": {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "advice": {
        "type": "string"
      },
      "next_action": {
        "type": "string",
        "enum": ["expert","sales","support","logistics",null]
      },
      "confidence_level": {
        "type": "number"
      }
    },
    "required": ["advice", "next_action","confidence_level"]
  }
}