美文网首页人工智能AI
使用函数计算调用通义千问大模型实现AI对话

使用函数计算调用通义千问大模型实现AI对话

作者: 梅西爱骑车 | 来源:发表于2024-01-13 13:20 被阅读0次

    前提条件

    开通DashScope并创建API-KEY

    步骤一:创建Web函数

    1. 登录函数计算控制台,在左侧导航栏,单击函数

    2. 在顶部菜单栏,选择地域,然后在函数页面,单击创建函数

    3. 创建函数页面,按需选择创建函数的方式,配置以下配置项,然后单击创建

      • 创建函数的方式:Web函数

      • 基本设置:填写函数名称

      • 函数代码:配置函数的运行环境和代码相关信息。

        • 运行环境Debian 10

        • 代码上传方式使用示例代码

        • 启动命令python3 app.py

        • 监听端口:9000。

      • 高级配置单实例并发度设置为100,函数角色选择AliyunFCServerlessDevsRole,其他配置使用默认值。

      • 环境变量:添加变量DASHSCOPE_API_KEY,值为获取到的API-KEY。

    步骤二:编写并部署通义千问AI对话代码

    函数创建成功后,您可以开始编写使用通义千问的AI对话代码。

    1. 在函数详情页面,单击代码页签,在代码编辑器中编写代码。

      以下代码是以Python为例,通过调用通义千问模型对一个用户指令进行响应。
      单轮问答——prompt方式

    import dashscope
    import random
    
    from flask import abort
    from flask import Flask
    from flask import request
    from http import HTTPStatus
    
    app = Flask(__name__)
    
    
    def call_with_prompt(prompt):
        response = dashscope.Generation.call(
            model=dashscope.Generation.Models.qwen_turbo,
            prompt=prompt
        )
        # The response status_code is HTTPStatus.OK indicate success,
        # otherwise indicate request is failed, you can get error code
        # and message from code and message.
        if response.status_code == HTTPStatus.OK:
            print(response.output)  # The output text
            print(response.usage)  # The usage information
        else:
            print(response.code)  # The error code.
            print(response.message)  # The error message.
        return response
    
    
    @app.route("/invoke", methods=['POST', 'GET'])
    def index():
        bytes = request.stream.read()
        if bytes:
            payload = str(bytes, encoding='utf-8')
            print("Request Payload: " + payload)
            return call_with_prompt(payload)
        else:
            abort(403)
    
       
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=9000)
    

    多轮会话——通过messages调用

    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': '千义通问有SDK吗?'})
        # 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()
    

    使用在线IDE安装DashScope SDK。

    选择IDE的Terminal > New Terminal。

    在Terminal输入pip3 install dashscope -t .安装DashScope SDK。


    多出很多下载的内容

    SDK安装完成后,单击部署代码。

    步骤三:测试函数

    在函数详情页面,单击测试页签,填写好事件名称和事件内容,然后单击测试函数,执行完成后,可以直接查看执行结果。


    配置测试参数
    prompt

    执行单轮对话测试:

    {
        "code": "",
        "message": "",
        "output": {
            "choices": null,
            "finish_reason": "stop",
            "text": "通常,大语言模型的学习需要大量的数据和计算资源。在实践中,可以使用深度学习技术来训练一个大型的语言模型,包括RNN、LSTM等,并利用GPU进行加速。此外,还可以使用预训练模型,如BERT和GPT系列,这些模型可以在较少的数据上达到良好的效果。"
        },
        "request_id": "2f5f6ec9-e1a7-998a-bf33-3d739dc86a44",
        "status_code": 200,
        "usage": {
            "input_tokens": 7,
            "output_tokens": 66,
            "total_tokens": 73
        }
    }
    

    多轮对话返回结果:

    {
        "RequestId": "1-65a23a5f-15c49df0-ce93caa84ab4",
        "Code": "CAExited",
        "Message": "Function instance exited unexpectedly(code 0) with start command 'python3 app.py '.\nLogs:{\"status_code\": 200, \"request_id\": \"22c8529c-3c35-9762-a4d6-7b85b4819443\", \"code\": \"\", \"message\": \"\", \"output\": {\"text\": null, \"finish_reason\": null, \"choices\": [{\"finish_reason\": \"stop\", \"message\": {\"role\": \"assistant\", \"content\": \"千义通问是一种基于人工智能的问答系统,它可以帮助人们快速获取有用的信息。为了学习千义通问,您可以从以下几个方面入手:\\n\\n1. 阅读有关千义通问的资料,了解它的基本原理和功能。\\n\\n2. 练习使用千义通问,熟悉它的界面、操作方法以及查询技巧。\\n\\n3. 尝试使用千义通问解决实际问题,并根据实际情况调整搜索策略。\\n\\n4. 与其他千义通问用户交流,分享经验心得。\\n\\n总之,学习千义通问需要花费一定的时间和精力,但只要您坚持不懈,就一定能够掌握它!\"}}]}, \"usage\": {\"input_tokens\": 13, \"output_tokens\": 134, \"total_tokens\": 147}}\r\n{\"status_code\": 200, \"request_id\": \"039b9f3f-530b-9d67-80a4-a74cabd329f4\", \"code\": \"\", \"message\": \"\", \"output\": {\"text\": null, \"finish_reason\": null, \"choices\": [{\"finish_reason\": \"stop\", \"message\": {\"role\": \"assistant\", \"content\": \"是的,千义通问提供了丰富的SDK,支持多种编程语言,包括C++、Java、Python等,方便开发者在自己的项目中集成千义通问的功能。此外,千义通问还提供了一系列工具,可以帮助开发者轻松地将SDK应用到自己的项目中。\"}}]}, \"usage\": {\"input_tokens\": 155, \"output_tokens\": 61, \"total_tokens\": 216}}"
    }
    

    使用postman测试结果:


    相关文章

      网友评论

        本文标题:使用函数计算调用通义千问大模型实现AI对话

        本文链接:https://www.haomeiwen.com/subject/nrbxodtx.html