AI 赋能前端 -- 文本内容概要生成
幸福不在于你获得了什么,而在于你比他人多获得了什么 是比较出来的
大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder
此篇文章所涉及到的技术有
OpenAILangChainRust/WebAssemblyWeb Workerreact+ts+vite- 配置环境变量(
env)
因为,行文字数所限,有些概念可能会一带而过亦或者提供对应的学习资料。请大家酌情观看。
前言
在前几天我们不是写了一篇Rust 赋能前端 – 写一个 File 转 Img 的功能的文章吗?主要讲了如何用Rust解析文件并将其内容用图片形式展示。
其中呢,我们在解析文本的时候,只是做了文本的解析,而没有做针对文件内容的summary处理。
下图是我们之前的需求描述:

正如需求描述要求的,我们可以借助AI对文本进行Summary处理。而今天我们就来这个点。
前置条件
由于是演示项目,我们使用的是OpenAI的模型,而不是我们公司的模型。所以,我们需要有一个API_KEY用于接入OpenAI API。
最开始,OpenAI对于所有新注册的账户都会赠送18美元的免费额度,23年年初开始免费额度由18美元缩减为5美元。
2024年3月21日开始,5美元的API免费额度也取消了,所有新注册的OpenAI/ChatGPT账号都不再赠送5美元API key余额,全部是No credit grants found(未找到信用赠款),调用API key时也会提示insufficient_quota,You exceeded your current quota, please check your plan and billing details.
天无绝人之路,我们还可以使用一些魔法手段来调用OpenAI API。我们可以使用GPT-API-free

大家用自己的github账号申请即可。切记,将生成的key保存起来。
好了,天不早了,干点正事哇。

我们能所学到的知识点
- 配置
OpenAI环境变量- 改进
Rust逻辑- 方式1:
OpenAI- 方式2:
OpenAI+langchain
1. 配置OpenAI环境变量
我们利用GPT-API-free生成属于自己的key之后,我们就可以通过它来访问OpenAI API了。
因为,OpenAI key算是一种敏感信息,我们选择将其放置到项目的环境变量中。(如果对环境变量不是很了解可以看我们之前的文章环境变量:熟悉的陌生人)
由于我们是用f_cli构建的Vite前端项目。在初始化时,已经新建了用于存放环境变量的文件。

所以,我们只需要将openai key放置到对应文件即可。
VITE_API_BASE_URL = https://api.dev.example.com
VITE_API_URL_PREFIX = '/ajax'
VITE_OPENAI_API_KEY=sk-xxx // 这里放置你自己的key
这里还有一点需要说明,在Vite中配置环境变量并且能够在项目中使用(import.mete.env.xxx),我们需要以VITE_开头定义一个变量名。

2. 改进 Rust 逻辑
上一篇文章,在讲Rust的代码时,不知道大家对下面的逻辑有印象没?

其实呢,这里的本意就是,将输入的文本基于空格进行切割,生成单词数组。但是呢,在实践过程中,我们发现上述的处理方式针对英文环境还是可以的,毕竟英文单词它再长也不能超过canvas的宽度。
嘿,您猜怎么着,在汉字环境下,由于我们设定的方式是见着空格就切割。但是呢,一段优雅的中文文案,它可以连绵不断,没有空格。这您受得了吗。
就像这样。


