[求教] OpenAI API 方式,每次 create()一个会话,聊天过程中 gpt 是如何保存上下文的?有没有专门的文档介绍? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
adobas007
V2EX    OpenAI

[求教] OpenAI API 方式,每次 create()一个会话,聊天过程中 gpt 是如何保存上下文的?有没有专门的文档介绍?

  •  
  •   adobas007 2023-11-13 15:03:15 +08:00 1561 次点击
    这是一个创建于 698 天前的主题,其中的信息可能已经有所发展或是发生改变。
    OpenAI API 方式,每次 create()一个会话,聊天过程中 gpt 是如何保存上下文的?有没有专门的文档介绍?
    11 条回复    2023-11-14 10:38:11 +08:00
    Akitora
        1
    Akitora  
       2023-11-13 15:04:56 +08:00
    自己把每一段对话拼起来请求发回去,抓包网页版 GPT 可以看到怎么拼的
    vacuitym
        2
    vacuitym  
       2023-11-13 15:09:54 +08:00
    楼主想问的应该是 assitants api 的吧,我只看到了 thread 会自动获取上下文
    cheng6563
        3
    cheng6563  
       2023-11-13 15:12:42 +08:00
    每次你发送消息,实际上是把整段聊天记录发给 GPT 模型,然后模型生成下一次回复的内容
    skwyl
        4
    skwyl  
       2023-11-13 15:13:04 +08:00
    保存是你本地保存,并且把之前的聊天记录+新的聊天记录一起提交
    adobas007
        5
    adobas007  
    OP
       2023-11-13 15:17:11 +08:00
    @cheng6563 这么聊下去,历史内容+新问题,token 费用不得了
    hahastudio
        6
    hahastudio  
       2023-11-13 15:20:29 +08:00
    如果指的是 client.chat.completions.create()
    那么给请求里塞多少上下文靠自己,简单的就是前几条记录
    另外 request token + response token 是有上限的
    adobas007
        7
    adobas007  
    OP
       2023-11-13 16:11:14 +08:00
    @hahastudio 明白了,多谢
    lins05
        8
    lins05  
       2023-11-13 23:27:21 +08:00
    > 这么聊下去,历史内容+新问题,token 费用不得了

    @adobas007 所以 OpenAI 一般的第三方前端都支持用户自己设置只带上最近的几条消息。

    chatgpt-next-web 还有一个好的设计叫 "memory prompt",它会自动调用便宜的 gpt3.5 让 gpt 把到当前为止的所有消息总结成一条,这样后续的圣诞既能节约 token 又能保存一些之前的 context


    新发布的 threads api 并没有本质上的区别,只是方便了开发者不需要每次请求都把历史消息带上而已,因为 openai 在他那边会维护一个 "thread id => 该 thread 的历史消息" 的映射,但是计费还是会把这些历史对话中的 token 计算进去。
    adobas007
        9
    adobas007  
    OP
       2023-11-14 09:18:20 +08:00
    @lins05 在请教一下
    我们是否可以自己 fake 数据 messag(system,user,assistant),内容输入 GPT ,GPT 会怎么做?
    从网络结构上,有没有可能推断出 GPT 的架构( GPT 公布模型 transformer 只是一个基础原型,其整个系统架构应该远不止这些)
    yinmin
        10
    yinmin  
       2023-11-14 09:40:00 +08:00 via iPhone
    #9 可以的。自己构造几组 user,assistant 喂给 gpt 作为范例,gpt 就会参照 fake 的格式进行回复。

    例如:你希望 gpt 分析文本给出里面的地址信息,可以 fake 几个 json 格式的输出范例,然后给真实数据时,gpt 也是返回 json 格式的。

    又比如你的 prompt 很长消耗 token ,可以给一组同时处理多条数据的范例,然后就能一次处理多条数据了。
    uRQDd07Pt2UWOtOF
        11
    uRQDd07Pt2UWOtOF  
       2023-11-14 10:38:11 +08:00
    @lins05 这是最失败的设计, 聊天场景这种操作,很快下面的对话鸡同鸭讲
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2596 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:49 PVG 12:49 LAX 21:49 JFK 00:49
    Do have faith in what you're doing.
    /html> ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86