别再手动做表了!带你实现一个强大的Excel GPT

打造支持上下文与历史对话的 Excel GPT

在上一篇文章中,我们实现了通过调用 AI 接口生成指定内容的 Excel,具备了根据输入生成预览和下载的功能。

今天我们直接做个大的,创建一个拥有用户交互界面的 Excel GPT,并且实现支持上下文和历史对话记录的强大功能!

一、功能升级

相比上次,这次更新主要引入了数据库作为持久层,用于支持不同历史对话的切换以及当前对话的上下文记录。同时,添加了 router 路由管理,采用 nodemon 实现热更新,并且在服务端实现了加载静态文件的功能。考虑到idea到项目的快速实现,没有花费过多时间精力进行前后端分离,后续项目会考虑使用 NextJS 框架。

二、参考

上下文硬盘缓存技术

DeepSeek API 提供了上下文硬盘缓存技术,并且对所有用户默认开启,用户无需修改代码即可使用。每一个用户请求都会触发硬盘缓存的构建。当后续请求与之前的请求在前缀上存在重复时,重复部分将从缓存中拉取,计入 “缓存命中”。
例如:

第一次请求
messages: [

{
   "role": "system", "content": "你是一位资深的财报分析师..."}

{
   "role": "user", "content": "<财报内容>\n\n请总结一下这份财报的关键信息。"}

]
第二次请求
messages: [
{
   "role": "system", "content": "你是一位资深的财报分析师..."}
{
   "role": "user", "content": "<财报内容>\n\n请分析一下这份财报的盈利情况。"}
]

在上述例子中,两次请求的相同前缀部分(即 system 消息 + user 消息中的 <财报内容>),在第二次请求时会被计入 “缓存命中”。这一技术大大提高了请求处理的效率,减少了与 AI 模型的重复交互,提升了用户体验。

JSON Output


deepseek官方的JSON规范化输出我在调试的过程中经常出现问题,因为有写AI生成内容为空就会跑出异常,所以我还是接续了上次的逻辑,在提示词里面做文章。

多轮对话

DeepSeek /chat/completions API 是一个“无状态” API,即服务端不记录用户请求的上下文,用户在每次请求时,需将之前所有对话历史拼接好后,传递给对话 API。

三、数据库(DB)设计

我选用了 prisma 作为 ORM 工具,因为真的快,只需编写好 model 并执行几个命令,即可完成整个配置。数据库的设计结构如下:

DB设计

四、项目结构

经典的 MVC 结构,基于 koa 服务搭建。项目结构如下:

excel-generator/ 
├── src/ 
│   ├── controller/     # 控制器层,负责处理请求和响应
│   ├── service/       # 服务层,封装业务逻辑
│   ├── config/        # 配置,存放各种配置信息
│   ├── view/          # 前端页面,提供用户交互界面
│   └── index.ts       # 入口文件,启动整个应用

五、提示词模板(Prompt Template)配置

提示词模板的配置对于与 AI 模型的交互至关重要。我们定义了两个主要的提示词模板:

export const EXCEL_GENERATOR_TEMPLATE = {
  SYSTEM_PROMPT: `你是一个经验丰富的 Excel 生成器。用户会给你一个生成 Excel 的需求,你需要根据需求返回一个 JSON 格式的模板。JSON 模板的结构如下:
  {
    "columns": [{"header&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝啵啵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值