使用Python免费调用通义千问大模型
·
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 HTTPStatus
import dashscope
from dashscope.api_entities.dashscope_response import Role
dashscope.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 set
result_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
更多推荐
已为社区贡献3条内容
所有评论(0)