Qwen-72b开源模型
模型的主要用途是预测或描述一个系统或现象的行为模式。它可以帮助人们更好地理解这个系统或现象,例如预测股市变化、天气预报、地震预警、交通流量等。模型也常用于设计和优化产品和工艺。在科学研究中,模型也是一种方法,用于测试和验证理论。总之,模型是一个用于描述和预测现实世界的简化表示。
最近,阿里云的通义千问Qwen-72b大模型宣布开源了!现可以在魔撘社区(点击跳转)免费体验,也可通过官方限时免费开放的api使用。本文就将讲解如何使用官方api
前提条件
1.需要注册阿里云(点我跳转)账号
注册
2.开通DashScope(点我跳转)并创建API-KEY
创建后点击API-KEY管理
创建新的API_KEY(一定记住且不要随意给别人)
搭建Python(3.7及以上版本)环境并安装DashScope SDK
搭建Python环境这里忽略,搭建好环境后安装
pip install dashscope
使用dashscope调用api
设置API-KEY
设置API_KET的方法有很多种,这里只讲python代码中添加
import random
from http import HTTPStatusimport dashscope
from dashscope.api_entities.dashscope_response import Roledashscope.api_key = "你的api-key"
messages参数讲解(配合下文使用)
# 需要导入from dashscope.api_entities.dashscope_response import Role
{"role": Role.USER, # 此处是 'user',代表着用户"content": "content" # 此处用户输入的内容
}{"role": Role.SYSTEM # 此处是 'system',代表着是此次对话的标题(用过chatgpt的应该了解)"content": "content" # 此处是对话的第一句话也是标题。
}{"role": Role.ASSISTANT # 此处是 'assistant',代表着机器人(api)"content": "content" # 机器人的输出
}# 这些都用一个列表存储在一起
# 因此,我们可以通过这种方式存储对话的缓存,也可以自定义对话内容。
简单调用
def call_with_messages(content: str):messages = [{'role': 'user', 'content': content}]response = dashscope.Generation.call('qwen-72b-chat', # 采用模型messages=messages, # 信息列表result_format='message', # 设置格式为message)if response.status_code == HTTPStatus.OK:return 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))while True:content = input("user>")print(call_with_messages(content))
这就是最简单的调用,但是没有缓存缓存记录。
缓存调用
def multi_round_conversation(content: str):messages = [{'role': Role.SYSTEM, 'content': '我是谁'},{'role': Role.USER, 'content': '我是PYmili,你记住了!'},{'role': Role.ASSISTANT, 'content': '好的,我记住了!'}]response = dashscope.Generation.call('qwen-72b-chat',messages=messages,# 设置一个种子,并不是必要参数seed=random.randint(1, 10000),result_format='message',)if response.status_code == HTTPStatus.OK:print(response)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': content})response = dashscope.Generation.call('qwen-72b-chat',messages=messages,result_format='message')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))print(messages)
messages中将存放所有对话缓存。
流式调用
def call_stream_with_messages():messages = [{'role': 'user', 'content': '用c语言写一个插入算法。'}]responses = dashscope.Generation.call('qwen-72b-chat',messages=messages,seed=random.randint(1, 10000), # set the random seed, optional, default to 1234 if not setresult_format='message', # set the result to be "message" format.stream=True,output_in_full=True # get streaming output incrementally)full_content = ''for response in responses:if response.status_code == HTTPStatus.OK:full_content += response.output.choices[0]['message']['content']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))print('Full content: \n' + full_content)
这样将会对于机器人输出长字符串,很好的优化。就可以实现机器人在打字的效果。
官方文档
更详细的内容可以到官网文档(点我跳转)看看
结束语
好的,这就是本篇文章内容,有问题的话,可以联系我:Q群 706128290