【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1,视频地址

https://www.bilibili.com/video/BV1GJ4m1Y7Aj/

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

使用国内代理进行加速

配置rust环境方法

https://rsproxy.cn/

特别注意要配置好:

步骤三:设置 crates.io 镜像, 修改配置 ~/.cargo/config,已支持git协议和sparse协议,>=1.68 版本建议使用 sparse-index,速度更快。

[source.crates-io]
replace-with = 'rsproxy-sparse'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
[net]
git-fetch-with-cli = true

2,然后开始编写 http 服务

整合 tauri 代码和 actix-web,入门文档:
https://juejin.cn/post/7342858918161793059

参考文章:

https://blog.moonguard.dev/setting-up-actix-in-tauri

主要就是:

fn main() {tauri::Builder::default().setup(|app| {let handle = app.handle();let boxed_handle = Box::new(handle);thread::spawn(move || {server::init(*boxed_handle).unwrap();});Ok(())}).invoke_handler(tauri::generate_handler![greet]).run(tauri::generate_context!()).expect("error while running tauri application");
}

实现了 server::init

然后增加 controller :

#[post("/api/session")]
pub async fn session_handle() -> actix_web::Result<String> {let text = "{\"status\":\"Success\", \"message\":\"\", \"data\": {\"auth\": false, \"model\":\"chatglm3\"}}";println!("{}",text);Ok(text.to_string())
}

这样就可以登陆成功了:

在这里插入图片描述

3,接下来就是实现 chat 聊天接口了

需要返回标准的 openai api 接口了。

4,解决跨域问题

https://docs.rs/actix-cors/latest/actix_cors/

使用 actix-cors 进行跨域处理:

use actix_cors::Cors;
use actix_web::{get, http, web, App, HttpRequest, HttpResponse, HttpServer};#[get("/index.html")]
async fn index(req: HttpRequest) -> &'static str {"<p>Hello World!</p>"
}#[actix_web::main]
async fn main() -> std::io::Result<()> {HttpServer::new(|| {let cors = Cors::default().allowed_origin("https://www.rust-lang.org").allowed_origin_fn(|origin, _req_head| {origin.as_bytes().ends_with(b".rust-lang.org")}).allowed_methods(vec!["GET", "POST"]).allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT]).allowed_header(http::header::CONTENT_TYPE).max_age(3600);App::new().wrap(cors).service(index)}).bind(("127.0.0.1", 8080))?.run().await;Ok(())
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考笔记--软件可靠性评价

一.软件可靠性评价概述 软件可靠性评价是软件可靠性活动的重要组成部分&#xff0c;即适用于软件开发过程&#xff0c;也可以针对最终软件系统。在软件开发过程中使用软件可靠性评价&#xff0c;可以使用软件可靠性模型&#xff0c;估计软件当前的可靠性&#xff0c;以确认是否…

6-DOF GraspNet: Variational Grasp Generation for Object Manipulation

总结&#xff1a; 使用变分自动编码器(VAE)对抓取进行采样&#xff0c;并使用基于点网的抓取评估器模型对采样的抓取进行评估和细化 摘要&#xff1a; 我们将抓取生成问题表述为 使用变分自编码器对一组抓取进行采样&#xff0c;并使用抓取评 估器模型对采样的抓取进行评估和…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识&#xff1f;如何激发小学生古诗词的学习兴趣&#xff1f;如何提高小学古诗词的学习成绩&#xff1f;如何备考2024年小学生古诗文大会&#xff1f;...如果你也在关心和这些问题&#xff0c;我的建议是参加每年一度的小学生古诗词大会&#xff08;免费…

亚马逊跨境电商名词解释

亚马逊界面名词解释 最常用的名词解释总结&#xff1a; ASIN&#xff1a;亚马逊标准标识号,也就是每个商品的编码标识,每个商品的都不同&#xff0c;可以把它当成该商品的“身份证号”。由亚马逊随机生成的字母数字组合。 SKU&#xff1a;库存进出计量单位。 Listing&#xf…

太强了!最全的大模型检索增强生成(RAG)技术概览!

本文是对检索增强生成&#xff08;Retrieval Augmented Generation, RAG&#xff09;技术和算法的全面研究&#xff0c;对各种方法进行了系统性的梳理。文章中还包含了我知识库中提到的各种实现和研究的链接集合。 鉴于本文的目标是对现有的RAG算法和技术进行概览和解释&#…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…

做跨境电商,选哪个浏览器好?跨境电商浏览器推荐

