赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 实践教程
  5. AI推理
  6. 使用函数计算部署通义千问大模型实现AI对话

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

  • AI推理
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

通义千问是阿里云自主研发的大语言模型,能够在用户自然语言输入的基础上,通过自然语言理解和语义分析,在不同领域、任务内为用户提供服务和帮助。本文介绍如何通过函数计算实现基于通义千问的AI对话。

背景信息

通义千问模型接受用户以文本形式的指令(prompt)以及不定轮次的对话历史(history)作为输入,并基于这些信息生成回复作为输出。在这一过程中,文本将被转换为语言模型可以处理的Token序列。Token是模型用来表示自然语言文本的基本单位,可以直观地理解为“字”或“词”。对于中文文本来说,1个Token通常对应一个汉字;对于英文文本来说,1个Token通常对应3至4个字母或1个单词。例如,中文文本“你好,我是通义千问”会被转换成序列['你', '好', ',', '我', '是', '通', '义', '千', '问'],而英文文本"Nice to meet you."则会被转换成['Nice', ' to', ' meet', ' you', '.']。

由于模型调用的计算量与Token序列长度相关,输入或输出Token数量越多,模型的计算时间越长,我们将根据模型输入和输出的Token数量计费。可以从API返回结果的usage字段中了解到您每次调用时使用的Token数量。您也可以使用Token计算器或者调用Token计算API来预估文本对应的Token数量。

通义千问支持的模型如下:

旗舰模型

通义new 通义千问-Max

适合复杂任务,推理能力最强

通义new 通义千问-Plus

效果、速度、成本均衡

通义new 通义千问-Turbo

适合简单任务,速度快、成本低

通义new Qwen-Long

支持长达千万字文档,成本低

API调用模型名

(稳定版本)

qwen-max

qwen-plus

qwen-turbo

qwen-long

最大上下文长度

(Token数)

32,768

131,072

1,000,000

10,000,000

最低输入价格

(每千Token)

0.02元

0.0008元

0.0003元

0.0005元

最低输出价格

(每千Token)

0.06元

0.002元

0.0006元

0.002元

前提条件

获取API-KEY。登录百炼控制台,在右上角单击image > API-KEY进入我的API-KEY页面,获取已有API-KEY或重新创建API-KEY。

image

部署说明

本文中步骤一和步骤二介绍通过函数计算控制台创建函数、编写代码和安装SDK的方式部署应用。为了方便操作,您也可以直接单击start-qwen-api-messages或start-qwen-api-prompt按钮,然后根据提示完成一键部署该应用。部署完成后单击应用,在应用详情页面找到函数资源,然后直接根据步骤三测试结果即可。

image

步骤一:创建Web函数

  1. 登录函数计算控制台,在左侧导航栏,单击函数,选择地域,然后单击创建函数。

  2. 在创建函数页面,选择Web函数,重点设置以下配置项,然后单击创建。

    • 设置函数代码、角色等相关配置。

      image

      image

    • 设置环境变量。变量DASHSCOPE_API_KEY的值为您从百炼控制台获取的API-KEY。

      image

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

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

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

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

    通过messages调用

    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_messages(content):
        messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
                    {'role': 'user', 'content': content}]
        response = dashscope.Generation.call(
            dashscope.Generation.Models.qwen_turbo,
            messages=messages,
            # set the random seed, optional, default to 1234 if not set
            seed=random.randint(1, 10000),
            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
            ))
        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_messages(payload)
        else:
            abort(403)
    
          
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=9000)

    通过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)
  2. 在WebIDE的终端窗口,执行pip3 install dashscope -t .安装DashScope SDK,执行完成后单击部署代码。

    image

步骤三:测试函数

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

image

本文事件内容以"如何做西红柿炖牛腩?"为例,测试函数的返回结果如下:

通过messages调用

{
    "code": "",
    "message": "",
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "content": "材料:\n牛腩500克、西红柿2个、大葱1根、生姜3片、大蒜2瓣、八角1颗、香叶2片、干辣椒4个、料酒1勺、生抽1勺、老抽1勺、白糖1小勺、食盐适量、清水适量。\n\n做法:\n1. 牛腩切块,冷水入锅,加入料酒焯水,撇去浮沫后捞出沥水备用。\n2. 热锅凉油,放入大葱、姜片、蒜瓣、八角、香叶和干辣椒煸炒出香味。\n3. 加入西红柿翻炒至软烂出汁。\n4. 放入牛腩块继续翻炒均匀,加入生抽、老抽和白糖调味。\n5. 倒入足够的清水,大火烧开后转中小火慢炖1小时左右,至牛腩熟透且汤汁浓稠。\n6. 最后加入适量的食盐调味即可。",
                    "role": "assistant"
                }
            }
        ],
        "finish_reason": null,
        "text": null
    },
    "request_id": "61dbd6b0-810b-9115-ad26-65e9ba93f84d",
    "status_code": 200,
    "usage": {
        "input_tokens": 15,
        "output_tokens": 212,
        "total_tokens": 227
    }
}

