前言
看文,看的是一种思路,希望笔者的文章能给诸位带来一些灵感思路☺️☺️☺️
历史效能工具文章
文本是效能工具系列文章的第九篇,前八篇分别是
- 效能工具之node在项目中的应用(一)《以表格的二次封装需要的配置化JSON为例》
- 效能工具之node在项目中的应用(二)《以开发环境多后端服务切换问题为例》
- 效能工具之node在项目中的应用(三)《以给几百个el-select统一加filterable属性可搜索为例》
- 效能工具之批处理文件.bat/.cmd在工作中的应用(四)《以多项目启动为例》
- 效能工具之前端自动化部署打包发布上传脚本(五)命令行加载、上传进度功能
- vue3中用MutationObserver采取hook方式实现视频的不可拖拽功能&&效能工具(六)一键提交git代码的bat脚本
- 效能工具(七)之在Windows系统的Startup文件夹添加bat脚本开机自启动nginx或者一些软件服务
- 效能工具(八)之vite开发或生产环境下的命令行变量传参(比如启动项目时多视图选择其一)
业务需求场景描述
- 公司每个月都会安排员工学习一个pdf文档(有点形式主义的学习)
- 然后,根据文档内容写一篇500字左右读后感txt
- 员工都是把文档丢给AI让其帮忙写读后感
- 一个员工每个月要花费10分钟,几十个员工,就累计是几个小时的成本
- 人越多,成本越高
- 针对于这个情况,笔者思考,倒不如写一个工具
- 由专人在月末的时候,直接通过工具,点一点,一键生成几十份甚至上百份的学后感
- 如此这般,就能够进行相应的提效
代码实现
技术选型
- 首先是pdf的文字提取,这里使用FileReader去读取需要学习的pdf文件(上传pdf)
- 然后,把读取到的数据,交给pdf-dist中的pdf.js和pdf.worker.js
- 这里就可以拿到pdf中的所有文字信息了(包括页码数)
- 再然后,把pdf中的文字信息作为user的内容
- 再提前写好系统级的提示词内容
- 丢给deepseek的接口返回给前端
- 前端再通过file-saver.js下载对应的内容即可做到生成pdf学后感txt文本的功能
- 生成多份,就批量请求一下接口,整体Promise.allSettled一下即可
- 最终,再使用jszip把所有的txt打包成一个压缩包,直接下载了
deepseek开放平台注册API keys
地址:platform.deepseek.com/api_keys
截图:
当然,需要充点两块钱,如下:
实际上,大模型的生成文字的token一般都不贵,笔者测算了一下,生成50篇500字的txt文,成本不到一毛钱
使用express框架通过openai包调用deepseek的服务
有了deepseek的API keys且账户有钱后,就可以在服务端调用了,通过npm安装openai这个包
"dependencies": {
"express": "^5.1.0",
"openai": "^6.9.1"
}
笔者这里使用的是express
如下:
import express from 'express';
import OpenAI from "openai";
// 初始化 OpenAI
const openai = new OpenAI({
baseURL: 'https://api.deepseek.com',
apiKey: 'sk-27cae***********************1093', // 换成自己的
});
const systemContent = `系统级提示词高权重,用于规范限定回答内容`;
app.post('/api/chat', async (req, res) => {
try {
const { content } = req.body;
if (!content) {
return res.status(400).json({ error: '请提供要学习的内容' });
}
const completion = await openai.chat.completions.create({
messages: [
{ role: "system", content: systemContent },
{ role: "user", content: content },
],
model: "deepseek-chat",
});
const result = completion.choices[0]?.message?.content;
res.json({ result });
} catch (error) {
console.error('API 调用失败:', error);
res.status(500).json({ error: error.message || 'API 调用失败' });
}
});
编写系统级提示词
上述的systemContent可以根据实际业务情况,进行适当编写
const systemContent =
`
你是一个热爱中国的优秀员工。
所在的公司是xxx。
所在的部门是yyy。
仔细阅读用户提供的学习内容材料,并返回一段学习学后感。
格式要求:
- 纯文本格式,不要使用markdown
- 字数控制在400-600个字符之间
- 使用第一人称"我"来叙述
内容要求:
1. 学后感要简洁明了,逻辑清晰
2. 内容要符合实际
3. 要体现...
4. 要结合学习材料的具体内容,不能泛泛而谈
5. 要实事求是,言之有物,避免空话套话
6. 注意分段落
多样性要求:
- 每次生成都要使用不同的表达方式、不同的角度和不同的案例
- 避免使用重复的词语、句子和段落结构
- 确保每次生成的学后感都是全新的内容
重要提醒:
- 返回的内容必须符合中国的法律法规
- 要结合学习材料的具体内容进行深入思考
- 不要使用缓存!
`;
快速理解什么是提示词?
- ai交互的核心就是系统级提示词(System Prompt)和用户提示词(User Prompt)
如下表
| 维度 | 系统级提示词 | 用户提示词 |
|---|---|---|
| 生效范围 | 全局生效(所有对话轮次) | 仅当前 / 指定轮次生效 |
| 优先级 | 更高(覆盖用户提示词冲突项) | 服从系统规则 |
| 核心目的 | 设定规则与角色 | 提出具体问题 / 需求 |
| 可见性 | 通常对用户不可见(后台配置) | 用户主动输入,完全可见 |
比如,有如下场景
-
客服智能问答场景:系统提示词定义 “语气友好、优先解决用户问题、无法解答时引导转人工”,用户仅需提问 “我的订单为什么没发货”,AI 就会按该规则响应;
-
AI创作场景:系统提示词设定 “风格为悬疑短篇、字数 500 字以内、结尾留悬念”,用户仅需说 “以雨夜为背景写一个故事”,AI 的输出就会贴合这些要求。
系统级提示词有点像cosplay的身份角色背景设定...
所以,上述systemContent才会定义成为那样的
现在,有了接口了app.post('/api/chat', async (req, res) => { ... })
这样的话,前端就可以做对应请求数据,下载操作了...
篇幅有限,不继续赘述
总结
- 看完本文,大家可记住这样一句话:
所有重复的、没有技术含量的办公操作,都可以考虑使用AI进行提效 - 此外,大家可以思考一下,如何能把公司的一些业务场景给抽象出来,使用AI进行高效解决问题?
手工创作不易,感谢大家支持鼓励☺️☺️☺️