所以,我们需要换种文本切割规则。 --见到字符就切割。
我们可以通过遍历text
相关文章:
AI 赋能前端 -- 文本内容概要生成
幸福不在于你获得了什么,而在于你比他人多获得了什么 是比较出来的 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 OpenAILangChainRust/WebAssemblyWeb Workerreact+ts+vite配置环境变量(env)因为,行文字数所限,有些概…...
orin部署tensorrt、cuda、cudnn、pytorch、onnx
绝大部分参考https://blog.csdn.net/qq_41336087/article/details/129661850 非orin可以参考https://blog.csdn.net/JineD/article/details/131201121 报错显卡驱动安装535没法安装、原始是和l4t-cuda的部分文件冲突 Options marked [*] produce a lot of output - pipe it t…...
使用javacv对摄像头视频转码并实现播放
要实现Java接受RTSP流解码,并推送给前端实现播放实时流,可以使用一些流媒体处理库,比如JavaCV或者FFmpeg等。以下是一个简单的示例代码: 1.控制层方面的 根据视频rtsp流链接打开转换,通过响应写出流到前台使用flvjs播…...
Linux网络-Socket套接字_Windows与Linux端双平台基于Udp传输协议进行多线程跨平台的服务器与客户端网络通信的简易聊天室实现
文章目录 一、Socket套接字二、Udp 常见API1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. ssize_t recvfrom(int socket, void *restrict buffer, size_t length, i…...
20分钟快速入门SQL
SQL(Structured Query Language,结构化查询语言)是一种专门用来管理和操作关系型数据库的编程语言。以下是SQL入门的一些基础概念和教程: 1. SQL基础 数据库(Database):存储数据的集合。表&am…...
汇总区间,合并区间
题目一: 代码如下: vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…...
Web程序设计-实验05 DOM与BOM编程
题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面(详见参考资源,建议自行搜索更多后台页面)的主要元素构成和版面设计,借鉴并构思预期效果。 2、新建 index.h…...
Window系统安装Docker
因为docker只适合在liunx系统上运行,如果在window上安装的话,就需要开启window的虚拟化,打开控制面板,点击程序,在程序和功能中可以看到启动和关闭window功能,点开后,找到Hyper-V,Wi…...
RabbitMQ不完整的笔记
同步的不足 1、拓展性差,当要添加功能时,需要在原来的功能代码上做修改,高耦合。 2、性能下降,调用者需要等待服务提供者执行完返回结果后,才能继续向下执行 3、级联失败,由于我们是基于OpenFeign调用交易…...
微软Edge浏览器深度解析:功能、同步、隐私与安全
微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…...
网络性能测试工具:iperf3介绍
文章目录 前言一、iperf3 的安装和使用下载和安装参数说明 二、iperf3 测试服务端启动客户端启动服务端输出反向测试客户端服务端 前言 新接触的网络环境如何评估网络带宽和吞吐量呢,有的项目没有对业务流量进行合理规划,服务或者中间件出口带宽经常有被…...
scp:Linux系统本地与远程文件传输命令
scp 是Linux系统中用于在本地主机和远程主机之间进行文件传输的命令。 详细说明: scp 命令用于安全地将文件从一个主机传输到另一个主机,所有传输数据都是加密的。语法: scp [参数] [源文件路径] [目标主机:目标路径] 参数说明:…...
python基础(习题、资料)
免费提取资料: 练习、资料免费提取。持续更新迅雷云盘https://pan.xunlei.com/s/VNz6kH1EXQtK8j-wwwz_c0k8A1?pwdrj2x# 本文为Python的进阶知识合辑,包括列表(List)、元组(Tuple)、字典(Dic…...
shell脚本免交互
shell脚本的编写一方面为了减少我们命令的输入,另一方面也可以进行简单的自动化运行,其中为了实现自动化过程,一个很重要的点就是免交互,本篇文章跟大家简单分享两个常用的免交互的方法。 Here Document Here document 通过内联重…...
WPF学习笔记:给文字添加线性渐变效果
<TextBox Text"XXX信息管理系统" VerticalAlignment"Center" Background"Transparent" HorizontalAlignment"Center" FontSize"35" FontWeight"Normal"> <TextBox.Effect> <…...
Fully Convolutional Networks for Semantic Segmentation--论文笔记
论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型,可以产生特征层次结构。我们表明,卷积网络本身,经过端到端,像素对像素的训练,在…...
Camworks编程怎么样:深度解析其四大特点、五大应用领域、六大优势与七大挑战
Camworks编程怎么样:深度解析其四大特点、五大应用领域、六大优势与七大挑战 Camworks编程,作为计算机辅助制造(CAM)领域的一款重要软件,近年来在制造业中得到了广泛的应用。那么,Camworks编程究竟怎么样呢…...
【Linux】操作系统之冯诺依曼体系
🎉博主首页: 有趣的中国人 🎉专栏首页: Linux 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 操作系统中 冯诺依曼体系 的相关内容。 如果看到最后您觉得这篇文…...
c++ QT 实现QMediaPlayer播放音频显示音频级别指示器
文章目录 效果图概述代码总结 效果图 概述 QMediaPlayer就不介绍了,就提供了一个用于播放音频和视频的媒体播放器 QAudioProbe 它提供了一个探针,用于监控音频流。当音频流被捕获或播放时,QAudioProbe 可以接收到音频数据。这个类在需要访问…...
失之毫厘差之千里之load和loads
起源 最近在读pandas库的一些文档的时候,顺便也会将文档上的一些demo在编辑器中进行运行测试,其中在读到pandas处理Json数据这一节的时候,我还是像往常一样,将文档提供的demo写一遍,结果在运行的时候,直接…...
SAP资产主数据批量修改避坑大全:GGB1替代+AR31工作清单配置详解(含日期字段特殊处理)
SAP资产主数据批量修改实战指南:从GGB1替代到AR31工作清单全流程解析 当财务团队需要对上千条资产记录进行成本中心迁移时,手工修改不仅效率低下,还容易产生数据不一致。SAP系统提供的GGB1替代规则与AR31工作清单组合方案,正是解决…...
OFA模型微调实战:适配特定领域的小样本学习
OFA模型微调实战:适配特定领域的小样本学习 用最少的数据,让通用大模型听懂你的专业语言 1. 引言:当通用模型遇到专业领域 你有没有遇到过这样的情况:一个在通用场景下表现优秀的AI模型,一到你的专业领域就"水土…...
效率倍增:用快马生成jdk一键配置脚本与docker环境模板
效率倍增:用快马生成JDK一键配置脚本与Docker环境模板 每次新换电脑或者重装系统,最头疼的就是重新配置开发环境。特别是Java开发,光是下载JDK、配置环境变量就得折腾半天。最近发现用InsCode(快马)平台可以快速生成自动化脚本,把…...
Shield CLI:MySQL 插件 vs phpMyAdmin:轻量 Web 数据库管理工具对比
phpMyAdmin 是 MySQL Web 管理的事实标准,1998 年发布至今,功能覆盖面极广。但在"查个数据、改个表、看看关系"这类日常场景下,它的部署成本和界面复杂度显得有些过重。Shield CLI MySQL 插件是一个 7MB 的单二进制 Web 客户端&…...
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧 1. 认识NaViL-9B多模态模型 NaViL-9B是一款原生支持多模态交互的大语言模型,能够同时处理文本和图像输入。与传统的纯文本模型不同,它可以直接"看懂"图片内容&#x…...
MedGemma Medical Vision LabGPU优化:FP16量化+KV Cache压缩使A10显存占用降低42%
MedGemma Medical Vision Lab GPU优化:FP16量化KV Cache压缩使A10显存占用降低42% 1. 项目背景与挑战 MedGemma Medical Vision Lab 是一个基于 Google MedGemma-1.5-4B 多模态大模型构建的医学影像智能分析 Web 系统。这个系统通过 Web 界面实现医学影像与自然语…...
OpenRocket:开源火箭仿真平台的技术架构与实践指南
OpenRocket:开源火箭仿真平台的技术架构与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位:如何突破传统火箭设计…...
EDK II代码格式化集成指南:IDE集成步骤详解
EDK II代码格式化集成指南:IDE集成步骤详解 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 EDK II作为现代UEFI固件开发的核心框架,其代码质量直接影响到固件的稳定性和安全性。本文将详细介绍如何将EDK II代码…...
Connect to Oracle Database with JDBC Driver
1. Overview The Oracle Database is one of the most popular relational databases. In this tutorial, we’ll learn how to connect to an Oracle Database using a JDBC Driver. 2. The Database To get us started, we need a database. If we don’t have access to …...
重新定义你的窗口管理体验 - StreamWindow 4.0
StreamWindow 4.0版本带来了重大更新,也做了很多优化和完善。 距离发布APP已经过去小半年了,这款macOS上的3D窗口管理工具随着4.0版本通过审核,带来大量的功能更新和完善,尤其引入了一种新的动画特效:扑克牌洗牌特效。…...