在我们的日常生活中&#xff0c;有很多浏览器可供选择&#xff0c;比如百度浏览器、谷歌浏览器和360、火狐等等。但是在跨境电商行业中&#xff0c;是否有特别适合我们卖家使用的浏览器呢&#xff1f;所谓跨境电商浏览器&#xff0c;就是为跨境电商用户设计的浏览器&#xff0c…

Unity 采用自定义通道ShaderGraph实现FullScreen的窗户雨滴效果

效果如下 ShaderGraph实现 N21 随机化 DragLayer分层 将DragLayer分成四层&#xff0c;分别调整每层的缩放和大小 Shader实现的链接&#xff08;Unity 雨水滴到屏幕效果&#xff09; 我也是参考这个实现Shader Graph

【PythonCode】力扣Leetcode1~5题Python版

【PythonCode】力扣Leetcode1~5题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C、…

微信小程序-侧滑删除

简介 movable-view和movable-area是可移动的视图容器&#xff0c;在页面中可以拖拽滑动。 本篇文章将会通过该容器实现一个常用的拖拽按钮功能。 使用效果 代码实现 side-view.wtml 布局见下面代码&#xff0c;left view为内容区域&#xff0c;right view为操作按钮&a…

ORACLE无法OPEN,处理三板斧

mount下先查询数据文件头的检查点是否一致 查询 v$datafile_header &#xff0c;CHECKPOINT_CHANGE#均一致&#xff0c;FUZZY为YES SQL> select file#, fuzzy, to_char(CHECKPOINT_CHANGE#) from v$datafile_header;1)对于open resetlogs时数据文件中有脏数据的情况&#x…

初探深度学习-手写字体识别

前言 手写数字的神经网络识别通常指的是通过训练有素的神经网络模型来识别和分类手写数字图像的任务。这种类型的任务是机器学习和计算机视觉领域的一个经典问题&#xff0c;经常作为入门级的图像识别问题来展示和测试各种机器学习算法的能力。在实际应用中&#xff0c;手写数…

Job for ssh.service failed because the control process exited with error code.

错误如下&#xff1a; Start operation timed out. Terminating.Failed to start openbsd secure shell server 或者是 Job for ssh.service failed because the control process exited with error code. 有统一的解决办法&#xff01; 先卸载SSH服务&#xff0c;然后删除缓存…

分享一些开源的游戏仓库

1.CnC_Remastered_Collection 红色警戒95版本 https://github.com/electronicarts/CnC_Remastered_Collection gitee仓库分流&#xff1a;https://gitee.com/loswdarmy/CnC_Remastered_Collection 2.Far-Cry-1-Source-Full 孤岛惊魂1 https://github.com/StrongPC123/Far-Cry-…

mac电脑总卡蓝屏是怎么回事,苹果电脑老卡蓝屏怎么办

电脑老卡蓝屏是比较常见的电脑故障之一&#xff0c;导致这一问题的出现很可能是电脑本身的硬件&#xff0c;或电脑上的驱动安装错误&#xff0c;没法运行&#xff0c;当然也不排除其他的一些因素。虽说电脑蓝屏是电脑几乎都会出现的小毛病&#xff0c;不足以致命&#xff0c;但…

安卓native编程

目录 如何在native中访问assets内容 如何在native中访问assets内容 Android: 在native中访问assets全解析

读书·基于RISC-V和FPGA的嵌入式系统设计

引言&#xff1a;第八届集成电路创新创业大赛龙芯杯是有关嵌入式SoC设计的 由于我本身是做纯硬件设计&#xff0c;此前没怎么接触软硬协同 玩过Zynq&#xff0c;但是到SDK部分就去吃灰了 现在后悔了&#xff0c;所以&#xff0c;做人一定要有始有终啊~TAT -------------------…

python 蓝桥杯之常用的库

文章目录 heapqCounter导入模块创建一个 Counter 对象获取元素的出现次数访问特定元素的计数更新计数获取计数值最高的元素其他常用方法 defaultdict导入模块创建一个 defaultdict(set)向字典中添加元素访问字典中的元素访问不存在的键注意事项 heapq heapq 是 Python 中的一个…

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集&#xff0c;搭建tree_1和tree_2两个决策树模型&#xff0c;tree_1使用信息增益作为特征选择指标&#xff0c;B树使用基尼指数作为特征选择指标&#xff0c;各自对训练集进行训练&#xff0c;然后分别对训练集和测…

图论练习6

[NOIP2013]车站分级 Here 解题思路 由于起始点之间所选的站号&#xff0c;相互之间一定满足那么对于起始点间未选择的站号&#xff0c;一定满足选择的站号考虑用边来维护信息&#xff0c;表示的级别大于按题意&#xff0c;则车站会被分为几个联通块&#xff0c;且保证块内无环…