在这个快节奏的数字时代
深度学习技术正逐渐成为大家的热门话题
如果你也是一名程序员或者科研工作者
那么你一定听说过GPT模型
是一种非常流行的自然语言处理模型
各大平台都已经接入了ChatGpt模型
将其应用各行对应的领域
下面介绍如何在Matlab中使用API调用chtgpt模型
以及用MATLAB的APP程序设计桌面应用
(由于目前Open AI公布生成的API需要访问其模型服务器,所以在整个调用模型过程中需要连接上ta才会有回应)
直接放.m文件的源码(感兴趣的自行试验)
%连接互联网
import matlab.net.*
import matlab.net.http.*
%提问文本输入
umesges =input('我:','s');
mesges = [struct('role',"system",'content',"You are a helpful assistant.");
struct('role',"user",'content',umesges)];
apiurl = "https://api.openai.com/v1/chat/completions"; %API填写进入的网址
apikey = "***"; %引号中放API码,需要注册open ai账号获取
% 定义请求消息
querymsg = struct('model',"gpt-3.5-turbo",...'messages',mesges, ...'max_tokens',1000,...'temperature',0.75);
% 请求头
headers = HeaderField('Content-Type', 'application/json',...'Authorization', "Bearer " + apikey);
% 请求消息
request = RequestMessage('post',headers,querymsg);
response = send(request, URI(apiurl));
% 消息获取处理并显示
if response.StatusCode == "OK" %判断是否获取回答成功responseText = response.Body.Data.choices(1).message; %从响应体中获取第一个选择项的消息内容,并将其赋值给变量 responseTextresponseText = string(responseText.content); %将 responseText 转换为字符串类型responseText = strtrim(responseText); %移除wrapped_s开头和结尾的空格和换行符str=['chatgpt: ',num2str(responseText)];disp(str) %在命令窗口显示回答
elseresponseText = "Error "; %将字符串 "Error " 赋值给变量 responseTextresponseText = responseText + response.StatusCode + newline; %将响应状态码和一个换行符添加到 responseText 的结尾responseText = responseText + response.StatusLine.ReasonPhrase; %将响应状态行的原因短语添加到 responseText 的结尾disp(str) %在命令窗口显示回答
end
以下是测试结果
↓↓↓↓↓↓
问:基于遗传算法优化bp神经网络预测城市公交系统车站客流量
答:为了优化城市公交系统的车站客流量预测,可以采用遗传算法和BP神经网络相结合的方法。具体步骤如下:
1. 数据采集和处理:收集城市公交系统车站客流量的历史数据,对数据进行预处理,包括数据清洗、缺失值填充、异常值处理等。
2. 特征提取:从收集到的历史数据中提取相关的特征,包括时间特征、天气特征、节假日等特征。
3. 数据划分:将数据划分为训练集和测试集,通常采用70%的数据作为训练集,30%的数据作为测试集。
4. 遗传算法优化:通过遗传算法对BP神经网络进行优化,包括优化网络结构、学习率、动量因子等参数,以提高神经网络的预测性能。
5. BP神经网络训练:使用划分的训练集对BP神经网络进行训练,调整网络权重和偏置,使得网络对车站客流量的预测误差最小化。
6. 模型评估:使用划分的测试集对训练好的模型进行评估,计算预测误差、准确率、召回率等指标,评估模型的预测性能。
7. 模型应用:将训练好的模型应用于实际的城市公交系统中,对车站客流量进行实时预测,并根据预测结果调整公交车的发车时间和行驶路线,优化公交系统的运行效率。
以上是基于遗传算法优化的BP神经网络预测城市公交系统车站客流量的一般流程,具体实现还需要根据实际情况进行调整和优化。
效果很好
和open ai官方网页版的基本相同
接下来,说下Matlab的APP Design设计ChatGPT的桌面应用版
打开Matlab的APP设计
打开后选择空白App
(小白可以学习官方学习文档)
拖动左边模块到右边白布上
(点击后可以任意调整大小,右侧可修改其中的文字、背景颜色及大小等)
然后,赋予push按钮执行的命令
添加Buttonpushed回调
会进入到代码视图
在Buttonpushed回调函数中写入要执行的命令代码
function ButtonPushed(app, event)
import matlab.net.*
import matlab.net.http.*
str1=['我:',app.EditField.Value];
umesges =str1;
app.TextArea.Value=[app.TextArea.Value;umesges];
mesges = [struct('role',"system", ...'content',"You are a helpful assistant."); struct('role',"user",'content',umesges)];
apiurl = "https://api.openai.com/v1/chat/completions";
apikey = "***"; %引号中输入你的API
% 定义请求消息
querymsg = struct('model',"gpt-3.5-turbo",...'messages',mesges, ...'max_tokens',1000,...'temperature',0.75);
% 请求头
headers = HeaderField('Content-Type', 'application/json',...'Authorization', "Bearer " + apikey);
% 请求消息
request = RequestMessage('post',headers,querymsg);
response = send(request, URI(apiurl));
% 消息获取处理并显示
if response.StatusCode == "OK"responseText = response.Body.Data.choices(1).message; %从响应体中获取第一个选择项的消息内容,并将其赋值给变量 responseTextresponseText = string(responseText.content); %将 responseText 转换为字符串类型responseText = strtrim(responseText); %移除wrapped_s开头和结尾的空格和换行符str=['chatgpt: ',num2str(responseText)];% 获取UITextArea组件的句柄textAreaHandle = app.TextArea;% 获取当前已经显示的文本currentText = textAreaHandle.Value;% 追加新文本newText = str;tit=[currentText;newText];updatedText = tit;% 将新文本设置为UITextArea组件的值textAreaHandle.Value = updatedText;
elseresponseText = "Error "; %将字符串 "Error " 赋值给变量 responseTextresponseText = responseText + response.StatusCode + newline; %将响应状态码和一个换行符添加到 responseText 的结尾responseText = responseText + response.StatusLine.ReasonPhrase; %将响应状态行的原因短语添加到 responseText 的结尾app.TextArea.Value=responseText;
end
end
将文本的输入和输出
分别赋予到提问文本框和显示回答的文本框中
完成好后可以点击运行测试下
测试没问题后对设计好的APP进行封包处理
选择自己想要的封包结果形式
有MATLAB内部APP版、网页版、桌面应用程序版
该图为封包为桌面应用程序版的效果
唯一的好处就是
不用和其他人抢
用API调用的ChatGPT模型不会卡顿
也不需要登录
打开后直接提问题
当然熟练程序设计的还可以进行更多的优化
Matlab目前的app designer
可能在做的就是将算法仿真代码程序工具化
功能没有专业的程序设计软件齐全
但对于非计算机专业的工科人来说足矣