Create Custom Model API 为开发者和管理员提供了将专有或第三方大型语言模型 (LLM) 及其他 AI 模型直接无缝集成到 AI Agent Studio 的能力。

  • 它需要一个 JSON 有效负载模式,其中封装了有关模型的信息。 此模式定义了供应商的名称、特定模型的名称、身份验证协议、API 端点详细信息(包括路径参数、查询参数和所需标头)以及请求和响应主体的结构等属性。
  • 此 API 允许用户在请求和响应主体中定义变量,这些变量可以在运行时动态填充。 可以使用特定的注释来指定这些变量用于不同的目的:
    • PROMPT_QUERY (必填): 此注释表示对应的变量应替换为用户在 AI 技能页面中提供的提示。 这对于将用户输入提示传递给模型至关重要。
    • REQUEST_PARAMETER (必填): 此注释表明此变量应作为可配置参数在模型连接页面上公开。
    • MODEL_PARAMETER REQUEST_PARAMETER 类似,此注释表示 AI 技能页面上的配置变量。
    • RESPONSE_PARAMETER (必填): 此注释表示此变量将在 AI 模型的响应中返回。
  • 成功创建后,API 将返回 200 OK 响应,并附带创建的模型。
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
请求正文
{
   "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"
                  }
               }
            ]
         }
      }
   ]
}

请求参数
参数 类型 必填 描述
name 字符串 自定义模型的名称
description 字符串 自定义模型的描述
authAction 对象 定义 AI 模型调用的身份验证选项。 有关更多详细信息,请参阅下方
apiType 字符串 指定 API 类型(例如,"REST")
操作 数组 包含一个对象数组,其中每个对象都定义了自定义模型中的特定模型端点或操作。

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":[
      {
         .... 
      }
   ]
}
参数 类型 必填 描述
authType 字符串 身份验证类型。 API_KEY 表示 API 密钥,OAUTH2 表示 OAuth2,CUSTOM_KEYS 表示多个密钥,AWS_SIGNATURE_V4 表示 AWS 专用身份验证。
API_KEY、OAUTH2 或 CUSTOM_KEYS 对象 定义自定义身份验证密钥。 其属性在下文的密钥部分进行描述。
  • 如果 authTypeAPI_KEY,则 API_KEY 必填。
  • 如果 authTypeOAUTH2,则 OAUTH2 必填。
  • 如果 authTypeCUSTOM_KEYS,则 CUSTOM_KEYS 必填。
↳↳ 密钥 数组 用于身份验证的关键对象数组。
↳↳↳ 位置 字符串 密钥应放置的位置(例如,“header”)。
↳↳↳keyName 字符串 密钥的名称(例如,"Authorization"、"x-api-key")。
↳↳↳ 前缀 对象 要添加到密钥值的可选前缀(例如,"Bearer",表示持有者令牌)。
awsSignatureV4 对象 如果 authTypeAWS_SIGNATURE_V4,则 AWS_SIGNATURE_V4 必填。 此对象定义 AWS 签名身份验证的 AWS 凭据(访问密钥 ID、秘密访问密钥、会话密钥)。
↳↳ accessKey 对象 定义 AWS 访问密钥 ID。
↳↳↳ 位置 字符串 访问密钥应放置的位置(例如,"header"、"query")。
↳↳↳ keyName 字符串 访问密钥的参数名称(例如,"aws_sign_access_key")。
↳↳ secretkey 对象 定义 AWS 秘密访问密钥。
↳↳↳ 位置 字符串 密钥应放置的位置。
↳↳↳ keyName 字符串 密钥的参数名称。
↳↳ sessionkey 对象 定义 AWS 会话密钥(可选)。
↳↳↳ 位置 字符串 会话密钥应放置的位置。
↳↳↳ keyName 字符串 会话密钥的参数名称。

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":[
               {
                  ....
               }
            ]
         }
      }
   ]
}
参数 类型 必填 描述
name 字符串 特定模型端点/操作的编程名称。
displayName 字符串 模型端点的用户友好名称,显示在 UI 中。
description 字符串 模型端点及其功能的详细描述。
method 字符串 API 调用的 HTTP 方法。 对于大多数生成式 AI 模型,通常应为 POST
uri 字符串 AI 模型端点的完整 URI。 URI 中的动态参数。
params 数组 包含一组在配置 模型连接 时使用的参数,并将在运行时调用 AI 模型 API 时插入到 URI 中。 参数可以是 PATH_PARAM 变量或 QUERY_PARAM 变量。 还可以添加与此 API 请求关联的 HEADERS。 在此示例中,deploymentIdprojectId 是 PATH_PARAM 变量,apiVersion 是 QUERY_PARAM 变量。
请求 对象 定义需要发送到模型的数据的格式和结构,包括变量及其注释。 正文指定了请求的结构和内容。 变量数组定义了正文中的动态元素,使用路径指定变量在 JSON 结构中的位置。
响应 对象 指定模型将返回的数据的格式和结构,包括变量、其注释和规范名称。 正文指定了响应的结构和内容。 变量数组定义了正文中的动态元素,使用路径指定变量在 JSON 结构中的位置。

