目录

阿里通义千问是不是有点拉胯?

这两天使用阿里的模型服务灵积平台,在上面开通了通义千问的使用权限,迫不及待的想要体验一下,但是结果似乎有点拉胯。。。且听我慢慢道来。

阿里云模型服务灵积简介

我也懒得写简介了,让通义千问说一下吧。。。

Q: 介绍一下阿里云模型服务灵积

A: 灵积是阿里云推出的一种机器学习模型服务,它提供了大量的机器学习和深度学习模型,可以帮助用户快速构建和部署高效的模型,从而提高业务效率和准确率。 灵积提供了多种模型服务,包括:

  1. 深度学习模型:灵积提供了多种深度学习模型,如卷积神经网络、循环神经网络、生成对抗网络等,这些模型可以用于图像识别、文本分析、自然语言处理等任务。
  2. 机器学习模型:灵积还提供了多种机器学习模型,如决策树、随机森林、支持向量机等,这些模型可以用于分类、回归、聚类等任务。
  3. 强化学习模型:灵积还支持使用强化学习技术来训练模型,这些模型可以用于游戏AI、自动驾驶等高复杂度任务。 灵积提供了模型训练、模型部署和模型管理等一系列功能,可以帮助用户快速构建和部署高效的模型。此外,灵积还提供了一系列的开发工具和API,可以方便用户进行模型开发和调试。

(以上回答出自通义千问)

简单的来讲,灵积平台就是一个可以让用户快速的部署一些通用的大模型,这里不需要用户购买GPU服务器,对于用户来讲,只需要根据token来支付费用。接下来开通试用一把。

开通使用

打开灵积控制台 https://dashscope.console.aliyun.com/overview ,首次进入由于没有开通服务,会进入引导开通服务页面。

https://yyxbloguse.oss-cn-beijing.aliyuncs.com/img/202309131024041.png

我们可以先点击“去体验” 来感受一下多种模型的生成能力,如通义千问,LLaMa2,ChatGLM, 百川等。

这里我们直接点击“去开通”链接,勾选服务协议,点击立即开通按钮。

https://yyxbloguse.oss-cn-beijing.aliyuncs.com/img/202309131027259.png

开通成功后再次回到灵积控制台,

https://yyxbloguse.oss-cn-beijing.aliyuncs.com/img/202309131031860.png

点击“去管理”进入管理API-KEY页面,在API-KEY管理页面,点击“创建新的API-KEY” 按钮创建apk-key,将会在弹框中显示key,将该key单独妥善保存,这个弹框关闭以后就不再显示key了,只能通过额外的认证才能获取到这个key。

申请模型体验

进入模型广场 https://dashscope.console.aliyun.com/model

本次我们将尝试使用LLama2和通义千问这两个模型的使用,在模型广场上找到这两个模型的卡片,点击申请体验链接。填写表单以后,等待审核通过即可。

https://yyxbloguse.oss-cn-beijing.aliyuncs.com/img/202309131131687.png

注意:模型广场内的模型不一定都有开放申请体验链接,大家可以随时关注一下模型广场。

通义千问模型调用

首先需要安装DashScope SDK, 使用 pip install dashscope 来安装DashScope Python SDK。 需要下载dashscope>=1.10.0版本。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: utf-8 -*-  
import dashscope  
from dashscope import Generation  
from http import HTTPStatus  
import json  
from dashscope.api_entities.dashscope_response import Message  

# 注释1
dashscope.api_key = "apikey"  
  
  
class QianWen:  
    def __init__(self):  
        self.gen = Generation()  

	# 注释2
    def call_once(self, prompt):  
        response = self.gen.call(  
            model=Generation.Models.qwen_v1,  
            prompt=prompt  
        )  
        if response.status_code == HTTPStatus.OK:  
            output = response.output  
            if output.finish_reason == "stop":  
                print(output.text)  
        else:  
            fail_info = json.dumps(response, indent=4, ensure_ascii=False)  
            print(f"模型处理失败,失败信息为: {fail_info}")  
	# 注释3
    def chat(self):  
        messages = []  
        while True:  
            user_input = input("请输入您的对话:")  
            if user_input == "stop":  
                print("结束对话")  
                break  
            if user_input == "clear":  
                messages = []  
                continue
            # 注释4  
            messages.append(Message(role="user", content=user_input))  
            response = self.gen.call(  
                model=Generation.Models.qwen_v1,  
                messages=messages  
            )  
            if response.status_code != HTTPStatus.OK:  
                print("请用接口出错")  
                break  
            else:
	            # 注释5  
                message = Message.from_conversation_response(response)  
                messages.append(message)  
                print(message.content)  
  
  
if __name__ == '__main__':  
    q = QianWen()  
    q.call_once("宫保鸡丁怎么做?")

代码解释:

