V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
foveal
V2EX  ›  OpenAI

用 chatgpt api 进行多轮对话,如何节约 token?

  •  
  •   foveal · 2023-05-10 13:18:18 +08:00 · 2998 次点击
    这是一个创建于 548 天前的主题,其中的信息可能已经有所发展或是发生改变。
    多轮对话的时候,聊的越多后面每次对话传的字数越多,很费 token 。
    有可能每次只传 上一轮对话 id 和新对话 来节省 token 么?
    https://platform.openai.com/docs/api-reference/chat/create
    10 条回复    2023-05-11 15:23:52 +08:00
    lzgshsj
        1
    lzgshsj  
       2023-05-10 13:33:07 +08:00
    呃,不知从何吐槽。。。
    假设真的实现可以传 id 的话,那 openai 还要从数据库里调出 id 对应的对话,然后在后端把对话加入上下文中,不还是要算进 token 吗。
    目前来看,比较可行的还是用 embedding 的方式压缩提炼上下文来一定程度上保留更长对话。
    iyiluo
        2
    iyiluo  
       2023-05-10 13:38:33 +08:00
    和大模型的推算成本有关,上下文越长,推算的成本越大,这部分成本肯定要用户来承担。
    foveal
        3
    foveal  
    OP
       2023-05-10 13:58:08 +08:00
    @iyiluo 有点好奇,在网页上使用 chatgpt 也是聊天记录越长,每次对话费用越高么(很多人可能习惯一个网页 chat 里面聊很长很长)?
    另外我理解推算成本大概是字数的平方? openai 为啥按照字数来收费?
    gpt4 甚至输入和输出字的成本都不同,纯粹是商业定价还是有成本架构原因?
    yushiro
        4
    yushiro  
       2023-05-10 14:17:33 +08:00 via iPhone
    你觉得是架构设计的原因,OpenAI 目前的行为,看上去是用的无状态请求,服务器端处理的时候,不需要知道你是谁,只是根据你的输入进行处理,这样做的好处是省去了很多同步,并发问题。
    特别是应对服务器资源自动缩放的时候,完全没影响,否则处理你请求的服务器,还需要去访问中央数据库,拿到你的信息再处理,那瓶颈就是中央数据库了
    ansonsiva
        5
    ansonsiva  
       2023-05-10 14:49:26 +08:00
    @foveal #3 网页上用 chatgpt 即使在同一页面里,聊一阵子后前面的内容他就忘记了。。。
    yinmin
        6
    yinmin  
       2023-05-10 15:52:47 +08:00   ❤️ 1
    @foveal 网页版与 API 是区别的。网页版有对话 ID(conversation_id)的,每次聊天是传输 conversation_id + 本次提问。
    yinmin
        7
    yinmin  
       2023-05-10 15:55:52 +08:00   ❤️ 1
    @foveal API 没有对话 ID(conversation_id),这个项目 https://github.com/Yidadaa/ChatGPT-Next-Web 使用了压缩以前对话内容减少 token 的技巧,你可以研究参考。
    xabcstack
        8
    xabcstack  
       2023-05-10 16:56:55 +08:00
    @yinmin 这个压缩实际上非常不好, 信息损失严重,聊几句后面就断了
    yinmin
        9
    yinmin  
       2023-05-11 13:58:07 +08:00
    @xabcstack

    基于目前的 API 接口,只能是:
    通用聊天:如果之前的对话过多,只能保留最近的几条,前面对话要么抛弃要么压缩。
    专项处理:可以将关键对话锁定,然后再采用通用聊天的算法。
    xabcstack
        10
    xabcstack  
       2023-05-11 15:23:52 +08:00   ❤️ 1
    @yinmin 在聊天场景中,压缩信息没有实际意义, 把压缩信息传递过去, 后面的聊天很快就鸡同鸭讲了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1981 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:15 · PVG 00:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.