更新时间:2025-07-31 GMT+08:00

对话Chat/POST

MaaS平台提供功能丰富的在线推理能力,支持用户选取模型在专属实例上进行自部署。本文介绍对话Chat相关API的调用规范。

接口信息

表1 接口信息

名称

说明

取值

API地址

调用模型服务的API地址。

https://api.modelarts-maas.com/v1/chat/completions

model参数

model参数调用名称。

“调用说明”页面获取。更多信息,请参见调用ModelArts Studio(MaaS)部署的模型服务

创建聊天对话请求

  • 鉴权说明

    MaaS推理服务支持使用API Key鉴权,鉴权头采用如下格式:

    'Authorization': 'Bearer 该服务所在Region的ApiKey'
  • 请求参数和响应参数说明如下:
    表2 请求参数说明

    参数名称

    是否必选

    默认值

    参数类型

    说明

    model

    Str

    调用时的模型名称。取值请参见上方表1

    messages

    -

    Array

    请求输入的问题,其中role为角色,content为对话内容。示例如下:

    "messages": [
        {"role": "system","content": "你是一个乐于助人的AI助手"},        
        {"role": "user","content": "9.11和9.8哪个大?"} 
    ]

    更多信息,请参见表3

    stream_options

    Object

    该参数用于配置在流式输出时是否展示使用的Token数目。只有当“stream”“True”时,该参数才会激活生效。如果您需要统计流式输出模式下的Token数目,可将该参数配置为stream_options={"include_usage":True}。更多信息,请参见表4

    max_tokens

    Int

    模型回复的最大长度。

    top_k

    -1

    Int

    控制要考虑的前几个Tokens的数量的整数。设置为“-1”表示考虑所有Tokens。

    适当降低该值可以减少采样时间。

    top_p

    1.0

    Float

    控制要考虑的前几个Tokens的累积概率的浮点数。

    取值范围:0~1

    设置为“1”表示考虑所有Tokens。

    temperature

    1.0

    Float

    控制采样的随机性的浮点数。较低的值使模型更加确定性,较高的值使模型更加随机。“0”表示贪婪采样。

    stop

    None

    None/Str/List

    用于停止生成的字符串列表。返回的输出将不包含停止字符串。

    例如,设置为["你","好"]时,在生成文本过程中,遇到“你”或者“好”将停止文本生成。

    stream

    False

    Bool

    是否开启流式推理。默认为“False”,表示不开启流式推理。

    n

    1

    Int

    返回多条正常结果。

    • 不使用beam_search场景下,n取值建议为1≤n≤10。如果n>1时,必须确保不使用greedy_sample采样,即top_k > 1,temperature > 0。
    • 使用beam_search场景下,n取值建议为1<n≤10。如果n=1,会导致推理请求失败。
      说明:
      • n建议取值不超过10,n值过大会导致性能劣化,显存不足时,推理请求会失败。
      • DeepSeek-R1和DeepSeek-V3暂不支持设置n的值大于1。

    use_beam_search

    False

    Bool

    是否使用beam_search替换采样。

    使用该参数时,如下参数必须按要求设置。

    • n:大于1
    • top_p:1.0
    • top_k:-1
    • temperature:0.0
      说明:

      DeepSeek-R1和DeepSeek-V3暂不支持设置n的值大于1。

    presence_penalty

    0.0

    Float

    表示会根据当前生成的文本中新出现的词语进行奖惩。取值范围[-2.0,2.0]。

    frequency_penalty

    0.0

    Float

    会根据当前生成的文本中各个词语的出现频率进行奖惩。取值范围[-2.0,2.0]。

    length_penalty

    1.0

    Float

    表示在beam search过程中,对于较长的序列,模型会给予较大的惩罚。

    使用该参数时,必须添加如下三个参数,且必须按要求设置。

    • top_k:-1
    • use_beam_search:true
    • best_of:大于1
    说明:

    DeepSeek-R1和DeepSeek-V3暂不支持设置length_penalty。

    ignore_eos

    False

    Bool

    表示是否忽略EOS并且继续生成Token。

    表3 请求参数messages说明

    参数名称

    是否必选

    默认值

    参数类型

    说明

    role

    Str

    当前支持的角色如下:

    • user: 用户
    • assistant: 对话助手(模型)
    • system:助手人设

    content

    Str

    • 当role为system时:给AI模型设定的人设。
      {"role": "system","content": "你是一个乐于助人的AI助手"}
    • 当role为user时:用户输入的问题。
      {"role": "user","content": "9.11和9.8哪个大?"}
    • 当role为assistant时:AI模型输出的答复内容。
      {"role": "assistant","content": "9.11大于9.8"}
    表4 请求参数stream_options说明

    参数名称

    是否必选

    默认值

    参数类型

    说明

    include_usage

    true

    Bool

    流式响应是否输出Token用量信息:

    • true:是,在每一个chunk会输出一个usage字段,显示累计消耗的Token统计信息。
    • false:否,不显示消耗的Token统计信息。
    表5 响应参数说明

    参数名称

    类型

    说明

    id

    Str

    该次请求的唯一标识。

    object

    Str

    类型-chat.completion:多轮对话返回。

    created

    Int

    时间戳。

    model

    Str

    调用时的模型名称。

    choices

    Array

    模型答复的内容,包含index和message两个参数,message中:

    • content为模型的正式答复内容。
    • reasoning content为模型的深度思考内容(仅限DeepSeek系列模型)。

    usage

    Object

    请求消耗的Token统计信息:

    • 非流式请求默认返回。
    • 流式请求默认返回,在每一个chunk会输出一个usage字段,显示消耗的Token统计信息。

    参数说明:

    • prompt tokens:输入Token数量。
    • completion tokens: 输出Token数量。
    • total tokens:总Token数量。

    prompt_logprobs

    Float

    对数概率。用户可以借此衡量模型对其输出内容的置信度,或者探索模型给出的其他选项。

