
# 发起调用请求 - InvokeModelService
#### 功能介绍
调用已部署的大模型推理实例，发起推理请求。此接口为同步接口，无配套使用接口。该接口会有内容审核，对于不符合要求的内容会进行屏蔽，用户可以选择是否关闭。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DataArtsFabricEp/doc?api=InvokeModelService)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0014.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                            | 访问级别 | 资源类型（\*为必须）  | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                         | 别名 | 依赖的授权项                                                                                                                                                                                                                                                                                                            |
  |:---|:---|:---|:---|:---|:---|
  | DataArtsFabric:model:inference | Read | workspace \* | - g:ResourceTag/\<tag-key\>   - g:EnterpriseProjectId    | -  | - DataArtsFabric:workspace:list  - DataArtsFabric:endpoint:show   |
  | DataArtsFabric:model:inference | Read | endpoint \*  | -                                                                                                                                                                                                                                                                                                                                                                                                                                           | -  | - DataArtsFabric:workspace:list  - DataArtsFabric:endpoint:show   |
  | DataArtsFabric:model:inference | Read | model \*     | -                                                                                                                                                                                                                                                                                                                                                                                                                                           | -  | - DataArtsFabric:workspace:list  - DataArtsFabric:endpoint:show   |
     
  
 
#### URI
POST /v1/workspaces/{workspace_id}/services/instances/{instance_id}/invocations
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释**：工作空间的ID。 **约束限制**：不涉及。 **取值范围**：长度为\[1,36\]的字母、数字、中划线(-)的组合。 **默认取值**：不涉及。                                                                                           |
| instance_id  | 是    | String | **参数解释** ：实例的ID。获取方法，请参见[获取推理实例ID](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0025.html)。 **约束限制**：不涉及。 **取值范围**：长度为\[1,36\]的字母、数字、中划线(-)的组合。 **默认取值**：不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数                 | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| X-Auth-Token       | 否    | String | **参数解释**：租户token。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。        |
| X-Infer-Service-Id | 否    | String | 参数解释：Infer Service Id，用于标识推理服务的唯一ID。 约束限制：不涉及。 取值范围：不涉及。 默认取值：不涉及。 |
   
表3请求Body参数 
| 参数                | 是否必选 | 参数类型                                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| messages          | 否    | Array of [ChatMessage] objects | **参数解释**：消息。 **约束限制**：\[1,100000\]。                                                                                                                                                                                                                                                                                              |
| max_tokens        | 否    | Integer                                                                            | **参数解释**：要在聊天完成中生成的最大token数。输入token和生成token的总长度受模型的上下文长度限制。输入0时模型按照默认值4096处理。R1模型取值范围为\[0, 32k\]， V3模型取值范围为\[0, 16k\]。不可与max_completion_tokens字段同时设置，会直接报错。 **约束限制**：输入token和生成token的总长度受模型的上下文长度限制。 **取值范围**：不涉及。 **默认取值**：不涉及。 |
| temperature       | 否    | Double                                                                             | **参数解释**：Temperature是用于调整随机程度的数字。介于0和2之间。较高的值（如0.8）将使输出更随机，而较低的值（如0.2）将使输出更集中和确定性。 **约束限制**：不涉及。 **取值范围**：\[0,2\]。 **默认取值**：1。                                                                                                   |
| logit_bias        | 否    | Object                                                                             | **参数解释**：接受一个map值，其中每个键为词表中的token ID（使用tokenization接口获取），为整数，每个值为该token的偏差值，为浮点数。调整指定token在模型输出内容中出现的概率，使模型生成的内容更加符合特定的偏好。该参数暂不支持。 **约束限制**：不涉及。                                                                                                                                                                                 |
| top_p             | 否    | Double                                                                             | **参数解释**：核心采样，用于控制AI模型根据累积概率考虑的标记范围。当取值为 0 时模型仅考虑对数概率最大的一个token。 **约束限制**：不涉及。 **取值范围**：\[0,1\]。 **默认取值**：1。                                                                                                                     |
| stream            | 否    | Boolean                                                                            | **参数解释**：是否支持流式返回。如果支持，则消息按行返回（交互式效果）。如果不支持，则消息一次性全部返回。 **约束限制**：不涉及。 **取值范围**：true，false。 **默认取值**：不涉及。                                                                                                                         |
| frequency_penalty | 否    | Double                                                                             | **参数解释**：频率惩罚，控制文本中词汇的重复度，避免生成文本中某些词汇或短语出现过于频繁。正值会根据它们在文本中的现有频率惩罚新令牌，从而降低模型逐字重复同一行的可能性。 **约束限制**：不涉及 **取值范围**：\[-2.0,2.0\]。 **默认取值**：不涉及。                                                                                        |
| presence_penalty  | 否    | Double                                                                             | **参数解释**：存在惩罚，控制文本中话题的重复度，避免在对话或文本中反复讨论相同的主题或观点。正值会根据到目前为止它们是否出现在文本中来惩罚新令牌，从而增加模型谈论新主题的可能性。 **约束限制**：不涉及 **取值范围**：\[-2.0,2.0\]。 **默认取值**：不涉及。                                                                                    |
| n                 | 否    | Integer                                                                            | **参数解释**：要为每个输入消息生成多少个聊天完成选项。请注意，您将根据所有选项中生成的token数收取费用。将n保持为1，以最小化成本。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                                                                                 |
   
 表4ChatMessage 
