大文件上传截断方案

方案:

  1. 文档按大小限制上传(150M),按字符数限制解析存储(20w);
  2. 视频按大小限制上传(1G),按字幕字符数限制解析存储(5w);
  3. 按字符数,限制模型总结字符长度,见 1.1 各模型输入长度限制。

优点:

  1. 响应速度更快,前端用户交互体验更好;
  2. 节省调用大模型成本,见 1.3 大模型费用。

缺点:

  1. 文件总结的内容不完整

各模型输入长度与耗时

各个模型单次的token输入长度限制有差异,并且请求频率也有限制,通过测试对比,以下是测试结果:

最终方案如下:

同类产品限制

通过调研发现,目前同类产品都存在以下限制:

模型费用

模型名称 输入 输出 链接
智谱:GLM-4 0.1元/千tokens 同输入 ZHIPU AI OPEN PLATFORM
百川:Baichuan2 0.008元/千tokens 同输入 百川大模型-汇聚世界知识 创作妙笔生花-百川智能
Kimi:moonshot-v1-32k 0.012元/千tokens 同输入 apidoc-team.smzdm.com
千问:qwen-72b-chat 0.02元/千tokens 同输入 help.aliyun.com
文心:ernie-speed-128k 0.004元/千tokens 0.008元/千tokens cloud.baidu.com
gpt-4 US$30.00 / 1M tokens US$60.00 / 1M tokens https://openai.com/api/pricing
gpt-35-turbo US$0.50 / 1M tokens US$1.50 / 1M tokens https://openai.com/api/pricing

多模型切换场景:上下文管理方案

会话的第一个问题为默认问题,只要切换模型就会自动发起问答。

方案一

  1. 切换模型时,读取上一模型的问答列表存储在堆栈中;

  2. 与当前模型的问答列表对比,没有问过的留下,按顺序提示用户;

  3. 用户用户连续跳过3个问题,则清空堆栈。

优点:

  1. 轻量。

缺点:

  1. 刷新页面后丢失提示数据;

  2. 清空堆栈后所有模型都会丢失数据。

方案二

  1. 维护一个问题堆栈和一个map,key为问题的hash,value为列表;

  2. 当开始问下一个问题时就压入堆栈,并存储该模型名称到value列表中;

  3. 切换模型时,在第一个问题回答完后,从堆栈中取问题,按顺序提示用户是否问第二、三…个问题;

  4. 如果用户问了,则记录该模型名称到value列表中,如果跳过了,也记录该模型名称到value列表中;

  5. 如果用户连续跳过了3个,则把堆栈中所有该模型没问的问题都记录一下,放在对应的value列表中;

  6. 如果用户新增问题,则继续压入堆栈中,重复2、3、4、5;

  7. 问题对应的value值存满后,可删除;

  8. 持久化该堆栈和map,应对刷新场景。

优点:

  1. 可保留所有数据。

缺点:

  1. 相比方案一较重,看看是否有必要。

数据结构

1
2
3
4
5
6
7
8
9
[
{
"hash(question)": [
"zhipu",
"baichuan",
"wenxin"
]
}
]