通过prompt调用

{
    "code": "",
    "message": "",
    "output": {
        "choices": null,
        "finish_reason": "stop",
        "text": "\n\n做西红柿炖牛腩的步骤如下:\n\n所需材料:\n- 牛腩500克\n- 西红柿3个\n- 姜片适量\n- 大葱段适量\n- 料酒适量\n- 生抽适量\n- 红糖适量\n- 八角2颗\n- 桂皮1小块\n- 食盐适量\n- 清水适量\n\n步骤:\n\n1. 牛腩切块,放入开水中焯水,捞出洗净备用。\n\n2. 热锅凉油,加入姜片和大葱段炒香。\n\n3. 加入牛腩翻煎至两面微黄。\n\n4. 加入料酒、生抽、红糖、八角和桂皮继续翻煎。\n\n5. 加入足够的清水,水量要盖过牛腩,大火烧开后撇去浮沫。\n\n6. 改为中小火慢炖1小时左右,直到牛腩变得软烂。\n\n7. 在炖煮过程中可以适当调整味道,如加盐等。\n\n8. 西红柿切成块,放入炖好的牛腩中再煮约10分钟即可。\n\n9. 出锅前可撒上一些葱花点缀。\n\n以上就是做西红柿炖牛腩的详细步骤。希望对你有所帮助!"
    },
    "request_id": "a9a5f430-745d-9f5d-b406-8588978f638b",
    "status_code": 200,
    "usage": {
        "input_tokens": 8,
        "output_tokens": 278,
        "total_tokens": 286
    }
}

测试完成后,如果您暂时不需要使用此应用,请及时删除应用以及关联的其他资源。

相关文档

  • 通义千问API详情:通过API使用通义千问。

相关文章

一键部署QwQ-32B推理模型,2种方式简单、快速体验 2025-04-16 14:38

QwQ-32B推理模型正式发布并开源,凭借其卓越的性能和广泛的应用场景,迅速在全球范围内获得了极高的关注度。基于阿里云函数计算 FC提供算力,Serverless+ AI 云原生应用开发平台 CAP现已提供模型服务、应用模板两种部署方式辅助您部

0代码,2种方式,一键部署DeepSeek系列模型 2025-04-16 14:38

DeepSeek凭借其卓越的性能和广泛的应用场景,迅速在全球范围内获得了极高的关注度和广泛的用户基础。DeepSeek-R1-Distill是使用DeepSeek-R1生成的样本对开源模型进行蒸馏得到的小模型,拥有更小参数规模,推理成本更低,基准测试同样表现出色。云原生应

通过函数计算部署Flux文本生成图像模型 2025-04-16 14:38

本实践教程展示了如何通过函数计算部署Flux模型,并通过ComfyUI界面体验Flux的AIGC创作能力。Flux是由Black Forest Labs推出的文本生成图像模型,该模型以其高清晰度图像生成和优秀的提示词遵循能力而受到关注。ComfyUI 是一个为Stable Diffusion模型设计

基于函数计算部署GPT-Sovits语音生成模型实现AI克隆声音 2025-04-16 14:38

GPT-Sovits是一个热门的文本生成语音的大模型,只需要少量样本的声音数据源,就可以实现高度相似的仿真效果。通过函数计算部署GPT-Sovits模型,您无需关心GPU服务器维护和环境配置,即可快速部署和体验模型,同时,可以充分利用

基于函数计算构建ComfyUI+SDFLUX文生图服务 2025-04-16 14:38

本文通过自行构建ComfyUI + SD/FLUX镜像,基于函数计算的GPU函数能力,快速搭建一个文生图服务。 方案概览 使用阿里云函数计算快速搭建一个文生图服务,仅需以下两步: 选择公共镜像或者构建并推送镜像。 选择一

通过函数计算部署ComfyUI以实现一个AIGC图像生成系统 2025-04-16 14:38

方案概览 ComfyUI是一款基于节点工作流稳定扩散算法的全新WebUI。如果您需要高质量的图像生成功能,建议您使用函数计算提供的ComfyUI模型,也可以自定义ComfyUI模型、安装插件以满足定制化创作需求。函数计算基于Serverless应用中心开发“ComfyUI应用模板”,简化开发者的部署

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号