本文主要内容:
1、用最少的代码写个 AI 桌面聊天软件。
2、调用简洁易用的 ChatUI 实现前端界面。
3、自动部署一切,检测到没有 Ollama 自动下载安装,输入未安装的大模型名自动下载安装 —— 实时显示下载进度。
4、一键生成独立 EXE 文件,打包后仅 700 KB。
如果有代理可以开一下,首次下载 Ollama 与模型会快一些。后面使用的时候就不需要了。
打开只有几 MB 的极简开发工具 aardio ,新建工程。在 main.aardio 中输入下面的代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="Ollama 桌面助理";right=644;bottom=556)
winform.add(
cmbModels={cls="combobox";left=171;top=520;right=336;bottom=546;db=1;dl=1;edge=1;items={};mode="dropdown";z=2};
custom={cls="custom";text="自定义控件";left=3;top=3;right=638;bottom=504;db=1;dl=1;dr=1;dt=1;z=1};
goLibrary={cls="syslink";text='<a href="https://ollama.com/library?sort=popular">搜索大模型</a>';left=369;top=523;right=471;bottom=541;color=16729600;db=1;dl=1;dr=1;notify=1;z=4};
static={cls="static";text="请输入或选择模型名称:";left=9;top=520;right=166;bottom=546;align="right";db=1;dl=1;transparent=1;z=3}
)
/*}}*/
//导入浏览器控件
import web.view;
var wb = web.view(winform.custom);
//几句代码创建 Ollama 接口,不需要额外封装库
import web.rest.jsonClient;
var client = web.rest.jsonClient();
var ollama = client.api("http://localhost:11434/api/")
//创建聊天上下文
import web.simpleChatUi.messages;
var messages = web.simpleChatUi.messages();
//添加消息
messages.push(
//system 角色用来写系统指令提示
role = "system";
content = "你是 Ollama 智能助理,用户的贴心小助手~。现在的时间是 " + tostring(time()) + "。"
)
//导出网页 JavaScript 可以调用的接口
wb.external = {};
wb.external.sendMessage = function(id,prompt){
//启动时 ChatUI 会发一个空消息
if(!id){
//第一次显示欢迎消息
return chatUi.emit(
content = '主人好,我是 Ollama 智能助理,您的贴心小助手~';
);
}
//加入到聊天上下文
messages.push(
role = "user";
content = prompt;
)
//非阻塞异步调用,让 JavaScript 调用先返回 wb.setTimeout(
function(){
//记录应答消息
var content = "";
//发送聊天请求
var ok,err = ollama.chat({
model = winform.cmbModels.text;
options = {
temperature = 0.7;//模型选项
}
messages = messages;
},function(result){
//流式响应,每次应答一个字
content = content ++ result.message.content;
//逐字发送聊天消息到界面,实现打字效果 chatUi.emit({
id = id;
content = content
})
} )
if(ok){
//加入到聊天记录
messages.push(
role = "assistant";
content = string.trim(content);
)
}
else{
//如果模型不存在
if(string.indexOf(err,`try pulling it first`)){
//下载模型
var ok,err = ollama.pull({
model = winform.cmbModels.text;
},function(result){
//出错了,显示错误信息
if( result.error ){
chatUi.emit({
id = id;
content = result.error
})
return;
}
//显示模型下载进度 if(result.completed) {
chatUi.emit({
id = id;
content = "正在下载模型:" + ..math.round((result.completed / result.total) * 100) + "% " + ..math.size64(result.completed).format()
})
}
elseif( result.status ){
//显示下载状态
chatUi.emit({
id = id;
content = result.status
})
//下载完成
if(result.status == "success"){
wb.external.sendMessage(id,prompt);
return;
}
}
} )
//下载成功
if(ok) return ;
}
//显示错误信息
chatUi.emit({
id = id;
content = client.lastResponseError("error"):err;
})
}
}
);
};
//加载 ChatUI 前端界面
import web.simpleChatUi;
chatUi = web.simpleChatUi(wb);
chatUi.avatar = 'https://gw.alicdn.com/tfs/TB1DYHLwMHqK1RjSZFEXXcGMXXa-56-62.svg';
//列出已安装的大模型
var ret = ollama.tags.get();
winform.cmbModels.items = table.map(ret.models,lambda(v) v.name )
winform.cmbModels.selIndex = 1;
//搜索在线大模型
import process;
winform.goLibrary.onHyperlinkClick = function(nmSysLink,url,id){
process.openUrl(url) //打开超链接 }
winform.show();
win.loopMessage();
点击『保存 』按钮:
然后按『运行 F5 』按钮,就可以自动配置好并启动程序。
运行效果如下:
按 F7 发布为 EXE 文件。就这么简单没有其他复杂的内容。
下面我们写个更简单控制台版本,代码如下:
import console;
console.setTitle("聊天助手")
//创建 Ollama 客户端
import web.rest.jsonClient;
var client = web.rest.jsonClient();
var ollama = client.api("http://localhost:11434/api/")
//循环读取用户输入问题
while(
var str = console.getText( "请输入:" )
) {
//调用 Ollama 聊天接口
var ok,err = ollama.chat({
//选择模型,这里选择千问0.5b
model = "qwen:0.5b";
//这是聊天消息队列(可用于保存上下文)
messages = {
{
//system 角色用来写系统指令提示
role = "system";
content = "你是 Ollama 智能助理,用户的贴心小助手~。现在的时间是 " + tostring(time()) + "。"
};
{
//user 角色代表用户
role = "user";
content = str
};
}
},function(result){
//这个 API 是流式输出。
console.writeText(result.message.content)
} )
//如果出错,输出错误信息
if(!ok){
console.log( client.lastResponseError("error") || err )
}
}
console.pause(true);
system 角色用来写系统指令提示。
user 角色代表用户。
assistant 角色表示 AI 模型。
这 3 个角色来回发送的所有消息,一问一答都要记录在 messages 队列中,每次请求都作为聊天上下文发送过去。
看一下运行效果:
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。