当前位置:   article > 正文

使用Python免费调用通义千问大模型_python调用通义千问

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代码中添加

  1. import random
  2. from http import HTTPStatus
  3. import dashscope
  4. from dashscope.api_entities.dashscope_response import Role
  5. dashscope.api_key = "你的api-key"

messages参数讲解(配合下文使用)

  1. # 需要导入from dashscope.api_entities.dashscope_response import Role
  2. {
  3. "role": Role.USER, # 此处是 'user',代表着用户
  4. "content": "content" # 此处用户输入的内容
  5. }
  6. {
  7. "role": Role.SYSTEM # 此处是 'system',代表着是此次对话的标题(用过chatgpt的应该了解)
  8. "content": "content" # 此处是对话的第一句话也是标题。
  9. }
  10. {
  11. "role": Role.ASSISTANT # 此处是 'assistant',代表着机器人(api)
  12. "content": "content" # 机器人的输出
  13. }
  14. # 这些都用一个列表存储在一起
  15. # 因此,我们可以通过这种方式存储对话的缓存,也可以自定义对话内容。

简单调用

  1. def call_with_messages(content: str):
  2. messages = [
  3. {'role': 'user', 'content': content}]
  4. response = dashscope.Generation.call(
  5. 'qwen-72b-chat', # 采用模型
  6. messages=messages, # 信息列表
  7. result_format='message', # 设置格式为message
  8. )
  9. if response.status_code == HTTPStatus.OK:
  10. return response.output.choices[0]['message']['content']
  11. else:
  12. print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
  13. response.request_id, response.status_code,
  14. response.code, response.message
  15. ))
  16. while True:
  17. content = input("user>")
  18. print(call_with_messages(content))

这就是最简单的调用,但是没有缓存缓存记录。

缓存调用

  1. def multi_round_conversation(content: str):
  2. messages = [
  3. {'role': Role.SYSTEM, 'content': '我是谁'},
  4. {'role': Role.USER, 'content': '我是PYmili,你记住了!'},
  5. {'role': Role.ASSISTANT, 'content': '好的,我记住了!'}
  6. ]
  7. response = dashscope.Generation.call(
  8. 'qwen-72b-chat',
  9. messages=messages,
  10. # 设置一个种子,并不是必要参数
  11. seed=random.randint(1, 10000),
  12. result_format='message',
  13. )
  14. if response.status_code == HTTPStatus.OK:
  15. print(response)
  16. messages.append(
  17. {
  18. 'role': response.output.choices[0]['message']['role'],
  19. 'content': response.output.choices[0]['message']['content']
  20. }
  21. )
  22. else:
  23. print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
  24. response.request_id, response.status_code,
  25. response.code, response.message
  26. ))
  27. messages.append({'role': Role.USER, 'content': content})
  28. response = dashscope.Generation.call(
  29. 'qwen-72b-chat',
  30. messages=messages,
  31. result_format='message'
  32. )
  33. if response.status_code == HTTPStatus.OK:
  34. print(response)
  35. else:
  36. print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
  37. response.request_id, response.status_code,
  38. response.code, response.message
  39. ))
  40. print(messages)

messages中将存放所有对话缓存。

流式调用

  1. def call_stream_with_messages():
  2. messages = [
  3. {'role': 'user', 'content': '用c语言写一个插入算法。'}
  4. ]
  5. responses = dashscope.Generation.call(
  6. 'qwen-72b-chat',
  7. messages=messages,
  8. seed=random.randint(1, 10000), # set the random seed, optional, default to 1234 if not set
  9. result_format='message', # set the result to be "message" format.
  10. stream=True,
  11. output_in_full=True # get streaming output incrementally
  12. )
  13. full_content = ''
  14. for response in responses:
  15. if response.status_code == HTTPStatus.OK:
  16. full_content += response.output.choices[0]['message']['content']
  17. print(response)
  18. else:
  19. print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
  20. response.request_id, response.status_code,
  21. response.code, response.message
  22. ))
  23. print('Full content: \n' + full_content)

这样将会对于机器人输出长字符串,很好的优化。就可以实现机器人在打字的效果。


官方文档

更详细的内容可以到官网文档(点我跳转)看看 


结束语

好的,这就是本篇文章内容,有问题的话,可以联系我:Q群 706128290

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/150064
推荐阅读
相关标签
  

闽ICP备14008679号