1)在注释1处,需要替换自己的api_key。
2)在注释2处,定义一个方法call_once,这个方法一次只向AI发送一轮问答,不具有历史对话功能。
3)在注释3处,定义一个具有对话功能的chat方法,该方法是由一个死循环,获取用户的输入作为对话内容,dashscope.api_entities.dashscope_response.Message 类是消息类,这个类有两个属性,role 表示消息的类型,可以是system, user,assistant或者bot几种类型,content 为对话的内容。在调用Generation的call方法时通过messages参数传入对话消息列表,就可以实现AI聊天对话功能了。
4)在注释4处,将用户的输入保存到messages对话列表中。
5)在注释5处,将AI的返回转换为Message对话,并将该消息保存到messages对话列表中。

单轮对话

我们先看一下单轮对话的输出结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(venv)  python qianwen.py

宫保鸡丁是一道非常受欢迎的中式菜肴,通常用鸡肉、花生米、辣椒、蒜苗等材料烹制而成。下面是一份简单易学的宫保鸡丁做法:

所需材料:

- 鸡胸肉 200 克

- 干辣椒 10 克

- 花生米 50 克

- 姜蒜末 适量

- 料酒、生抽、糖、盐、鸡精、淀粉 适量

- 胡椒粉、香油 适量

  

步骤:

1. 将鸡胸肉切成小块,加入料酒、生抽、糖、盐、鸡精、淀粉拌匀,腌制10分钟。

2. 干辣椒去蒂去籽后切成小段,花生米炒香备用。

3. 热锅冷油,将腌制好的鸡肉煸炒至金黄色捞出备用。

4. 留少许底油,加入姜蒜末、干辣椒煸炒出香味。

5. 将炒好的鸡肉倒入锅中,翻炒均匀。

6. 加入炒香的花生米,翻炒均匀。

7. 最后加入少许胡椒粉、香油,翻炒均匀即可出锅。

  

注意事项:

-煸炒鸡肉时要注意不要煮过头,以免口感过于干燥。

- 干辣椒和花生米的炒制要注意火候,以免炒糊。

- 如需要,可以根据个人口味调整辣度。

可以看到通义千问返回的内容还可以,内容还是比较详细的。

多轮对话

接下来我们来看一下聊天对话功能,修改上面的代码,调用q.chat()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
请输入您的对话:你好,我叫kevin

你好,kevin。很高兴为你提供帮助。


请输入您的对话:北京有什么好吃的

北京有很多美味的食物,以下是一些值得一试的:

  1.烤鸭:北京烤鸭是北京最著名的美食之一,以其酥脆的皮肤和鲜美的肉质而闻名。可以在许多餐厅和旅游景点品尝到。

  2. 炖肘子:炖肘子是一道经典的北京菜,以其软糯的肉质和浓郁的香味而受到欢迎。

  3. 炸酱面:炸酱面是一道北京传统的面食,以其酸甜的炸酱和丰富的配料而受到喜爱。

  4. 豆汁:豆汁是一种非常受欢迎的北京小吃,以其甜中带酸的口感和独特的豆腥味而闻名。

  5. 炖蘑菇:炖蘑菇是一道北京菜,以其软糯的口感和鲜美的香味而受到欢迎。

当然,北京还有很多其他美味的食物,希望你能在旅途中找到自己喜欢的美食。

请输入您的对话:我叫什么

很抱歉,我无法回答这个问题。我是一个人工智能助手,无法知道你的个人信息。如果你想知道自己的名字,可以问其他人或者查看你的身份证明。

这就有点出乎我的意料了。。。

简单的三轮对话都不能理解吗?这我也不能理解了。

于是我尝试再次缩短聊天对话,两轮依然不能正确回答,我开始emo了,是不是我调用的方式不对?

我查看源码与文档,在dashscrop源码中有这样的定义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Generation(BaseApi):  
    task = 'text-generation'  
    """API for AI-Generated Content(AIGC) models.  
    """    
    class Models:  
        qwen_v1 = 'qwen-v1'  
        qwen_plus_v1 = 'qwen-plus-v1'  
        bailian_v1 = 'bailian-v1'  
        dolly_12b_v2 = 'dolly-12b-v2'  
        qwen_turbo = 'qwen-turbo'  
        qwen_plus = 'qwen-plus'

这里除了qwen-v1 还有个plus版本,我查看官方文档发现plus要贵10倍,本着贵即使好的原则,我尝试使用qwen-plus-v1这个模型测试一下,这次可以正常的回答我的名字了!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
请输入您的对话:你好,我叫kevin

你好,kevin。很高兴为你提供帮助。


请输入您的对话:北京有什么好吃的

北京有很多美味的食物,以下是一些值得一试的:

  1.烤鸭:北京烤鸭是北京最著名的美食之一,以其酥脆的皮肤和鲜美的肉质而闻名。可以在许多餐厅和旅游景点品尝到。
......(以下内容省略)

请输入您的对话:我叫什么

您的名字是kevin。

也不知道在调用qwen-v1时是我的姿势不对还是这个模型本身的问题?

有懂的同学可以帮忙解答一下!

  • 文章标题: 阿里通义千问是不是有点拉胯?
  • 本文作者: 杨彦星
  • 本文链接: https://www.yangyanxing.com/article/use-aliyun-for-qwen.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。