
# 调用文本对话模型服务
#### 功能介绍
调用大语言模型推理服务，根据用户问题，获取大语言模型的回答。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-appstage/appstage_07_0008.html)。
#### URI
POST https://aiae.appstage.myhuaweicloud.com/v1/chat/completions
#### 请求参数
表1请求Header参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| Authorization | 是    | String | **参数解释：** 鉴权信息。获取平台API Key，并为API Key添加前缀Bearer，得到标准鉴权信息，例如Bearer sk-74e4157\*\*\*。API Key获取方法请参见[创建API Key](https://support.huaweicloud.com/usermanual-wiseagent/appstage_04_0704.html)。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
表2请求Body参数 
| 参数                      | 是否必选 | 参数类型                                                                                                    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| messages                | 是    | Array of [ChatCompletionRequestMessage] objects | **参数解释：** 文本对话消息体类。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| model                   | 是    | String                                                                                                  | **参数解释：** 模型服务调用唯一id字段。平台定义了3种模型服务： 1.平台预置模型服务 登录[AI原生应用引擎](https://support.huaweicloud.com/usermanual-wiseagent/appstage_04_0638.html#section0)，在左侧导航栏选择"资产中心"，选择"大模型"页签，单击模型卡片进入模型详情页面，查看模型服务调用ID。 2.租户部署模型服务 登录[AI原生应用引擎](https://support.huaweicloud.com/usermanual-wiseagent/appstage_04_0638.html#section0)，在左侧导航栏选择"模型中心 \> 我的模型服务"，选择"我部署的"页签，在模型服务列表中复制模型服务调用ID。 3.租户接入模型服务 登录[AI原生应用引擎](https://support.huaweicloud.com/usermanual-wiseagent/appstage_04_0638.html#section0)，在左侧导航栏选择"模型中心 \> 我的模型服务"，选择"我接入的"页签，在模型服务列表中复制模型服务调用ID。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| frequency_penalty       | 否    | Number                                                                                                  | **参数解释：** 正值会根据文本中新Token的现有频率对其进行惩罚，从而降低模型重复相同行的可能性。 **约束限制：** 不涉及。 **取值范围：** 介于-2.0和2.0之间。 **默认取值：** 0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| logit_bias              | 否    | Map\<String,Integer\>                                                                                   | **参数解释：** 该参数接受一个JSON对象，将标记映射到从-100（禁止）到100（独占选择标记）的关联偏差值。 像-1和1这样的适度值将以较小的程度改变选择标记的概率。 使用logit_bias参数时，偏差被添加到模型生成的logits之前进行抽样。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                               |
| max_tokens              | 否    | Integer                                                                                                 | **参数解释：** 返回体允许的最大token数。 **约束限制：** 不涉及。 **取值范围：** 介于1和4096之间。 **默认取值：** 4096。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| n                       | 否    | Integer                                                                                                 | **参数解释：** 返回体中包含的chatCompletionChoice数量，建议默认设置为1，最大限度地降低成本。 **约束限制：** 不涉及。 **取值范围：** 介于1和128之间。 **默认取值：** 1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| presence_penalty        | 否    | Number                                                                                                  | **参数解释：** 正值会根据它们是否出现在文本中来惩罚得到新的Token，从而增加模型谈论新主题的可能性。 **约束限制：** 不涉及。 **取值范围：** 介于-2.0和2.0之间。 **默认取值：** 0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| stream                  | 否    | Boolean                                                                                                 | **参数解释：** 是否流式返回。 设为true时，返回结果为流式； 设为false时，返回结果为JSON格式结构化数据。 **约束限制：** 不涉及。 **取值范围：** true或者false。 **默认取值：** false。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| temperature             | 否    | Number                                                                                                  | **参数解释：** 较高的数值会使输出更加随机，而较低的数值会使其更加集中和确定。建议该参数设置为1。 **约束限制：** 不涉及。 **取值范围：** 介于0.0和2.0之间。 **默认取值：** 1。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| top_p                   | 否    | Number                                                                                                  | **参数解释：** 影响输出文本的多样性，取值越大，生成文本的多样性越强。 **约束限制：** 不涉及。 **取值范围：** 介于0.0和1.0之间。 **默认取值：** 0.5。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| tools                   | 否    | [FunctionCallTool] object                                   | **参数解释：** 可供模型调用的工具。 **约束限制：** 目前仅如下模型支持此功能： glm-4 glm-3-turbo moonshot-v1-8k moonshot-v1-32k moonshot-v1-128k **取值范围：** 参考约束限制。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| tool_choice             | 否    | String                                                                                                  | **参数解释：** 用于控制模型是如何选择要调用的函数，仅当工具类型为function时补充。 **约束限制：** 不涉及。 **取值范围：** 当前仅支持auto。 **默认取值：** auto。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| content_security_verify | 否    | [ContentSecurityVerify] object                         | **参数解释：** 控制是否开启内容审核。如果开启内容审核，AI原生应用引擎会对模型返回结果进行审查。 **约束限制：** 不涉及。 **取值范围：** true或者false。 **默认取值：** false。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
 表3ChatCompletionRequestMessage 
| 参数      | 是否必选 | 参数类型   | 描述                                                                                        |
|:---|:---|:---|:---|
| content | 是    | String | **参数解释：** 消息具体内容。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                            |
| role    | 是    | String | **参数解释：** 消息体对应的角色。 **约束限制：** 不涉及。 **取值范围：** 如果是系统则为system。 如果是用户则为user。 **默认取值：** 不涉及。   |
| name    | 否    | String | **参数解释：** 对话参与者的可选名称，提供给模型信息以区分相同角色的不同对话参与者。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
 表4FunctionCallTool 
| 参数       | 是否必选 | 参数类型                                                  | 描述                                                                            |
|:---|:---|:---|:---|
| type     | 否    | String                                                | **参数解释：** 调用工具类型。 **约束限制：** 目前仅支持function。 **取值范围：** 不涉及。 **默认取值：** function。 |
| function | 否    | [function] object | **参数解释：** 仅当工具类型为function时补充。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。    |
   
 表5function 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                         |
|:---|:---|:---|:---|
| name        | 否    | String | **参数解释：** 函数名称。 **约束限制：** 只能包含a-z，A-Z，0-9，下划线和中横线，最大长度限制为64。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| description | 否    | String | **参数解释：** 用于描述函数功能。 模型会根据这段描述决定函数调用方式。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。        |
| parameters  | 否    | Object | **参数解释：** Json Schema对象，用于定义函数所接受的参数。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。         |
   
 表6ContentSecurityVerify 
| 参数                 | 是否必选 | 参数类型    | 描述                                                                                                                      |
|:---|:---|:---|:---|
| is_response_verify | 否    | Boolean | **参数解释：** 是否开启返回体内容审核（默认不开启）。 有文本内容，则对文本进行内容审核； 有图片内容，则会对图片进行内容审核。 **约束限制：** 不涉及。 **取值范围：** true或false **默认取值：** false。 |
   
#### 响应参数
**状态码：200**
表7响应Body参数 
| 参数      | 参数类型                                                                 | 描述                                                        |
|:---|:---|:---|
| id      | String                                                               | **参数解释：** 文本对话唯一标识符。 **取值范围：** 不涉及。                       |
| choices | Array of [choices] objects       | **参数解释：** 返回体列表。 如果'n'大于1，则结果为多个。 **取值范围：** 不涉及。          |
| created | Integer                                                              | **参数解释：** 问答发生的时间（格式为时间戳）。 **取值范围：** 不涉及。                 |
| model   | String                                                               | **参数解释：** 实际转发后调用的模型名称，与请求体中model可能不同。 **取值范围：** 不涉及。异常详情 |
| object  | String                                                               | **参数解释：** 固定值。 **取值范围：** 'chat.completion'。               |
| usage   | [CompletionUsage] object | **参数解释：** 每次请求的用量统计。 **取值范围：** 不涉及。                       |
   
 表8choices 
| 参数            | 参数类型                                                                                             | 描述                                                                                                                     |
|:---|:---|:---|
| finish_reason | String                                                                                           | **参数解释：** 返回结束的原因。 1.stop：模型达到自然停止点或提供的停止序列； 2.length：达到请求中指定的最大令牌数； 3.content_filter：由于内容过滤器的标志而省略了内容。 **取值范围：** 不涉及。 |
| index         | Integer                                                                                          | **参数解释：** 返回多个choices时，每个choice对应的顺序。 **取值范围：** 不涉及。                                                                   |
| message       | [ChatCompletionResponseMessage] object | **参数解释：** 模型服务返回的具体消息体内容。 **取值范围：** 不涉及。                                                                               |
   
 表9ChatCompletionResponseMessage 
| 参数      | 参数类型   | 描述                                 |
|:---|:---|:---|
| content | String | **参数解释：** 返回消息体的内容。 **取值范围：** 不涉及。 |
| role    | String | **参数解释：** 返回消息体的角色。 **取值范围：** 不涉及。 |
   
 表10CompletionUsage 
| 参数                | 参数类型    | 描述                                     |
|:---|:---|:---|
| completion_tokens | Integer | **参数解释：** 回答包含的token数。 **取值范围：** 不涉及。  |
| prompt_tokens     | Integer | **参数解释：** 提问包含的token数。 **取值范围：** 不涉及。  |
| total_tokens      | Integer | **参数解释：** 提问+回答token总数。 **取值范围：** 不涉及。 |
   
**状态码：500**
表11响应Body参数 
| 参数         | 参数类型                                             | 描述                                |
|:---|:---|:---|
| error      | [Error] object | **参数解释：** 异常详情。 **取值范围：** 不涉及。    |
| error_code | String                                           | **参数解释：** 平台异常错误码。 **取值范围：** 不涉及。 |
| error_msg  | String                                           | **参数解释：** 异常信息。 **取值范围：** 不涉及。    |
   
 表12Error 
| 参数      | 参数类型   | 描述                                   |
|:---|:---|:---|
| code    | String | **参数解释：** 异常码。 **取值范围：** 不涉及。        |
| message | String | **参数解释：** 异常信息。 **取值范围：** 不涉及。       |
| param   | String | **参数解释：** 异常参数，暂未使用。 **取值范围：** 不涉及。  |
| type    | String | **参数解释：** 异常类型，同code。 **取值范围：** 不涉及。 |
   
#### 请求示例
```
{
  "model" : "publisher:baichuan:Baichuan2-Turbo",
  "messages" : [ {
    "role" : "system",
    "content" : "You are a helpful assistant."
  }, {
    "role" : "user",
    "content" : "你好!"
  } ]
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "created" : 1718772336,
  "usage" : {
    "completion_tokens" : 23,
    "prompt_tokens" : 45,
    "total_tokens" : 68
  },
  "model" : "Baichuan2-Turbo",
  "id" : "chatcmpl-xxx",
  "choices" : [ {
    "finish_reason" : "stop",
    "index" : 0,
    "message" : {
      "role" : "assistant",
      "content" : "你好，有什么我可以帮助你的吗？"
    },
    "logprobs" : null
  } ],
  "object" : "chat.completion"
}
```
**状态码：500**
服务器内部错误或三方服务器内部错误。
```
{
  "error" : {
    "message" : "Internal server error, please try again later!",
    "type" : "internal_error",
    "param" : null,
    "code" : "internal_error"
  },
  "error_code" : "AIAE.31001001",
  "error_msg" : "Internal server error, please try again later!"
}
```
#### 状态码
| 状态码 | 描述                 |
|:---|:---|
| 200 | OK                 |
| 500 | 服务器内部错误或三方服务器内部错误。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-appstage/ErrorCode.html)。
