创建自定义模型 API
- Updated: 2025/07/07
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 | 对象 | 是 | 定义自定义身份验证密钥。 其属性在下文的密钥 部分进行描述。
|
↳↳ 密钥
|
数组 | 是 | 用于身份验证的关键对象数组。 |
↳↳↳ 位置
|
字符串 | 是 | 密钥应放置的位置(例如,“header”)。 |
↳↳↳keyName
|
字符串 | 是 | 密钥的名称(例如,"Authorization"、"x-api-key")。 |
↳↳↳ 前缀
|
对象 | 否 | 要添加到密钥值的可选前缀(例如,"Bearer",表示持有者令牌)。 |
awsSignatureV4 | 对象 | 是 | 如果 authType 是 AWS_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。 在此示例中,deploymentId 和 projectId 是 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 | 字符串 | 是 | 参数的类型(例如,HEADERS 、PATH_PARAM 、QUERY_PARAM )。 |
属性 | 数组 | 是 | 定义参数详细信息的属性对象数组。 对于 PATH_PARAM 和 QUERY_PARAM 为必填项。 |
↳ 名称
|
字符串 | 是 | 参数的名称(例如,"deployment"、"api-version")。 |
↳ 标签
|
字符串 | 否 | 参数的用户友好标签,显示在 UI 中。 |
↳值
|
对象 | 否 | 包含参数默认值或初始值的对象。 以下是属性:
|
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_QUERY 、REQUEST_PARAMETER 、MODEL_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 路径。
|
有关创建自定义模型 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 的名称和描述
-
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 调用。