请求示例

  • Python请求示例:
    # coding=utf-8
    
    import requests
    import json
    
    if __name__ == '__main__':
        url = "https://api.modelarts-maas.com/v1/chat/completions"
    
        # Send request.
        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer yourApiKey' # 把yourApiKey替换成真实的API Key。
        }
        data = {
            "model": "DeepSeek-R1",
            "max_tokens": 20,
            "messages": [
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": "你好"}
            ],
            # 是否开启流式推理, 默认为False, 表示不开启流式推理。
            "stream": False,
            # 在流式输出时是否展示使用的Token数目。只有当stream为True时改参数才会生效。
            # "stream_options": { "include_usage": True },
            # 控制采样随机性的浮点数,值较低时模型更具确定性,值较高时模型更具创造性。"0"表示贪婪取样。默认为1.0。
            "temperature": 1.0
        }
        resp = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
    
        # Print result.
        print(resp.status_code)
        print(resp.text)
  • OpenAI SDK请求示例:
    from openai import OpenAI
    
    client = OpenAI(
      base_url = "https://api.modelarts-maas.com/v1",
      api_key = "yourApiKey"
    )
    
    completion = client.chat.completions.create(
      model="DeepSeek-R1",
      messages=[{"role":"user","content":"9.11和9.8哪个大"}],
      temperature=0.6,
      top_p=0.7,
      max_tokens=4096,
      stream=True
    )
    
    for chunk in completion:
      if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

响应示例

{
    "id":"chat-71406e38b0d248c9b284709f8435****",
    "object":"chat.completion",
    "created":1740809549,
    "model":"DeepSeek-R1",
    "choices":[
        {
            "index":0,
            "message":{
                "role":"assistant",
                "content":"\n\n比较两个小数9.11和9.8的大小:\n\n1. **比较整数部分**:两者的整数部分都是9,相等。\n2. **比较十分位**: \n - 9.11的十分位是 **1** \n - 9.8可以看作是9.80,其十分位是 **8** \n - **8 > 1**,因此在这一位上已经能分出大小。\n\n**结论**: \n**9.8 > 9.11** \n(小数值比较时需对齐位数,直接比较对应数位的数字即可)",
                "reasoning_content":"嗯,我现在需要比较9.11和9.8哪个大。首先,我得回忆一下小数比较的方法。记得比较小数的时候,应该先比较整数部分,如果整数部分相同,再依次比较小数部分的十分位、百分位,直到分出大小。\n\n这两个数的整数部分都是9,所以整数部分相同。接下来比较十分位。9.11的十分位是1,而9.8的十分位是8。这里可能会有问题,因为有时候可能会有同学直接把9.8当作9.80来看,或者考虑十分位上的数字大小对比。\n\n现在比较的话,9.8的十分位是8,而9.11的十分位是1,明显8比1大,所以这时候是不是应该认为9.8比9.11大呢?\n\n不过要注意到,有的同学可能误以为小数位数越多数值越大,但实际并非如此,比如0.9比0.8999要大,所以位数多不一定数值大。\n\n另外,可以把两个数的小数部分统一成相同的位数来比较。例如,9.8可以写成9.80,这样十分位是8,百分位是0,而9.11的十分位是1,百分位是1。那么在十分位的时候,8比1大,所以9.80(即9.8)大于9.11。\n\n因此,最终结论是9.8比9.11大。\n",
                "tool_calls":[]
                },
                "logprobs":null,
                "finish_reason":"stop",
                "stop_reason":null        
        }
    ],
    "usage":{
        "prompt_tokens":21,
        "total_tokens":437,
        "completion_tokens":416
        },
    "prompt_logprobs":null
}