在树莓派5上调用通义千问API🚀
在实现了自建虚拟环境和安装自己要的包之后,打算用这个做一下大模型API的调用相关的工作,正好尝试一下在Linux系统上调用一下通义千问的API进行多轮对话和流式输出是什么效果,然后大模型专栏里也好久没更新了,这也是之前买树莓派的时候就规划的一篇文章了。
前置文章:调用阿里通义千问大语言模型API-小白新手教程-python
前置文章:树莓派5环境配置笔记 新建虚拟python环境—安装第三方库—配置Thonny解释器
系列文章1:树莓派初探—给树莓派5 安装Raspberry Pi OS 操作系统
系列文章2:使用VNC-viewer对树莓派5 远程连接桌面—详细记录笔记版
文章目录
1.给树莓派OS安装中文输入法
其实和Linux上安装输入法的步骤基本是一样的,也是安装谷歌的拼音输入法,我去了解一下好像大部分有换源什么的,我看了一下不用换源应该也行,首先是打开系统的命令窗口。首先输入下面的命令更新一下软件包,保证之后下载的所有文件都能是最新的。
sudo apt update
然后输入下面的命令安装fitcx中文输入法和输入法引擎
sudo apt install fcitx fcitx-pinyin fcitx-googlepinyin
安装完之后在系统里找Fcitx Configuration 配置。
点开之后进入如下界面,点击左下角的加号。
然后把这个只显示当前系统语言的对号勾掉。
在对话框里搜pinyin
选中Pinyin然后点OK
之后在这里出现了PInyin选项。
之后随便找一个可以输入的地方,安装Ctrl+空格,切换输入法,出现出现下面的提示则切换成功,就可以开始是用拼音打字了。如果没切换出来的话就重启一下
2.新建虚拟环境
之后需要在树莓派OS系统中安装一个镜像环境,在之前的博客中研究过,如果不建新的虚拟环境的话,是不能安装第三方库的,虚拟环境相关更详细的过程描述信息见如下文章,这里就简单说一下命令流程。
树莓派5环境配置笔记 新建虚拟python环境—安装第三方库—配置Thonny解释器
在终端中输入下面的代码新建一个叫llm的虚拟环境
python3 -m venv llm
然后输入下面的命令进入llm虚拟环境
source myenv/bin/activate
然后配置全局清华园
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
使用下面的命令看全局配置情况
pip config list
3.在虚拟环境中安装dashscope库(调用API使用)
pip install dashscope
4.获取通义千问的API Key
见下面文章的第二部分。
调用阿里通义千问大语言模型API-小白新手教程-python:https://chen-hao.blog.csdn.net/article/details/135868918
5.配置Tonny编译器使用的python解释器
这里请看下面文章的第四部分:
树莓派5环境配置笔记 新建虚拟python环境—安装第三方库—配置Thonny解释器https://blog.csdn.net/chrnhao/article/details/141256300
6.在树莓派上运行多轮对话流式输出代码
代码和相关介绍源自下面文章中的第八部分。
调用阿里通义千问大语言模型API-小白新手教程-python:https://chen-hao.blog.csdn.net/article/details/135868918
在运行程序之前我省略了将API-KEY配置为环境变量这部分,因为配置环境变量比较麻烦还需要修改文件,由于目前是测试阶段主要测试是程序能不能跑通所以我直接把API-KEY写在了代码里(图里打码了)。
将下面的代码粘入Tonny IDE 保存到一个文件夹中(我在桌面新建立了一个),然后运行,在下面的Shell部分进行提问交互。
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role
import dashscope
dashscope.api_key = "自己申请的API-KEY"
messages = []
while True:
message = input('user:')
# 将输入信息加入历史对话
messages.append({'role': Role.USER, 'content': message})
# 获得模型输出结果
response = Generation.call(Generation.Models.qwen_max, messages=messages, result_format='message')
print('system:' + response.output.choices[0]['message']['content'])
# 将输出信息加入历史对话
messages.append({'role': response.output.choices[0]['message']['role'],
'content': response.output.choices[0]['message']['content']})
好的在树莓派5上完美运行,这里懒了没放GIF动图,但是实际上推理的速度也还是很可以的!
结束
然后这篇写的就不如之前的很详细了,因为涉及到不少的基础知识,主要是了验证和记录一下这个方案的可行性,在Linux系统上也体验一下大语言模型的输出,以后要是做点比赛或毕设的话也都是不错的选,之后看看能不能直接1用树莓派部署一个1.8B离线模型运行一下试试。