カスタムモデル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 の下に記載されています。
  • authTypeAPI_KEY の場合、API_KEY は必須です。
  • authTypeOAUTH2 の場合、OAUTH2 は必要です。
  • authTypeCUSTOM_KEYS の場合、CUSTOM_KEYS は必須です。
↳↳ キー 配列 はい 認証のためのキーオブジェクトの配列。
↳↳↳ 場所 文字列 はい 鍵を配置すべき場所 (例: "header")。
↳↳↳キー名 文字列 はい キーの名前(例:"Authorization"、"x-api-key")。
↳↳↳ 接頭辞 オブジェクト いいえ キー値に追加する任意の接頭辞(例: ベアラー トークンの場合は "Bearer ")。
awsSignatureV4 オブジェクト はい AWS_SIGNATURE_V4authTypeAWS_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 リクエストに関連付けられたヘッダーを追加することもできます。 この例では、deploymentIdprojectId は 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_PARAMQUERY_PARAM に必要です。
名前 文字列 はい パラメータの名前(例:"deployment"、"api-version")。
ラベル 文字列 いいえ UI に表示されるパラメータのユーザーフレンドリーなラベル。
オブジェクト いいえ パラメータのデフォルトまたは初期値を含むオブジェクト。 以下は属性です。
  • タイプ (文字列): パラメータ値のデータ型 (例: TEXT, INTEGER)。
  • 文字列(string): TEXTの場合、タイプの文字列値です。
  • 番号 (文字列): INTEGER の場合、数値は タイプ です。

リクエスト オブジェクト

{
    "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 パス。
  • 応答を生成するために消費されたトークン数を入力するには choices[0].completionTokens を使用します。
  • LLM レスポンスを入力するために choices[0].value を使用してください。
  • 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は、関連する Model connections がないカスタムモデルのみを更新できます。
  • 更新されるモデルを特定するには、ベンダー名 (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)をパスパラメータとして使用して、ターゲットモデルを特定します。
    注: モデルは、現在アクティブな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呼び出しを含むカスタムモデル定義です。