阿里大语言模型通义千问API使用新手教程
最近需要用到大模型,了解到目前国产大模型中,阿里的通义千问有比较详细的SDK文档可进行二次开发,目前通义千问的API文档其实是可以进行精简然后学习的,也就是说,是可以通过简单的API调用在自己网页或者软件中接入一个大语言模型,但是似乎并没有人愿意花费时间经历写一个新手友好的教程,为此处于对知识的梳理,和对技术的热爱,我尽我的最大的努力来做这件事,如果帮到了各位同学,或者老师们,可以点赞或者关注支持一下,后续更新基于本地知识库的详细教程。如果有什么写的不对的或者可以补充完善的,欢迎交流。
系列文章:
1.调用阿里通义千问大语言模型API-小白新手教程-python
2.LangChain结合通义千问的自建知识库
3.使用LangChain结合通义千问API基于自建知识库的多轮对话和流式输出
4.解决LangChain构建知识向量库的过程中官方API无法自定义文本切割方式的问题-例如按行切分
5.通义千问本地部署教程Qwen-7B-Chat Qwen1.5-1.8B Windows-详细认真版
- 对于有基础的开发技术人员请直接根据目录跳到代码部分综合查看官方文档和代码即可
- 对于想充实自己毕业设计或者软件但对自然语言处理技术并不是非常了解的同学,把每一个代码运行一遍即可,切记不要纠结专业术语
- 如果是做相关应用的研究生,请按顺序阅读,思考数据格式,有助于思维的培养
1.通义千问模型介绍
通义千问是阿里云开发的大语言模型(Large language Model )LLM,旨在提供广泛的知识和普适性,可以理解和回答各领域中的问题,其包含网页版和手机版本的通义前文APP,网页使用的模型为不公开的最新版本。
其网页使用版本地址:https://tongyi.aliyun.com/qianwen/
官网文档地址:https://help.aliyun.com/zh/dashscope/developer-reference/
在其官方文档中主要开源了五种可以使用的模型其开源模型的简介和参数如下:
2024.4.26 更新 模型的API-KEY收费了
我之前用的Max 然后用着用着账户就欠费了 ,然后整个账户的API-Key就都不能用了,后来在控制台部分消息,和手机短信发现是有短信提示,但是我一直没注意,没想到这个事情,大家之前用免费KEY的要注意一下
(旧)
非限时免费开放模型,有使用Token数量的限制
2.通义千问API-KEY申请
官方流程网址指导:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key
其主要流程如下,具体请参考官网步骤
- 开通DashScope灵积模型服务
- 创建API-KEY
根据官网流程获得一个API-Key
3.安装DashScope SDK
DashScope 目前支持Python 和 Java 的 SDK
安装SDK的官网教程网址:https://help.aliyun.com/zh/dashscope/developer-reference/install-dashscope-sdk
这里介绍python的安装
- 安装环境 Python 3.8 及以上版本
执行以下命令安装SDK,亲测支持清华园镜像安装
pip install dashscope
更新DashDcope SDK包 请执行以下命令
pip install dashscope --upgrade
4.API-KEY设置
API-KEY设置地址官方文档网址:https://help.aliyun.com/zh/dashscope/developer-reference/api-key-settings
4.1 方式1 可以直接在命令台设置环境变量
Linux/maxOS
export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
4.2 方式2 在系统环境变量里直接设置
4.3 方式3 通过代码设置
python设置API-KEY代码如下
import dashscope
dashscope.api_key="YOUR_DASHSCOPE_API_KEY"
4.4 方式经验总结
其中官方推荐使用4.1的方式不推荐将API-KEY直接写在代码中,会有一定的API-KEY暴露风险,实际应用中,配置的环境变量有时会出现读取不到的情况,此时将API-KEY写在代码中可以使程序正常运行。
5. 使用通义千问API进行Token切分
使用通义千问对Token进行切分官方文档网址:https://help.aliyun.com/zh/dashscope/developer-reference/token-api
精简版如下:
import dashscope
# 如果环境变量配置无效请启用以下代码
# dashscope.api_key = 'YOUR_DASHSCOPE_API_KEY'
# respose获得的为
response = dashscope.Tokenization.call(model='qwen-turbo',messages=[{
'role': 'user', 'content': '你好?'}])
print(response)
# {"status_code": 200, "request_id": "6d53e094-e8bc-9d88-a84a-6085c9425ad8", "code": "", "message": "", "output": {"token_ids": [108386, 11319], "tokens": ["你好", "?"]}, "usage": {"input_tokens": 2}}
消息格式为一个列表,
role
为当前角色设置为user则模拟为用户的真实输入,content
后面为要切分tokens的句子
messages=[{'role': 'user', 'content': '你好?'}]
- 可能会出现的错误1:系统配置了环境变量但是依然读取不到,错误中包含not find API 相关错误请启用以下代码
dashscope.api_key = 'YOUR_DASHSCOPE_API_KEY'
- 可能会出现的错误2: 错误中出现Http相关字样,其主要可能原因是网络问题,请检查网络状态是否断网或者是是国内地址
官方代码对出现Http错误的情况进行了判断,官方代码如下
from http import HTTPStatus
import dashscope
def tokenizer():
response = dashscope.Tokenization.call(model='qwen-turbo',
messages=[{
'role': 'user', 'content': '你好?'}],
)
if response.status_code == HTTPStatus.OK:
print('Result is: %s' % response)
else:
print('Failed request_id: %s, status_code: %s, code: %s, message:%s' %
(response.request_id, response.status_code, response.code,
response.message))
if __name__ == '__main__':
tokenizer()
6. 使用通义千问的API进行对话
使用通义千问进行对话API官方文档网址:https://help.aliyun.com/zh/dashscope/developer-reference/quick-start
下面是对其中主要内容的
6.1 通过messages 进行对话 开发推荐
精简版版代码如下,参数介绍在代码后:
import dashscope
# 如果环境变量配置无效请启用以下代码
# dashscope.api_key = 'YOUR_DASHSCOPE_API_KEY'
messages = [{
'role': 'user', 'content': '如何做炒西红柿鸡蛋