カスタム モデル API を作成
- 最終更新日2025/07/07
カスタムモデルAPIを作成するは、開発者および管理者に、独自またはサードパーティの大規模言語モデル(LLM)やその他の AI モデルをAI Agent Studioに直接シームレスに統合します。
- モデルに関する情報をカプセル化する JSON ペイロード スキーマが必要です。 スキーマは、ベンダーの名前、特定のモデルの名前、認証プロトコル、APIエンドポイントの詳細(パスパラメータ、クエリパラメータ、および必要なヘッダーを含む)、リクエストおよびレスポンスボディの構造などの属性を定義します。
- APIは、ユーザーがリクエストおよびレスポンスボディ内で変数を定義できるようにし、実行時に動的に値を設定できます。 これらの変数は異なる目的に使用するために特定のアノテーションを使って指定できます。
-
PROMPT_QUERY
(必須): この注釈は、対応する変数がAI Skillsページでユーザーによって提供されたプロンプトに置き換えられるべきであることを示しています。 これはユーザー入力プロンプトをモデルに渡すために不可欠です。 -
REQUEST_PARAMETER
(必須): この注釈は、変数が Model connections ページで構成可能なパラメータとして公開されるべきであることを示しています。 -
MODEL_PARAMETER
:REQUEST_PARAMETER
に似て、このアノテーションは AI Skills ページの設定用の変数を指定します。 -
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"
}
}
]
}
}
]
}
パラメーター | タイプ | 必須 | 説明 |
---|---|---|---|
名前 | 文字列 | Yes | カスタムモデルの名前 |
説明 | 文字列 | No | カスタムモデルの説明 |
認証アクション | オブジェクト | はい | 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 | オブジェクト | はい | カスタム認証キーを定義します。 その属性は keys の下に記載されています。
|
↳↳ キー
|
配列 | はい | 認証のためのキーオブジェクトの配列。 |
↳↳↳ 場所
|
文字列 | はい | 鍵を配置すべき場所 (例: "header")。 |
↳↳↳キー名
|
文字列 | はい | キーの名前(例:"Authorization"、"x-api-key")。 |
↳↳↳ 接頭辞
|
オブジェクト | いいえ | キー値に追加する任意の接頭辞(例: ベアラー トークンの場合は "Bearer ")。 |
awsSignatureV4 | オブジェクト | はい |
AWS_SIGNATURE_V4 は authType が AWS_SIGNATURE_V4 の場合に必要です。 このオブジェクトは、AWS Signature 認証のための AWS 認証情報(アクセスキー ID、シークレットアクセスキー、セッションキー)を定義します。 |
↳↳ アクセスキー
|
オブジェクト | はい | AWS アクセスキーID を定義します。 |
↳↳↳ 場所
|
文字列 | はい | アクセスキーを配置する場所 (例: "header", "query")。 |
↳↳↳ keyName
|
文字列 | はい | アクセスキーのパラメータ名(例:"aws_sign_access_key")。 |
↳↳ secretkey
|
オブジェクト | はい | AWSシークレットアクセスキーを定義します。 |
↳↳↳ 場所
|
文字列 | はい | 秘密鍵を配置すべき場所。 |
↳↳↳ keyName
|
文字列 | はい | シークレットキーのパラメーター名です。 |
↳↳ sessionkey
|
オブジェクト | いいえ | AWSセッションキーを定義します(任意)。 |
↳↳↳ 場所
|
文字列 | はい | セッションキーを配置する場所。 |
↳↳↳ keyName
|
文字列 | はい | セッション キーのパラメーター名です。 |
アクション
配列
{
"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":[
{
....
}
]
}
}
]
}
パラメーター | タイプ | 必須 | 説明 |
---|---|---|---|
名前 | 文字列 | はい | 特定のモデル エンドポイント/アクションのプログラム名。 |
displayName | 文字列 | はい | モデル エンドポイントのユーザーフレンドリーな名前で、UI に表示されます。 |
説明 | 文字列 | いいえ | モデル エンドポイントとその機能の詳細な説明。 |
メソッド | 文字列 | はい | API 呼び出しのための HTTP メソッド。 通常、ほとんどの生成 AI モデルでは POST となります。 |
uri | 文字列 | はい | AI モデル エンドポイントの完全な URI。 URI の動的パラメーター。 |
パラメータ | 配列 | いいえ |
Model connection を構成する際に使用されるパラメータのコレクションが含まれており、実行時に AI モデル API を呼び出す際に URI に挿入されます。 パラメータは PATH_PARAM 変数または QUERY_PARAM 変数である可能性があります。 この API リクエストに関連付けられたヘッダーを追加することもできます。 この例では、deploymentId と projectId は PATH_PARAM 変数であり、apiVersion は QUERY_PARAM 変数です。 |
リクエスト | オブジェクト | はい | モデルに送信する必要があるデータの形式と構造を定義し、変数とその注釈を含みます。 ボディ はリクエストの構造と内容を指定します。 変数 配列は、JSON 構造内の変数の位置を指定するためにパスを使用して、ボディ内の動的要素を定義します。 |
レスポンス | オブジェクト | モデルが返すデータの形式と構造を指定します。これには変数、その注釈、およびその標準名が含まれます。 ボディ はレスポンスの構造と内容を指定します。 変数 配列は、JSON 構造内の変数の位置を指定するためにパスを使用して、ボディ内の動的要素を定義します。 |
パラメータ
配列
{
"params":[
{
"type":"HEADERS"
},
{
"type":"PATH_PARAM",
"attribute":[
{
"name":"deployment",
"label":"Deployment",
"value":{
"type":"TEXT",
"string":"aai-openai2"
}
}
]
}
]
パラメーター | タイプ | 必須 | 説明 |
---|---|---|---|
タイプ | 文字列 | はい | パラメータの種類 (例: HEADERS , PATH_PARAM , QUERY_PARAM ). |
属性 | 配列 | はい | パラメータの詳細を定義する属性オブジェクトの配列。 PATH_PARAM と QUERY_PARAM に必要です。 |
↳ 名前
|
文字列 | はい | パラメータの名前(例:"deployment"、"api-version")。 |
↳ ラベル
|
文字列 | いいえ | UI に表示されるパラメータのユーザーフレンドリーなラベル。 |
↳値
|
オブジェクト | いいえ | パラメータのデフォルトまたは初期値を含むオブジェクト。 以下は属性です。
|
リクエスト
オブジェクト
{
"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"
]
}
}
]
}
}
パラメーター | タイプ | 必須 | 説明 |
---|---|---|---|
未処理 | オブジェクト | はい | 未処理のリクエスト ボディとその動的変数を定義します。 |
[ボディ] : |
文字列 | はい | リクエスト ボディ構造を表す生のJSON文字列。 この文字列には変数のプレースホルダーが含まれている必要があります。 |
↳ 変数
|
配列 | いいえ |
ボディ 内の動的要素を定義するオブジェクトの配列。 |
↳↳ パス
|
文字列 | はい |
ボディ JSON 構造内の変数の位置への JSONPath。 |
↳↳ 属性
|
オブジェクト | はい | 変数のプロパティを説明するオブジェクトです。 |
↳↳↳ 名前
|
文字列 | はい | 変数の内部名です。 |
↳↳↳ラベル
|
文字列 | いいえ | 変数のユーザーフレンドリーなラベル。 |
↳↳↳ 値
|
オブジェクト | いいえ | 変数のデフォルトまたは初期値を含むオブジェクト。 |
↳↳↳ アノテーション
|
配列 | いいえ | 変数の目的を指定する文字列の配列。 サポートされているアノテーション: PROMPT_QUERY , REQUEST_PARAMETER , MODEL_PARAMETER . |
レスポンス
オブジェクト
{
"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
)をパスパラメータとして使用して、ターゲットモデルを特定します。注: モデルは、現在アクティブなModel connectionsに関連付けられていない場合のみ削除されます。 これは、モデル定義を削除しようとする前に、AI Skillsに依存するTask Botsを最初に削除する必要があることを意味しますModel connection。 - 正常に削除されるとAPIは
204 No Content
レスポンスを返します。
- カスタムモデル API のリスト
-
POST https:/{{ControlRoomURL}}/gai/prompttools/v1/custommodel/list
- この API は、Control Room 内のすべてのベンダーに定義されたカスタム モデルのリストを取得します。
-
FilterRequest
オブジェクトを含む任意のリクエストボディを受け入れ、ユーザーが特定の基準に基づいて結果をフィルタリングできるようにします。 - API は、要求されたモデルを含むオブジェクトを含む
200 OK
レスポンスを返します。
上記のAPIの詳細については、AI エージェント Studio APIをご覧ください。 ここからダウンロードできるPostmanコレクションは、AI Agent Studio - カスタムモデルに接続するための例のAPI呼び出しを含むカスタムモデル定義です。