开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

通义千问 HTTP请求多轮对话的方式是什么格式的,文档里的没法实现,需要帮助,谢谢

{"model":"qwen-max","input":{"messages":[{"role": "system","content":"You are a helpful assistant."},{"role":"user","content":"入参"}]},"parameters":{}}
这样能正确返回。

{"model":"qwen-max","input":{"messages":[{"role": "system","content":"You are a helpful assistant."},{"role":"user","content":"入参"},{"role": "system","content":"首次返回的文本"},{"role":"user","content":"继续"}]},"parameters":{}}
这样写提示错误信息,message的大概意思是body格式错误。

{"model":"qwen-max","input":{"messages":[{"role":"user","content":"继续"}]},"parameters":{}}
这样写,会回复 有什么问题需要帮忙什么的...。

展开
收起
heepoi6ohmcxg 2024-03-07 08:25:59 162 0
6 条回答
写回答
取消 提交回答
  • 桃李春风一杯酒,江湖夜雨十年灯。

    通义千问的 HTTP 请求多轮对话是通过 JSON 格式的数据传输来实现的。根据你提供的例子,可以按照以下方式构建 JSON 数据:

    {
    "model": "qwen-max",
    "input": {
    "messages": [
    {
    "role": "system",
    "content": "You are a helpful assistant."
    },
    {
    "role": "user",
    "content": "入参"
    }
    ]
    },
    "parameters": {}
    }

    需要注意的是,在上述示例中,“model”字段指定了所使用的模型名称,“input”字段包含了多轮对话的消息列表,每个消息都有一个“role”字段表示角色(系统或用户),以及一个“content”字段表示消息内容。最后,“parameters”字段可以包含其他参数,根据你的需求进行设置。

    请确保将以上 JSON 数据作为 HTTP 请求的主体发送给通义千问的 API 接口,并设置适当的请求头和 URL。具体的请求方式和 URL 取决于你所使用的编程语言和库,可以参考相关文档或示例代码来执行 HTTP 请求。

    2024-03-11 15:29:24
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    根据您提供的信息,您正在使用一个名为"qwen-max"的模型进行文本生成。根据您的描述,当您尝试将多个消息作为输入时,出现了错误提示,指出body格式错误。

    要解决这个问题,您可以尝试以下方法:

    1. 检查输入消息的格式是否正确。确保每个消息都包含"role"和"content"字段,并且它们都是有效的JSON对象。
    2. 确保输入消息的顺序正确。通常,系统角色的消息应该放在用户角色的消息之前。
    3. 检查是否有其他参数或配置需要设置。有时候,特定的模型可能需要额外的参数或配置才能正常工作。
    4. 查看模型的文档或示例代码,以了解正确的输入格式和要求。不同的模型可能有不同的输入要求,因此确保您遵循了正确的规范。
    2024-03-07 13:26:51
    赞同 1 展开评论 打赏
  • 阿里云大降价~

    通义千问的HTTP请求多轮对话的方式是使用JSON格式的数据进行传输。根据您提供的示例,您可以按照以下方式构建JSON数据:

    {
      "model": "qwen-max",
      "input": {
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "入参"
          }
        ]
      },
      "parameters": {}
    }
    

    请注意,上述示例中的"model"字段指定了使用的模型名称,"input"字段包含了多轮对话的消息列表,其中每个消息都有一个"role"字段表示角色(系统或用户),以及一个"content"字段表示消息内容。最后,"parameters"字段可以包含其他参数,根据您的需求进行设置。

    确保将上述JSON数据作为HTTP请求的正文发送给通义千问的API接口,并设置适当的请求头和URL。具体的请求方式和URL取决于您使用的编程语言和库,可以参考相关文档或示例代码来执行HTTP请求。

    2024-03-07 10:58:27
    赞同 展开评论 打赏
  • 通义千问(Alibaba Cloud's Multi-turn Dialogue Service)的HTTP请求多轮对话方式通常涉及发送一系列的请求和接收响应。然而,具体的格式和细节可能会根据通义千问的API文档和版本有所不同。由于API和文档可能会更新,建议直接参考官方提供的最新文档。

    如果你发现文档中的说明无法实现,以下是一些建议的步骤来帮助你解决问题:

    1. 确认文档版本:确保你查看的是通义千问的最新文档。API可能会更新,旧版本的文档可能不再适用。
    2. 理解API流程:多轮对话通常涉及初始化会话、发送消息、接收响应和结束会话等步骤。确保你理解这些步骤的顺序和每个步骤所需的参数。
    3. 检查请求参数:确保你的请求包含所有必需的参数,并且参数的值是正确的。例如,你可能需要传递会话ID、用户ID、消息内容等。
    4. 检查请求格式:确保你的请求格式正确,包括请求头、请求体等。有时,API可能要求特定的内容类型(如application/json)或特定的请求头。
    5. 查看错误响应:如果API返回了错误响应,仔细阅读错误信息以了解问题的原因。错误信息通常会提供关于问题的详细信息,帮助你定位问题。
    2024-03-07 10:31:23
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    image.png
    通义千问大语言模型以用户文本形式的指令(prompt)以及不定轮次的对话消息作为输入,并基于这些信息生成回复作为输出。在这一过程中,文本将被转换为语言模型可以处理的token序列。Token是模型用来表示自然语言文本的基本单位,可以直观地理解为“字”或“词”。对于中文,一个token对应1.8到2个汉字,例如“通义千问大语言模型”,转换为token后为: ["通", "义", "千", "问", "大", "语言", "模型"], 对于英文,通常一个token对应3到4个字母或者一个单词,例如:Artificial intelligence has made great progress at present. 转换为token后为: ["Art", "ificial", " intelligence", " has", " made", " great", " progress", " at", " present", "."]。

    from http import HTTPStatus
    from dashscope import Generation
    from dashscope.api_entities.dashscope_response import Role
    
    
    def conversation_with_messages():
        messages = [{'role': Role.SYSTEM, 'content': 'You are a helpful assistant.'},
                    {'role': Role.USER, 'content': '如何做西红柿炖牛腩?'}]
        response = Generation.call(
            Generation.Models.qwen_turbo,
            messages=messages,
            result_format='message',  # set the result to be "message" format.
        )
        if response.status_code == HTTPStatus.OK:
            print(response)
            # append result to messages.
            messages.append({'role': response.output.choices[0]['message']['role'],
                             'content': response.output.choices[0]['message']['content']})
        else:
            print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                response.request_id, response.status_code,
                response.code, response.message
            ))
        messages.append({'role': Role.USER, 'content': '不放糖可以吗?'})
        # make second round call
        response = Generation.call(
            Generation.Models.qwen_turbo,
            messages=messages,
            result_format='message',  # set the result to be "message" format.
        )
        if response.status_code == HTTPStatus.OK:
            print(response)
        else:
            print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                response.request_id, response.status_code,
                response.code, response.message
            ))
    
    
    if __name__ == '__main__':
        conversation_with_messages()
    

    image.png

    参考;https://help.aliyun.com/zh/dashscope/developer-reference/api-details?spm=a2c4g.11186623.0.i18

    2024-03-07 09:08:18
    赞同 1 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,看了你的问题,这似乎是和阿里云通用智能对话平台相关的问题,对于多轮对话的方式,可以按照以下格式进行编写:
    image.png

    {
      "model": "qwen-max",
      "input": {
        "messages": [
          {"role": "user", "content": "用户输入1"},
          {"role": "assistant", "content": "助手回复1"},
          {"role": "user", "content": "用户输入2"},
          {"role": "assistant", "content": "助手回复2"}
        ]
      },
      "parameters": {}
    }
    

    每一轮对话都由两个消息构成,一个是用户角色的消息,一个是助手角色的消息,这里的角色需要使用 "user" 和 "assistant",而不是 "system",确保消息内容是有效的字符串。请确保你的请求是正确的JSON格式,并且按照上述示例进行编写。

    2024-03-07 09:08:16
    赞同 展开评论 打赏
滑动查看更多

相关电子书

更多
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载