params 数组

{
   "params":[
      {
         "type":"HEADERS"
      },
      {
         "type":"PATH_PARAM",
         "attribute":[
            {
               "name":"deployment",
               "label":"Deployment",
               "value":{
                  "type":"TEXT",
                  "string":"aai-openai2"
               }
            }
         ]
      }
   ]
参数 类型 必填 描述
type 字符串 参数的类型(例如,HEADERSPATH_PARAMQUERY_PARAM)。
属性 数组 定义参数详细信息的属性对象数组。 对于 PATH_PARAMQUERY_PARAM 为必填项。
名称 字符串 参数的名称(例如,"deployment"、"api-version")。
标签 字符串 参数的用户友好标签,显示在 UI 中。
对象 包含参数默认值或初始值的对象。 以下是属性:
  • type(字符串): 参数值的数据类型(例如,TEXTINTEGER)。
  • string(字符串): 如果 typeTEXT,则为字符串值。
  • number(字符串): 如果 typeINTEGER,则为数字值。

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"
                  ]
               }
            }
         ]
      }
   }
参数 类型 必填 描述
raw 对象 定义原始请求正文及其动态变量。
正文 字符串 代表请求正文结构的原始 JSON 字符串。 此字符串应包含变量的占位符。
变量 数组 定义正文中动态元素的对象数组。
↳↳ 路径 字符串 正文 JSON 结构中变量位置的 JSONPath。
↳↳ 属性 对象 描述变量属性的对象。
↳↳↳ 名称 字符串 变量的内部名称。
↳↳↳标签 字符串 变量的用户友好标签。
↳↳↳ 对象 包含变量默认值或初始值的对象。
↳↳↳ 注释 数组 指定变量用途的字符串数组。 支持的注释: PROMPT_QUERYREQUEST_PARAMETERMODEL_PARAMETER

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"
            }
         }
      ]
   }
}
参数 类型 必填 描述
正文 字符串 原始 JSON 字符串,表示来自模型的预期响应正文结构。
变量 数组 用于定义如何从响应正文中提取动态元素的对象数组。
路径 字符串 正文 JSON 结构中变量位置的 JSONPath。
属性 对象 描述变量属性的对象。
↳↳ 名称 字符串 变量的内部名称。
↳↳标签 字符串 变量的用户友好标签。
↳↳ 对象 包含变量默认值或初始值的对象。
↳↳ 注释 数组 指定变量用途的字符串数组。 支持的注释: RESPONSE_PARAMETER
↳↳ canonicalName 字符串 Automation Anywhere 规范架构中变量的 JSON 路径。
  • 使用 choices[0].completionTokens 填充生成响应所消耗的令牌数量。
  • 使用 choices[0].value 填充 LLM 响应。
  • 使用 model_name 填充 AI 模型的名称或标识符。
  • 使用 choices[0].promptTokens 填充提示消耗的令牌数量。
  • 使用 choices[0].totalTokens 填充完成请求所消耗的令牌总数。

有关创建自定义模型 API 的更多详细信息,包括响应和响应参数,请参见 AI Agent Studio API

其他自定义模型 API

获取自定义模型信息 API
GET https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}
  • 此 API 检索现有自定义模型的定义。
  • 它需要供应商名称 (vendorName) 和模型名称 (modelName) 作为路径参数。
  • 此 API 返回 200 OK 响应,其中包含表示所请求模型的对象。
更新自定义模型定义 API
PUT https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
  • 此 API 可更新现有的自定义模型定义。
    注: 此 API 只能更新没有关联 模型连接 的自定义模型。
  • 需要供应商名称 (vendorName) 和模型名称 (modelName) 以标识将要更新的模型。
  • 成功更新后,API 将返回 200 OK 响应,包含更新后的模型。
更新自定义模型定义 API 的名称和描述
PATCH https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel
  • 此 API 更新自定义模型定义的名称和描述。
  • 需要供应商名称 (vendorName) 和模型名称 (modelName) 以标识将要更新的模型。
  • 成功更新后,API 将返回 200 OK 响应,包含更新后的模型详细信息。
删除自定义模型 API
DELETE https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/vendors/{vendorName}/models/{modelName}
  • 此 API 删除现有自定义模型。
  • 与 GET API 类似,它使用 (vendorName) 和 (modelName) 作为路径参数来识别目标模型。
    注: 此模型只有在当前未与任何活跃的模型连接关联时才能被删除。 这意味着在尝试删除模型定义之前,您必须先移除任何依赖于模型连接AI 技能任务机器人
  • 成功删除后,此 API 返回 204 No Content 响应。
列出自定义模型 API
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/list
  • 此 API 检索 Control Room 中为所有供应商定义的所有自定义模型的列表。
  • 它接受一个可选的请求主体,其中包含 FilterRequest 对象,使用户能够根据特定条件过滤结果。
  • 此 API 返回 200 OK 响应,其中包含所请求模型的对象。

有关上述 API 的更多详细信息,请参见 AI Agent Studio API。 您可以在此处下载 AI Agent Studio 的 Postman 集合 - 自定义模型定义,其中包含连接到自定义模型的示例 API 调用。