Crear API de modelo personalizado
- Última actualización2026/04/23
La opción Crear un modelo API personalizado permite a los desarrolladores y administradores integrar modelos de lenguaje extenso (LLM) propios o de terceros y otros modelos de IA directamente en AI Agent Studio.
- Requiere un esquema de carga útil JSON, que encapsula información sobre el modelo. El esquema define atributos como el nombre del proveedor, el nombre del modelo específico, los protocolos de autenticación, los detalles del endpoint de la API (incluidos parámetros de ruta, parámetros de consulta y encabezados requeridos), y la estructura de los cuerpos de solicitud y respuesta.
- La API permite a los usuarios definir variables dentro de los cuerpos de solicitud y respuesta que pueden llenarse dinámicamente durante el tiempo de ejecución. Estas variables se pueden designar para diferentes propósitos a través de anotaciones específicas:
-
PROMPT_QUERY(Obligatorio): Reemplaza la variable con la indicación que el usuario proporciona en la página AI Skills. Utilice esta anotación para pasar la entrada del usuario al modelo. -
REQUEST_PARAMETER(Obligatorio): Expone la variable como un parámetro configurable en la página Model connections. -
MODEL_PARAMETER: Expone la variable para la configuración en la página AI Skills. Funciona de manera similar aREQUEST_PARAMETER. -
RESPONSE_PARAMETER(Obligatorio): Proporciona el valor de la variable en la respuesta del modelo de IA.
-
- La API devuelve una respuesta
200 OKcon el modelo creado al completarse la creación con éxito.
Para descargar una colección de Postman para las definiciones de modelos personalizados de AI Agent Studio que contienen ejemplos de llamadas API para conectarse a los modelos personalizados, haga clic en este enlace Colección de Postman: definiciones de modelos personalizados.
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
-
actions[].name -
request.raw.body.model
{
"name": "Azure OpenAI reasoning models",
"description": "Example custom model connection over REST",
"version": "1.0",
"authAction": {
"authType": "CUSTOM_KEYS",
"customKeys": {
"keys": [
{
"location": "header",
"keyName": "Authorization",
"prefix": "Bearer "
}
]
}
},
"api_type": "REST",
"actions": [
{
"name": "o3-mini",
"displayName": "O3 Mini",
"description": "Example custom model O3 Mini",
"method": "POST",
"uri": "https://your-llm-endpoint.example.com/v1/chat/completions",
"params":[
{
"type":"HEADERS"
},
{
"type":"PATH_PARAM",
"attribute":[
{
"name":"deployment",
"label":"Deployment",
"value":{
"type":"TEXT",
"string":"aai-openai2"
}
}
]
}
],
"request": {
"raw": {
"body": "{ \"messages\": [{\"role\":\"system\",\"content\":\"Test system prompt\"},{\"role\":\"user\",\"content\":\"Test prompt\"}], \"model\": \"o3-mini\", \"frequency_penalty\": 0.5, \"max_tokens\": 200, \"n\": 1, \"presence_penalty\": 1.6, \"temperature\": 0.1, \"top_p\": 2.0 }",
"variables": [
{
"path": "$.frequency_penalty",
"attribute": {
"name": "frequency_penalty",
"label": "frequency_penalty",
"value": {
"type": "DECIMAL",
"number": "0"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.max_tokens",
"attribute": {
"name": "max_tokens",
"label": "max_tokens",
"value": {
"type": "INTEGER",
"number": "2048"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.n",
"attribute": {
"name": "n",
"label": "n",
"value": {
"type": "INTEGER",
"number": "1"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.presence_penalty",
"attribute": {
"name": "presence_penalty",
"label": "presence_penalty",
"value": {
"type": "DECIMAL",
"number": "0"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.temperature",
"attribute": {
"name": "temperature",
"label": "temperature",
"value": {
"type": "DECIMAL",
"number": "1"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.top_p",
"attribute": {
"name": "top_p",
"label": "top_p",
"value": {
"type": "DECIMAL",
"number": "1"
},
"annotations": ["MODEL_PARAMETER"]
}
},
{
"path": "$.messages[1].content",
"attribute": {
"name": "prompt",
"label": "prompt",
"value": {
"type": "TEXT"
},
"annotations": ["PROMPT_QUERY"]
}
}
]
}
},
"response": {
"body": "{ \"id\": \"chatcmpl-12345\", \"object\": \"chat.completion\", \"created\": 1725391483, \"model\": \"o3-mini\", \"choices\": [ { \"index\": 0, \"message\": { \"role\": \"assistant\", \"content\": \"It looks like you are testing the prompt functionality.\", \"refusal\": null }, \"finish_reason\": \"stop\" } ], \"usage\": { \"prompt_tokens\": 9, \"completion_tokens\": 37, \"total_tokens\": 46 } }",
"variables": [
{
"path": "$.choices[0].message.content",
"attribute": {
"name": "response_content",
"label": "response_content",
"value": {
"type": "TEXT",
"string": "Some response from LLM"
},
"annotations": ["RESPONSE_PARAMETER"],
"canonicalName": "choices[0].value"
}
},
{
"path": "$.usage.completion_tokens",
"attribute": {
"name": "response_completion_tokens",
"label": "response_completion_tokens",
"value": {
"type": "INTEGER"
},
"annotations": ["RESPONSE_PARAMETER"],
"canonicalName": "choices[0].completion_tokens"
}
},
{
"path": "$.usage.prompt_tokens",
"attribute": {
"name": "response_prompt_tokens",
"label": "response_prompt_tokens",
"value": {
"type": "INTEGER"
},
"annotations": ["RESPONSE_PARAMETER"],
"canonicalName": "choices[0].prompt_tokens"
}
},
{
"path": "$.usage.total_tokens",
"attribute": {
"name": "response_total_tokens",
"label": "response_total_tokens",
"value": {
"type": "INTEGER"
},
"annotations": ["RESPONSE_PARAMETER"],
"canonicalName": "choices[0].total_tokens"
}
}
]
}
}
]
}
mensajes y opciones son matrices. Debe especificar el índice correcto ([0], [1], y así sucesivamente). La omisión del índice generará errores de análisis y validación.| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| nombre | String | Sí | Nombre del modelo personalizado |
| Descripción | String | No | Descripción del modelo personalizado |
| authAction | Objeto | Sí | Define las opciones de autenticación para la llamada al modelo de IA. Consulte a continuación para obtener más detalles |
| apiType | String | Sí | Especifica el tipo de API (p. ej., "REST") |
| acciones | Matriz | Sí. | Contiene una matriz de objetos, donde cada objeto define un punto final de modelo específico o una acción dentro del modelo personalizado. |
Objeto 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":[
{
....
}
]
}
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| authType | String | Sí. | Tipo de autenticación. API_KEY para la clave de API, OAUTH2 para OAuth2, CUSTOM_KEYS para varias claves y AWS_SIGNATURE_V4 para la autenticación específica de AWS. |
| API_KEY, OAUTH2 o CUSTOM_KEYS | Objeto | Sí. | Define las claves de autenticación personalizadas. Sus atributos se describen a continuación en la sección de claves.
|
↳↳ claves
|
Matriz | Sí. | Una matriz de objetos clave para la autenticación. |
↳↳↳ ubicación
|
String | Sí. | Dónde se debe colocar la clave (p. ej., “encabezado”). |
↳↳↳keyName
|
String | Sí. | El nombre de la clave (p. ej., “Autorización”, “x-api-key”). |
↳↳↳ prefijo
|
Objeto | No | Prefijo opcional que se añade al valor de la clave (p. ej., “Portador” para los tokens de portador). |
| awsSignatureV4 | Objeto | Sí. |
AWS_SIGNATURE_V4 es obligatorio si authType es AWS_SIGNATURE_V4. Este objeto define las credenciales de AWS (ID de clave de acceso, clave de acceso secreta, clave de sesión) para la autenticación de firma de AWS. |
↳↳ accessKey
|
Objeto | Sí. | Define el ID de la clave de acceso de AWS. |
↳↳↳ ubicación
|
String | Sí. | Dónde se debe colocar la clave de acceso (p. ej., “encabezado”, “consulta”). |
↳↳↳ keyName
|
String | Sí. | El nombre del parámetro para la clave de acceso (p. ej., “aws_sign_access_key”). |
↳↳ secretkey
|
Objeto | Sí. | Define la clave de acceso secreta de AWS. |
↳↳↳ ubicación
|
String | Sí. | Dónde debe colocarse la clave secreta. |
↳↳↳ keyName
|
String | Sí. | El nombre del parámetro para la clave secreta. |
↳↳ sessionkey
|
Objeto | No | Define la clave de sesión de AWS (opcional). |
↳↳↳ ubicación
|
String | Sí. | Dónde debe colocarse la clave de sesión. |
↳↳↳ keyName
|
String | Sí. | El nombre del parámetro para la clave de sesión. |
Matriz de acciones
{
"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":[
{
....
}
]
}
}
]
}
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| nombre | String | Sí. | El nombre programático del punto final o la acción específicos del modelo. |
| displayName | String | Sí. | Un nombre fácil de usar para el punto final del modelo, que se muestra en la interfaz de usuario. |
| Descripción | String | No | Una descripción detallada del punto final del modelo y sus capacidades. |
| método | String | Sí. | El método HTTP para la solicitud API. Por lo general, debe ser POST para la mayoría de los modelos de IA generativa. |
| uri | String | Sí. | La URI completa del punto final del modelo de IA. Parámetros dinámicos en la URI. |
| parámetros | Matriz | No | Contiene una colección de parámetros que se utilizan al configurar la Model connection y se insertarán en el URI de destino al llamar a la API del modelo de IA en tiempo de ejecución. El parámetro puede ser una variable PATH_PARAM o una variable QUERY_PARAM. También puede agregar ENCABEZADOS que estén asociados con esta solicitud de API. En el ejemplo, deploymentId y projectId son una variable PATH_PARAM y apiVersion es una variable QUERY_PARAM. |
| Solicitud | Objeto | Sí. | Define el formato y la estructura de los datos que se deben enviar al modelo, incluidas las variables y sus anotaciones. El cuerpo especifica la estructura y el contenido de la solicitud. La matriz de variables define los elementos dinámicos dentro del cuerpo, usando la ruta para especificar la ubicación de la variable en la estructura JSON. |
| Respuesta | Objeto | Especifica el formato y la estructura de los datos que el modelo devolverá, incluidas las variables, sus anotaciones y sus nombres canónicos. El cuerpo especifica la estructura y el contenido de la respuesta. La matriz de variables define los elementos dinámicos dentro del cuerpo, usando la ruta para especificar la ubicación de la variable en la estructura JSON. |
Matriz de parámetros
{
"params":[
{
"type":"HEADERS"
},
{
"type":"PATH_PARAM",
"attribute":[
{
"name":"deployment",
"label":"Deployment",
"value":{
"type":"TEXT",
"string":"aai-openai2"
}
}
]
}
]
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| tipo | String | Sí. | El tipo de parámetro (p. ej., HEADERS, PATH_PARAM, QUERY_PARAM). |
| atributo | Matriz | Sí. | Una matriz de objetos de atributo que definen los detalles del parámetro. Requerido para PATH_PARAM y QUERY_PARAM. |
↳ nombre
|
String | Sí. | El nombre del parámetro (p. ej., “implementación”, “api-version”). |
↳ etiqueta
|
String | No | Una etiqueta fácil de usar para el parámetro, que se muestra en la interfaz de usuario. |
↳valor
|
Objeto | No | Un objeto que contiene el valor predeterminado o inicial del parámetro. A continuación, se presentan los atributos:
|
Objeto de solicitud
{
"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"
]
}
}
]
}
}
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| sin procesar | Objeto | Sí. | Define el cuerpo de la solicitud sin procesar y sus variables dinámicas. |
↳ cuerpo
|
String | Sí. | La string JSON sin procesar que representa la estructura del cuerpo de la solicitud. Esta string debe contener marcadores de posición para variables. |
↳ variables
|
Matriz | No | Una matriz de objetos que define elementos dinámicos dentro del cuerpo. |
↳↳ ruta
|
String | Sí. | La ruta JSONPath a la ubicación de la variable dentro de la estructura JSON del cuerpo. |
↳↳ atributo
|
Objeto | Sí. | Un objeto que describe las propiedades de la variable. |
↳↳↳ nombre
|
String | Sí. | El nombre interno de la variable. |
↳↳↳etiqueta
|
String | No | Una etiqueta fácil de usar para la variable. |
↳↳↳ valor
|
Objeto | No | Un objeto que contiene el valor predeterminado o inicial de la variable. |
↳↳↳ anotaciones
|
Matriz | No | Una matriz de strings que especifica el propósito de la variable. Anotaciones compatibles: PROMPT_QUERY, REQUEST_PARAMETER, MODEL_PARAMETER. |
Objeto de respuesta
{
"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[0].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"
}
}
]
}
}
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| cuerpo | String | Sí. | La string JSON sin procesar que representa la estructura esperada del cuerpo de respuesta del modelo. |
| variables | Matriz | No | Una matriz de objetos que define cómo extraer elementos dinámicos del cuerpo de la respuesta. |
↳ ruta
|
String | Sí. | La ruta JSONPath a la ubicación de la variable dentro de la estructura JSON del cuerpo. |
↳ atributo
|
Objeto | Sí. | Un objeto que describe las propiedades de la variable. |
↳↳ nombre
|
String | Sí. | El nombre interno de la variable. |
↳↳etiqueta
|
String | No | Una etiqueta fácil de usar para la variable. |
↳↳ valor
|
Objeto | No | Un objeto que contiene el valor predeterminado o inicial de la variable. |
↳↳ anotaciones
|
Matriz | No | Una matriz de strings que especifica el propósito de la variable. Anotación compatible: RESPONSE_PARAMETER. |
↳↳ canonicalName
|
String | No | Ruta JSON a la variable en el esquema canónico de Automation Anywhere.
|
Para obtener más detalles de la API a fin de crear un modelo personalizado, incluidos la respuesta y los parámetros de respuesta, consulte API de AI Agent Studio
Otras API de modelos personalizados
- Obtener API de información de modelo personalizado
-
GET https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}- Esta API recupera la definición de modelos personalizados existentes.
- Requiere el nombre del proveedor (
vendorName) y el nombre del modelo (modelName) como parámetros de ruta. - La API devuelve una respuesta
200 OKque contiene los objetos que representan el modelo solicitado.
- Actualizar la API de definición de modelo personalizado
-
PUT https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel - Actualiza el nombre y la descripción de la API de definición de modelo personalizado
-
PATCH https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel- Esta API actualiza el nombre y la descripción de la definición del modelo personalizado.
- Requiere el nombre del proveedor (
vendorName) y el nombre del modelo (modelName) para identificar el modelo que se actualizará. - La API devuelve una respuesta
200 OKcon los detalles del modelo actualizado cuando se actualiza con éxito.
- Eliminar API de modelo personalizado
-
DELETE https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}- Esta API elimina un modelo personalizado existente.
- Similar al API GET, utiliza (
vendorName) y (modelName) como parámetros de ruta para identificar el modelo objetivo.Nota: El modelo solo puede eliminarse si no está actualmente asociado con Model connections activas. Esto significa que primero debe eliminar cualquier AI Skills y Task Bots que dependan de la Model connection antes de intentar eliminar la definición del modelo. - La API proporcina una respuesta
204 Sin contenidotras la eliminación exitosa.
- API de lista de modelos personalizados
-
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/list- Esta API recupera una lista de todos los modelos creados usando la API de modelo personalizado para todos los proveedores dentro de la Control Room.
- Acepta un cuerpo de solicitud opcional que contiene un objeto
FilterRequest, lo que permite a los usuarios filtrar los resultados según criterios específicos. - La API devuelve una respuesta
200 OKcon objetos que contienen los modelos solicitados.
Para obtener más detalles sobre las API anteriores, consulte API de AI Agent Studio.