我希望 ChatGPT 记住过去的对话并进行一致(有状态)的对话。
看过几个ChatGPT提示工程的代码
有两种设计提示的方法如下所示(伪代码)
使用单一输入(便宜)<- Better if possible
把之前的所有历史都堆叠起来(昂贵,代币限制)
def openai_chat(prompt):
completions = openai.Completion.create(
engine = "text-davinci-003",
prompt = prompt,
max_tokens = 1024,
n = 1,
temperature = 0.8,
)
response = completions.choices[0].text.strip()
return response
# 1. Use a single input
while True:
prompt = input("User: ")
completion = openai_chat(prompt)
# 2. Stack all of previous history (prompt + completion)
prompt = ""
while True:
cur_prompt = input("User: ")
prompt += cur_prompt # pseudo code
completion = openai_chat(prompt)
prompt += completion # pseudo code
是否可以选择第一种方式(便宜的)进行一致的对话?
换句话说,即使提示只有当前输入,chatGPT 会记住过去的历史吗?
一点,ChatGPT 是 GPT 模型的一个非常特殊的版本,用于通过 ChatGPT 在线对话。您正在使用 GPT-3。小点,但很重要。
在记住过去的谈话方面;不,GPT-3 不会自动执行此操作。您需要通过提示发送数据。
有几种解决方法,但没有一种是完美的。
总结之前的对话
让 GPT-3 总结之前的对话,以便在下一个提示中提供。你会失去一些意义,但它会减少你的提示总数。
将之前的对话保存为向量嵌入,并使用向量搜索找到之前对话中最相关的部分并通过提示发送。这要复杂得多,需要了解 GPT-3 嵌入端点。但它可能会解决之前提示失去意义的问题。
OpenAI 今天宣布推出 ChatGPT API,正如我在他们的电子邮件通讯中看到的那样。
看起来您使用的代码已经过时,因为它使用“引擎”并且此 API 已被弃用(参考 Engines | OpenAI API 参考),如今 OpenAI API 正在使用
model
而不是引擎,即,根据https://platform.openai.com/docs/guides/chat ChatGPT 由 gpt-3.5-turbo
驱动,这是一个模型,而不是引擎。
参考