这两天使用阿里的模型服务灵积平台,在上面开通了通义千问的使用权限,迫不及待的想要体验一下,但是结果似乎有点拉胯。。。且听我慢慢道来。
阿里云模型服务灵积简介
我也懒得写简介了,让通义千问说一下吧。。。
Q: 介绍一下阿里云模型服务灵积
A: 灵积是阿里云推出的一种机器学习模型服务,它提供了大量的机器学习和深度学习模型,可以帮助用户快速构建和部署高效的模型,从而提高业务效率和准确率。 灵积提供了多种模型服务,包括:
- 深度学习模型:灵积提供了多种深度学习模型,如卷积神经网络、循环神经网络、生成对抗网络等,这些模型可以用于图像识别、文本分析、自然语言处理等任务。
- 机器学习模型:灵积还提供了多种机器学习模型,如决策树、随机森林、支持向量机等,这些模型可以用于分类、回归、聚类等任务。
- 强化学习模型:灵积还支持使用强化学习技术来训练模型,这些模型可以用于游戏AI、自动驾驶等高复杂度任务。 灵积提供了模型训练、模型部署和模型管理等一系列功能,可以帮助用户快速构建和部署高效的模型。此外,灵积还提供了一系列的开发工具和API,可以方便用户进行模型开发和调试。
(以上回答出自通义千问)
简单的来讲,灵积平台就是一个可以让用户快速的部署一些通用的大模型,这里不需要用户购买GPU服务器,对于用户来讲,只需要根据token来支付费用。接下来开通试用一把。
开通使用
打开灵积控制台 dashscope.console.aliyun.com/overview ,首次进入由于没有开通服务,会进入引导开通服务页面。
我们可以先点击"去体验" 来感受一下多种模型的生成能力,如通义千问,LLaMa2,ChatGLM, 百川等。
这里我们直接点击"去开通"链接,勾选服务协议,点击立即开通按钮。
开通成功后再次回到灵积控制台,
点击"去管理"进入管理API-KEY页面,在API-KEY管理页面,点击"创建新的API-KEY" 按钮创建apk-key,将会在弹框中显示key,将该key单独妥善保存,这个弹框关闭以后就不再显示key了,只能通过额外的认证才能获取到这个key。
申请模型体验
进入模型广场 dashscope.console.aliyun.com/model
本次我们将尝试使用LLama2和通义千问这两个模型的使用,在模型广场上找到这两个模型的卡片,点击申请体验链接。填写表单以后,等待审核通过即可。
注意:模型广场内的模型不一定都有开放申请体验链接,大家可以随时关注一下模型广场。
通义千问模型调用
首先需要安装DashScope SDK, 使用 pip install dashscope
来安装DashScope Python SDK。 需要下载dashscope>=1.10.0版本。
python
# -*- 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对话列表中。
单轮对话
我们先看一下单轮对话的输出结果:
markdown
(venv) python qianwen.py
宫保鸡丁是一道非常受欢迎的中式菜肴,通常用鸡肉、花生米、辣椒、蒜苗等材料烹制而成。下面是一份简单易学的宫保鸡丁做法:
所需材料:
- 鸡胸肉 200 克
- 干辣椒 10 克
- 花生米 50 克
- 姜蒜末 适量
- 料酒、生抽、糖、盐、鸡精、淀粉 适量
- 胡椒粉、香油 适量
步骤:
1. 将鸡胸肉切成小块,加入料酒、生抽、糖、盐、鸡精、淀粉拌匀,腌制10分钟。
2. 干辣椒去蒂去籽后切成小段,花生米炒香备用。
3. 热锅冷油,将腌制好的鸡肉煸炒至金黄色捞出备用。
4. 留少许底油,加入姜蒜末、干辣椒煸炒出香味。
5. 将炒好的鸡肉倒入锅中,翻炒均匀。
6. 加入炒香的花生米,翻炒均匀。
7. 最后加入少许胡椒粉、香油,翻炒均匀即可出锅。
注意事项:
-煸炒鸡肉时要注意不要煮过头,以免口感过于干燥。
- 干辣椒和花生米的炒制要注意火候,以免炒糊。
- 如需要,可以根据个人口味调整辣度。
可以看到通义千问返回的内容还可以,内容还是比较详细的。
多轮对话
接下来我们来看一下聊天对话功能,修改上面的代码,调用q.chat()
请输入您的对话:你好,我叫kevin
你好,kevin。很高兴为你提供帮助。
请输入您的对话:北京有什么好吃的
北京有很多美味的食物,以下是一些值得一试的:
1.烤鸭:北京烤鸭是北京最著名的美食之一,以其酥脆的皮肤和鲜美的肉质而闻名。可以在许多餐厅和旅游景点品尝到。
2. 炖肘子:炖肘子是一道经典的北京菜,以其软糯的肉质和浓郁的香味而受到欢迎。
3. 炸酱面:炸酱面是一道北京传统的面食,以其酸甜的炸酱和丰富的配料而受到喜爱。
4. 豆汁:豆汁是一种非常受欢迎的北京小吃,以其甜中带酸的口感和独特的豆腥味而闻名。
5. 炖蘑菇:炖蘑菇是一道北京菜,以其软糯的口感和鲜美的香味而受到欢迎。
当然,北京还有很多其他美味的食物,希望你能在旅途中找到自己喜欢的美食。
请输入您的对话:我叫什么
很抱歉,我无法回答这个问题。我是一个人工智能助手,无法知道你的个人信息。如果你想知道自己的名字,可以问其他人或者查看你的身份证明。
这就有点出乎我的意料了。。。
简单的三轮对话都不能理解吗?这我也不能理解了。
于是我尝试再次缩短聊天对话,两轮依然不能正确回答,我开始emo了,是不是我调用的方式不对?
我查看源码与文档,在dashscrop源码中有这样的定义
python
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这个模型测试一下,这次可以正常的回答我的名字了!
text
请输入您的对话:你好,我叫kevin
你好,kevin。很高兴为你提供帮助。
请输入您的对话:北京有什么好吃的
北京有很多美味的食物,以下是一些值得一试的:
1.烤鸭:北京烤鸭是北京最著名的美食之一,以其酥脆的皮肤和鲜美的肉质而闻名。可以在许多餐厅和旅游景点品尝到。
......(以下内容省略)
请输入您的对话:我叫什么
您的名字是kevin。
也不知道在调用qwen-v1时是我的姿势不对还是这个模型本身的问题?
有懂的同学可以帮忙解答一下!
记录一下时间,今天是2023年9月14号,没准明天阿里的qwen-v1就好了!