Créer une API de modèle personnalisé
- Dernière mise à jour2025/07/07
L\'API Créer un modèle personnalisé offre aux développeurs et aux administrateurs la possibilité d\'intégrer de manière transparente les grands modèles de langage (LLM) propriétaires ou tiers, ainsi que d\'autres modèles d\'IA directement dans AI Agent Studio.
- Il nécessite un schéma de charge utile JSON, qui encapsule des informations sur le modèle. Le schéma définit des attributs tels que le nom du fournisseur, le nom du modèle spécifique, les protocoles d\'authentification, les détails du point de terminaison de l\'API (y compris les paramètres de chemin, les paramètres de requête et les en-têtes requis), ainsi que la structure des corps de la requête et de la réponse.
- L\'API permet aux utilisateurs de définir des variables dans les corps de la requête et de la réponse qui peuvent être remplies dynamiquement pendant l\'exécution. Ces variables peuvent être désignées à des fins différentes en utilisant des annotations spécifiques :
-
PROMPT_QUERY
(Obligatoire) : Cette annotation signifie que la variable correspondante doit être remplacée par l\'invite fournie par l\'utilisateur sur la AI Skills page. C\'est essentiel pour transmettre les invites d\'entrée utilisateur au modèle. -
REQUEST_PARAMETER
(Obligatoire) : Cette annotation indique que la variable doit être exposée comme un paramètre configurable sur la Model connections page. -
MODEL_PARAMETER
: Similaire àREQUEST_PARAMETER
, cette annotation désigne la variable pour la configuration sur la AI Skills page. -
RESPONSE_PARAMETER
(Obligatoire) : Cette annotation signifie que la variable sera renvoyée dans la réponse du modèle d\'IA.
-
- L\'API renvoie une réponse
200 OK
avec le modèle créé en cas de création réussie.
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
Corps de la demande :
Paramètres de la demande
{
"name":"Azure OpenAI reasoning models",
"version":"0",
"authAction":{
"authType":"CUSTOM_KEYS",
"customKeys":{
"keys":[
{
"location":"header",
"keyName":"Authorization",
"prefix":"Bearer "
}
]
}
},
"apiType":"REST",
"actions":[
{
"name":"o3-mini",
"displayName":"o3-mini",
"description":"The o1 and o3 series models are specifically designed to tackle reasoning
and problem-solving tasks with increased focus and capability. These models spend more time
processing and understanding the user's request, making them exceptionally strong in areas
like science, coding, math and similar fields. For example, o1 can be used by healthcare researchers
to annotate cell sequencing data, by physicists to generate complicated mathematical formulas needed
for quantum optics, and by developers in all fields to build and execute multi-step workflows.",
"method":"POST",
"uri":"https://{deployment}.openai.azure.com/openai/deployments/o3-mini/chat/completions?api-version=2025-01-01-preview",
"params":[
{
"type":"HEADERS"
},
{
"type":"PATH_PARAM",
"attribute":[
{
"name":"deployment",
"label":"Deployment",
"value":{
"type":"TEXT",
"string":"aai-openai2"
}
}
]
}
],
"request":{
"raw":{
"body":"{\n \"messages\": [\n {\n \"role\": \"user\",
\n \"content\": \"I am going to Paris, what should I see?\"\n
}\n ],\n \"max_completion_tokens\": 100000,\n \"model\": \"o3-mini\"\n }",
"variables":[
{
"path":"$.max_completion_tokens",
"attribute":{
"name":"max_completion_tokens",
"label":"max_completion_tokens",
"value":{
"type":"INTEGER",
"number":"100000"
},
"annotations":[
"REQUEST_PARAMETER"
]
}
},
{
"path":"$.messages.content",
"attribute":{
"name":"prompt",
"label":"prompt",
"value":{
"type":"TEXT"
},
"annotations":[
"PROMPT_QUERY"
]
}
}
]
}
},
"response":{
"body":"{\n \"id\": \"chatcmpl-APwQdLa9WCQAdZg0dO5OjGr2ER4sX\",\n \"object\": \"chat.completion\",\n
\"created\": 1730746163,\n \"model\": \"o3-mini-2025-01-31\",\n \"choices\": [\n {\n
\"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n
\"content\": \"Sure! They are one of the most mysterious and exciting objects in space.\",\n
\"refusal\": null\n },\n \"finish_reason\": \"stop\"\n }\n ],\n
\"usage\": {\n \"prompt_tokens\": 17,\n \"completion_tokens\": 959,\n
\"total_tokens\": 976,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0\n
},\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 64\n }\n
},\n \"system_fingerprint\": \"fp_35c19d48ca\"\n}",
"variables":[
{
"path":"$.usage.completion_tokens",
"attribute":{
"name":"completion_tokens",
"label":"completion_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].completionTokens"
}
},
{
"path":"$.choices.message.content",
"attribute":{
"name":"content",
"label":"content",
"value":{
"type":"TEXT",
"string":"Some response from LLM"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].value"
}
},
{
"path":"$.model",
"attribute":{
"name":"model",
"label":"model",
"value":{
"type":"TEXT"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"model_name"
}
},
{
"path":"$.usage.prompt_tokens",
"attribute":{
"name":"prompt_tokens",
"label":"prompt_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].promptTokens"
}
},
{
"path":"$.usage.total_tokens",
"attribute":{
"name":"total_tokens",
"label":"total_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].totalTokens"
}
}
]
}
}
]
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
nom | Chaîne | Oui | Nom du modèle personnalisé |
description | Chaîne | Non | Description du modèle personnalisé |
actionAuth | Objet | Oui | Définit les options d\'authentification pour l\'appel du modèle d\'IA. Pour plus de détails, voir ci-dessous |
apiType | Chaîne | Oui | Spécifie le type d\'API (par exemple, « REST ») |
actions | paramètres | Oui | Contient un tableau d\'objets, où chaque objet définit un point de terminaison ou une action spécifique dans le modèle personnalisé. |
Objet authAction
{
"name":"Azure OpenAI reasoning models",
"description":"string",
"version":"0",
"authAction":{
"authType":"CUSTOM_KEYS",
"customKeys":{
"keys":[
{
"location":"header",
"keyName":"Authorization",
"prefix":"Bearer "
}
]
}
}
{
"name":"Bedrock - Claude2.1",
"description":"string",
"version":"string",
"authAction":{
"authType":"AWS_SIGNATURE_V4",
"awsSignatureV4":{
"accessKey":{
"location":"header",
"keyName":"aws_sign_access_key"
},
"secretkey":{
"location":"header",
"keyName":"aws_sign_access_key"
},
"sessionkey":{
"location":"header",
"keyName":"aws_sign_session_key"
}
}
},
"api_type":"REST",
"actions":[
{
....
}
]
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
authType | Chaîne | Oui | Type d\'authentification. API_KEY pour la clé API, OAUTH2 pour OAuth2, CUSTOM_KEYS pour plusieurs clés et AWS_SIGNATURE_V4 pour l\'authentification spécifique à AWS. |
API_KEY, OAUTH2, ou CUSTOM_KEYS | Objet | Oui | Définit les clés d\'authentification personnalisée. Ses attributs sont décrits ci-dessous sous clés .
|
↳↳ keys
|
paramètres | Oui | Tableau d\'objets clé pour l\'authentification. |
↳↳↳ location
|
Chaîne | Oui | Où la clé doit être placée (par exemple, « header »). |
↳↳↳keyName
|
Chaîne | Oui | Nom de la clé (par exemple, « Authorization », « x-api-key »). |
↳↳↳ prefix
|
Objet | Non | Préfixe facultatif à ajouter à la valeur de la clé (par exemple, « Bearer » pour les jetons de type bearer). |
awsSignatureV4 | Objet | Oui |
AWS_SIGNATURE_V4 est requis si authType est AWS_SIGNATURE_V4 . Cet objet définit les identifiants AWS (ID de clé d\'accès, clé d\'accès secrète, clé de session) pour l\'authentification par signature AWS. |
↳↳ accessKey
|
Objet | Oui | Définit l\'ID de clé d\'accès AWS. |
↳↳↳ location
|
Chaîne | Oui | Où la clé d\'accès doit être placée (par exemple, « header », « query »). |
↳↳↳ keyName
|
Chaîne | Oui | Nom du paramètre pour la clé d\'accès (par exemple, « aws_sign_access_key »). |
↳↳ secretkey
|
Objet | Oui | Définit la clé d\'accès secrète AWS. |
↳↳↳ location
|
Chaîne | Oui | Où la clé secrète doit être placée. |
↳↳↳ keyName
|
Chaîne | Oui | Nom du paramètre pour la clé secrète. |
↳↳ sessionkey
|
Objet | Non | Définit la clé de session AWS (facultatif). |
↳↳↳ location
|
Chaîne | Oui | Où la clé de session doit être placée. |
↳↳↳ keyName
|
Chaîne | Oui | Nom du paramètre pour la clé de session. |
Tableau actions
{
"actions":[
{
"name":"o3-mini",
"displayName":"o3-mini",
"description":"The o1 and o3 series models are specifically designed to tackle reasoning
and problem-solving tasks with increased focus and capability. These models spend more time
processing and understanding the user's request, making them exceptionally strong in areas
like science, coding, math and similar fields. For example, o1 can be used by healthcare researchers
to annotate cell sequencing data, by physicists to generate complicated mathematical formulas needed
for quantum optics, and by developers in all fields to build and execute multi-step workflows.",
"method":"POST",
"uri":"https://{deployment}.openai.azure.com/openai/deployments/o3-mini/chat/completions?api-version=2025-01-01-preview",
"params":[
{
"type":"string",
"attribute":[
{
"name":"string",
"label":"string",
"value":{
"type":"string",
"string":"string",
"number":"string"
}
}
]
}
],
"request":{
"raw":{
"body":"string",
"variables":[
{
....
}
]
}
},
"response":{
"body":"string",
"variables":[
{
....
}
]
}
}
]
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
nom | Chaîne | Oui | Nom programmatique du point de terminaison/de l\'action du modèle spécifique. |
displayName | Chaîne | Oui | Nom convivial du point de terminaison du modèle, affiché dans l\'interface utilisateur. |
description | Chaîne | Non | Description détaillée du point de terminaison du modèle et de ses capacités. |
méthode | Chaîne | Oui | Méthode HTTP pour l\'appel API. Doit généralement être POST pour la plupart des modèles d\'IA générative. |
uri | Chaîne | Oui | URI complet du point de terminaison du modèle d\'IA. Paramètres dynamiques dans l\'URI. |
Tableau des | paramètres | Non | Contient une collection de paramètres qui sont utilisés lors de la configuration de la Model connection et seront insérés dans l\'URI lors de l\'appel à l\'API du modèle d\'IA au moment de l\'exécution. Le paramètre peut être soit une variable PATH_PARAM , soit une variable QUERY_PARAM . Vous pouvez également ajouter les EN-TÊTES associés à cette requête API. Dans l\'exemple, deploymentId et projectId sont des variables PATH_PARAM et apiVersion est une variable QUERY_PARAM. |
Demande | Objet | Oui | Définit le format et la structure des données qui doivent être envoyées au modèle, y compris les variables et leurs annotations. Le corps spécifie la structure et le contenu de la requête. Le tableau variables définit les éléments dynamiques à l\'intérieur du corps, en utilisant le chemin pour spécifier l\'emplacement de la variable dans la structure JSON. |
Réponse | Objet | Spécifie le format et la structure des données que le modèle renverra, y compris les variables, leurs annotations et leurs noms canoniques. Le corps spécifie la structure et le contenu de la réponse. Le tableau variables définit les éléments dynamiques à l\'intérieur du corps, en utilisant le chemin pour spécifier l\'emplacement de la variable dans la structure JSON. |
Tableau params
{
"params":[
{
"type":"HEADERS"
},
{
"type":"PATH_PARAM",
"attribute":[
{
"name":"deployment",
"label":"Deployment",
"value":{
"type":"TEXT",
"string":"aai-openai2"
}
}
]
}
]
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
type | Chaîne | Oui | Type de paramètre (par exemple, HEADERS , PATH_PARAM , QUERY_PARAM ). |
attribut | paramètres | Oui | Tableau d\'objets d\'attribut définissant les détails du paramètre. Requis pour PATH_PARAM et QUERY_PARAM . |
↳ name
|
Chaîne | Oui | Le nom du paramètre (par exemple, « deployment », « api-version »). |
↳ label
|
Chaîne | Non | Étiquette conviviale pour le paramètre, affichée dans l\'interface utilisateur. |
↳value
|
Objet | Non | Objet contenant la valeur par défaut ou initiale du paramètre. Voici les attributs :
|
Objet request
{
"request":{
"raw":{
"body":"{\n \"messages\": [\n {\n \"role\": \"user\",
\n \"content\": \"I am going to Paris, what should I see?\"\n
}\n ],\n \"max_completion_tokens\": 100000,\n \"model\": \"o3-mini\"\n }",
"variables":[
{
"path":"$.max_completion_tokens",
"attribute":{
"name":"max_completion_tokens",
"label":"max_completion_tokens",
"value":{
"type":"INTEGER",
"number":"100000"
},
"annotations":[
"REQUEST_PARAMETER"
]
}
},
{
"path":"$.messages.content",
"attribute":{
"name":"prompt",
"label":"prompt",
"value":{
"type":"TEXT"
},
"annotations":[
"PROMPT_QUERY"
]
}
}
]
}
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
brut | Objet | Oui | Définit le corps de la requête brut et ses variables dynamiques. |
↳ body
|
Chaîne | Oui | Chaîne JSON brute représentant la structure du corps de la requête. Cette chaîne doit contenir des espaces réservés pour les variables. |
↳ variables
|
paramètres | Non | Tableau d\'objets définissant des éléments dynamiques à l\'intérieur du corps . |
↳↳ path
|
Chaîne | Oui | Chemin JSONPath vers l\'emplacement de la variable dans la structure JSON body . |
↳↳ attribute
|
Objet | Oui | Objet décrivant les propriétés de la variable. |
↳↳↳ name
|
Chaîne | Oui | Nom interne de la variable. |
↳↳↳label
|
Chaîne | Non | Étiquette conviviale de la variable. |
↳↳↳ value
|
Objet | Non | Objet contenant la valeur par défaut ou initiale de la variable. |
↳↳↳ annotations
|
paramètres | Non | Tableau de chaînes spécifiant l\'objectif de la variable. Annotations pris en charge : PROMPT_QUERY , REQUEST_PARAMETER , MODEL_PARAMETER . |
Objet response
{
"response":{
"body":"{\n \"id\": \"chatcmpl-APwQdLa9WCQAdZg0dO5OjGr2ER4sX\",\n \"object\": \"chat.completion\",\n
\"created\": 1730746163,\n \"model\": \"o3-mini-2025-01-31\",\n \"choices\": [\n {\n
\"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n
\"content\": \"Sure! They are one of the most mysterious and exciting objects in space.\",\n
\"refusal\": null\n },\n \"finish_reason\": \"stop\"\n }\n ],\n
\"usage\": {\n \"prompt_tokens\": 17,\n \"completion_tokens\": 959,\n
\"total_tokens\": 976,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0\n
},\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 64\n }\n
},\n \"system_fingerprint\": \"fp_35c19d48ca\"\n}",
"variables":[
{
"path":"$.usage.completion_tokens",
"attribute":{
"name":"completion_tokens",
"label":"completion_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].completionTokens"
}
},
{
"path":"$.choices.message.content",
"attribute":{
"name":"content",
"label":"content",
"value":{
"type":"TEXT",
"string":"Some response from LLM"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].value"
}
},
{
"path":"$.model",
"attribute":{
"name":"model",
"label":"model",
"value":{
"type":"TEXT"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"model_name"
}
},
{
"path":"$.usage.prompt_tokens",
"attribute":{
"name":"prompt_tokens",
"label":"prompt_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].promptTokens"
}
},
{
"path":"$.usage.total_tokens",
"attribute":{
"name":"total_tokens",
"label":"total_tokens",
"value":{
"type":"INTEGER"
},
"annotations":[
"RESPONSE_PARAMETER"
],
"canonicalName":"choices[0].totalTokens"
}
}
]
}
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
corps | Chaîne | Oui | Chaîne JSON brute représentant la structure attendue du corps de la réponse du modèle. |
variables | paramètres | Non | Tableau d\'objets définissant comment extraire les éléments dynamiques de la réponse body . |
↳ path
|
Chaîne | Oui | Chemin JSONPath vers l\'emplacement de la variable dans la structure JSON body . |
↳ attribute
|
Objet | Oui | Objet décrivant les propriétés de la variable. |
↳↳ name
|
Chaîne | Oui | Nom interne de la variable. |
↳↳label
|
Chaîne | Non | Étiquette conviviale de la variable. |
↳↳ value
|
Objet | Non | Objet contenant la valeur par défaut ou initiale de la variable. |
↳↳ annotations
|
paramètres | Non | Tableau de chaînes spécifiant l\'objectif de la variable. Annotation prise en charge : RESPONSE_PARAMETER . |
↳↳ canonicalName
|
Chaîne | Non | Chemin JSON vers la variable dans le schéma canonique Automation Anywhere.
|
Pour plus de détails sur l\'API de création de modèle personnalisé, y compris la réponse et les paramètres de réponse, voir API IA Agent Studio
Autres API de modèle personnalisé
- Obtenir des informations sur l\'API de modèle personnalisé
-
GET https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}
- Cette API récupère la définition des modèles personnalisés existants.
-
Il nécessite le nom du fournisseur (
vendorName
) et le nom du modèle (modelName
) en tant que paramètres de chemin. - L\'API renvoie une réponse
200 OK
contenant les objets représentant le modèle demandé.
- Mettre à jour l\'API de définition de modèle personnalisé
-
PUT https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
- Mettre à jour le nom et la description de l\'API de définition de modèle personnalisé
-
PATCH https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
- Cette API met à jour le nom et la description de la définition du modèle personnalisé.
- Il nécessite le nom du fournisseur (
vendorName
) et le nom du modèle (modelName
) pour identifier le modèle qui sera mis à jour. - L\'API renvoie une réponse
200 OK
avec les détails du modèle mis à jour en cas de mise à jour réussie.
- Supprimer l\'API de modèle personnalisé
-
DELETE https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}
- Cette API supprime un modèle personnalisé existant.
-
Similaire à l\'API GET, elle utilise (
vendorName
) et (modelName
) comme paramètres de chemin pour identifier le modèle cible.Remarque : Le modèle ne peut être supprimé que s\'il n\'est pas actuellement associé à un Model connections actif. Cela signifie que vous devez d\'abord supprimer tout AI Skills et Task Bots qui dépendent de Model connection avant de tenter de supprimer la définition du modèle. - L\'API renvoie une réponse
204 No Content
après une suppression réussie.
- API Liste des modèles personnalisés
-
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/list
- Cette API récupère une liste de tous les modèles personnalisés définis pour tous les fournisseurs au sein du Control Room.
- Il accepte un corps de requête facultatif contenant un objet
FilterRequest
, permettant aux utilisateurs de filtrer les résultats en fonction de critères spécifiques. - L\'API renvoie une réponse
200 OK
avec des objets contenant les modèles demandés.
Pour plus de détails sur les API ci-dessus, voir API IA Agent Studio. Vous pouvez télécharger ici une collection Postman pour AI Agent Studio - des définitions de modèles personnalisés qui contiennent des exemples d\'appels d\'API pour se connecter aux modèles personnalisés.