效能工具十之接入deepseek实现AI学习PDF文档读后感文件批量生成功能

0 阅读6分钟

前言

看文,看的是一种思路,希望笔者的文章能给诸位带来一些灵感思路☺️☺️☺️

历史效能工具文章

文本是效能工具系列文章的第九篇,前八篇分别是

业务需求场景描述

  • 公司每个月都会安排员工学习一个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

截图:

1111111.png

当然,需要充点两块钱,如下:

222.png

实际上,大模型的生成文字的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进行高效解决问题?

手工创作不易,感谢大家支持鼓励☺️☺️☺️