使用GPT-4 API时,每次都需要将整个对话发送回去吗?

ghg1uchk  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(316)

我是OpenAI API的新手。我使用GPT-3.5-Turbo,使用以下代码:

messages = [
        {"role": "system", "content": "You’re a helpful assistant"}
    ]

    while True:
        content = input("User: ")
        if content == 'end':
            save_log(messages)
            break
        messages.append({"role": "user", "content": content})

        completion = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-16k",
            messages=messages
        )

        chat_response = completion.choices[0].message.content
        print(f'ChatGPT: {chat_response}')
        messages.append({"role": "assistant", "content": chat_response})

测试结果:* 用户名:谁是第一个登上月球的人?GPT:第一个踏上月球的人是尼尔·阿姆斯特朗,一名美国宇航员,于1969年7月20日,作为美国宇航局阿波罗11号使命的一部分。用户:他有多高?GPT:尼尔·阿姆斯特朗身高约180厘米。
但它需要大量的令牌。我听说GPT-4与GPT-3的不同之处在于它能够记住以前的消息(自己)。是这样吗?
但是如果我删除添加了最新消息列表的行,只发送一条消息:completion = openai.ChatCompletion.create( model="gpt-4", messages=[{"role": "user", "content": content}] ),它就什么也记不住了。

  • 用户名:谁是第一个登上月球的人?GPT:第一个登上月球的人是1969年7月20日的尼尔·阿姆斯特朗。用户:他有多高?GPT:没有具体的上下文或关于“他”指的是谁的信息,我无法提供准确的答案。

所以我想知道GPT-3.5-Turbo和GPT-4之间的工作流程有什么区别吗?

dddzy1tm

dddzy1tm1#

*是的。 始终需要重新发送所有上下文。**GPT无论3-5还是4都无法通过API存储信息。There is a thread about that on openai community

我的理论是,openAI正在等待企业chatgpt(几乎已经完成)发布一个我们可以训练和记忆信息的模型,否则这应该会在一夜之间创造出数百万个独立的AI。
有一些像langchain这样的库模拟这种存储并处理文件,但实际上它们每次都需要发送所有消息。不同的是,使用它可以处理更多的令牌,因为在与openai交互之前,它首先只查找必要的上下文。
(Note:如果你选择使用langchain,请记住,它在cpu方面相当昂贵,而且效率不高)
类似线程:123

相关问题