我是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之间的工作流程有什么区别吗?
1条答案
按热度按时间dddzy1tm1#
*是的。 始终需要重新发送所有上下文。**GPT无论3-5还是4都无法通过API存储信息。There is a thread about that on openai community
我的理论是,openAI正在等待企业chatgpt(几乎已经完成)发布一个我们可以训练和记忆信息的模型,否则这应该会在一夜之间创造出数百万个独立的AI。
有一些像langchain这样的库模拟这种存储并处理文件,但实际上它们每次都需要发送所有消息。不同的是,使用它可以处理更多的令牌,因为在与openai交互之前,它首先只查找必要的上下文。
(Note:如果你选择使用langchain,请记住,它在cpu方面相当昂贵,而且效率不高)
类似线程:1,2,3