| 参数           | 是否必选 | 参数类型                                                                                       | 描述                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| role         | 是    | String                                                                                     | **参数解释**：角色。 **约束限制**：不涉及。 **取值范围**：长度为\[1,64\]的除了 "!"、"\<"、"\>"、"="、"\&"、"""、"'" 之外的任意字符的组合。 **默认取值**：不涉及。 |
| content      | 否    | Object                                                                                     | **参数解释**：消息的内容，可以是str或object\[\]。 **约束限制**：不涉及。                                                                                                                                                             |
| name         | 否    | String                                                                                     | 提供模型信息，用于区分同一角色的参与者。                                                                                                                                                                                                                                        |
| tool_calls   | 否    | Array of [MessageToolCall] objects | 模型生成的工具调用，content与tool_calls字段二者至少有一个为非空。                                                                                                                                                                                                                   |
| tool_call_id | 否    | String                                                                                     | 模型生成的工具调用id                                                                                                                                                                                                                                                 |
   
 表5MessageToolCall 
| 参数       | 是否必选 | 参数类型                                                               | 描述                     |
|:---|:---|:---|:---|
| id       | 是    | String                                                             | 当前工具调用ID。              |
| type     | 是    | String                                                             | tool的类型。目前仅支持function。 |
| function | 是    | [Function] object | 模型调用的function。         |
   
 表6Function 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                          |
|:---|:---|:---|:---|
| name      | 是    | String | 模型调用的function名。                                                                             |
| arguments | 是    | String | 要调用的function的参数，由模型生成，格式为JSON。请注意，模型并不总是生成有效的JSON，并且可能会臆造出你函数模式中未定义的参数。在调用函数之前，请在代码中验证这些参数。 |
   
#### 响应参数
**状态码：200**
创建ChatCompletions的响应体。
**状态码：400**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度\[8,36\]。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。   |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。 |
   
**状态码：401**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度\[8,36\]。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。   |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。 |
   
**状态码：404**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度\[8,36\]。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。   |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。 |
   
**状态码：408**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度\[8,36\]。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。   |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。 |
   
**状态码：500**
表11响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度\[8,36\]。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。   |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度\[2,4096\]。 **默认取值**：不涉及。 |
   
#### 请求示例
调用已部署的大模型推理实例，发起推理请求。具体请求参数如下示例所示。
```
POST https://{endpoint}/v1/workspaces/{workspace_id}/services/instances/{instance_id}/invocations
{
  "messages" : [ {
    "role" : "user",
    "content" : "请总结2023年LLM的发展"
  } ]
}
```
#### 响应示例
**状态码：200**
创建ChatCompletions的响应体。
```
{
  "route_id" : "ac8111bf-3601-4905-8ddd-b41d3e636a4e"
}
```
**状态码：400**
BadRequest
```
{
  "error_code" : "common.01000001",
  "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"
}
```
**状态码：401**
Unauthorized
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
Forbidden
```
{
  "error" : {
    "code" : "403",
    "message" : "X-Auth-Token is invalid in the request",
    "title" : "Forbidden"
  },
  "error_code" : 403,
  "error_msg" : "X-Auth-Token is invalid in the request",
  "title" : "Forbidden"
}
```
**状态码：404**
NotFound
```
{
  "error_code" : "common.01000001",
  "error_msg" : "response status exception, code: 404"
}
```
**状态码：408**
Request Time-out
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred"
}
```
**状态码：500**
InternalServerError
```
{
  "error_code" : "common.00000500",
  "error_msg" : "internal error"
}
```
#### 状态码
| 状态码 | 描述                     |
|:---|:---|
| 200 | 创建ChatCompletions的响应体。 |
| 400 | BadRequest             |
| 401 | Unauthorized           |
| 403 | Forbidden              |
| 404 | NotFound               |
| 408 | Request Time-out       |
| 500 | InternalServerError    |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0028.html)。
