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

ChatGPT 的 api 使用问题:关于加载上下文的限制

  •  
  •   amon ·
    xumeng · 2023-04-08 14:34:29 +08:00 · 2853 次点击
    这是一个创建于 620 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hello ,关于 ChatGPT api 调用,有个大大的疑惑,烦请大佬们解答,谢谢🙏

    1 、已知 OpenAI 并没有提供会话和上下文相关的 api ,Chat 的 api 调用格式如下,只能靠传输历史对话记录作为上下文。

    openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Who won the world series in 2020?"},
            {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
            {"role": "user", "content": "Where was it played?"}
        ]
    )
    

    2 、OpenAI 的 api 调用中,最大 tokens 有限制,比如 Chat 的模型是 4096tokens (包含请求和响应)。

    问题来了: 1 、 如果历史对话记录已经很多条了,远远超过 4096tokens ,那么这个上下文该如何实现呢? 2 、 如果不保存上下文的话,那么这个 Chat 似乎又失去了意义。

    10 条回复    2023-04-11 11:48:16 +08:00
    metalvest
        1
    metalvest  
       2023-04-08 14:41:44 +08:00 via Android   ❤️ 2
    用 langchain 保存在 Redis 里,用 refine 类型递归查找
    参考官方文档里的助理用例
    swulling
        2
    swulling  
       2023-04-08 14:48:58 +08:00   ❤️ 1
    会话压缩,让 GPT 帮你总结下之前对话的摘要,扔到 system 中。
    amon
        3
    amon  
    OP
       2023-04-08 15:26:41 +08:00
    @metalvest 谢谢,方便分享下文档地址吗?

    @swulling 谢谢,“让 GPT 总结”是指另外调一次 api 去提取摘要吗。
    metalvest
        5
    metalvest  
       2023-04-08 18:32:56 +08:00 via Android   ❤️ 2
    zmxnv123
        6
    zmxnv123  
       2023-04-08 18:44:33 +08:00 via iPhone   ❤️ 1
    https://www.v2ex.com/t/930154 最近看的一篇帖子,不管这个楼主说的对不对,我觉得都能引发一些思考。
    hahastudio
        7
    hahastudio  
       2023-04-08 19:02:04 +08:00   ❤️ 1
    简单点就用 tiktoken 去算 token 数,或者用一个设置去设置历史消息的上限。我自己用的话,对话一般也就 6 条以内算是相关性强的
    sorcerer
        8
    sorcerer  
       2023-04-10 07:14:34 +08:00 via Android
    @metalvest 这个不能突破 openai api 的 token 数限制吧。。
    yinmin
        9
    yinmin  
       2023-04-10 09:29:28 +08:00 via iPhone
    推荐一个项目: https://github.com/Yidadaa/ChatGPT-Next-Web

    这个项目比较好的处理了你的问题。你用 chrome 开发者工具跟踪 ajax ,多次对话之后,能看到总结压缩之前的对话内容
    metalvest
        10
    metalvest  
       2023-04-11 11:48:16 +08:00 via Android
    @sorcerer 不是突破 token 数限制,是增加总 token 消耗为代价节省单次 token 数使用,达到处理超长文本的目的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:04 · PVG 22:04 · LAX 06:04 · JFK 09:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.