我正在玩openAi API,我试图继续一个对话。例如:
import openai
openai.api_key = mykey
prompt= "write me a haiku"
response = openai.Completion.create(engine="text-davinci-001",prompt=prompt
,max_tokens=50)
print(response)
这将生成以下格式的俳句:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"text": "\n\n\n\nThis world is\nfull of wonders\nSo much to see and do"
}
],
"created": 1670379922,
"id": "cmpl-6KePalYQFhm1cXmwOOJdyKiygSMUq",
"model": "text-davinci-001",
"object": "text_completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 5,
"total_tokens": 22
}
}
这很好,但是,如果我现在想让openai“再给我写一个”呢?如果我使用openai playground chat或chatGPT,我可以继续对话。我想通过我的python脚本来完成。我注意到我收到了一个id
作为响应。我可以用这个来继续我的对话吗?
4条答案
按热度按时间s5a0g9ez1#
事实上你可以做你想做的事情,很简单。只要提供给openai输入前面对话的一部分。
不要忘记在“openai.completion.create”中设置“stop”变量。
此处“\n”将用作消息之间的分隔符。
btxsgosb2#
响应中的
ID
用于标识响应所针对的特定查询。请求正文中根据您的身份建议的user
字段由OpenAI专门用于监控和检测滥用,如其文档中所述。如果您想生成不同的结果,可以增加请求中的
temperature
字段,然后再次运行它。有些工作需要进行到如何设计提示。有关更多信息,请参阅OpenAI文档。OpenAI Documentation5rgfhyps3#
下面是一个如何执行此操作的示例:https://github.com/stancsz/gpt3-convo-mode
我还想建议不要在新的提示符有效载荷中包含太多的提示符和响应的历史背景。如果这样做,你可能会增加API成本。最好的方法是保持对话简短,或者只是记住一些以前的提示符和响应。(在我的例子中,它记住了整个背景)
我仍然很好奇ChatGPT如何实现他们的解决方案,因为GPT-3与ChatGPT不同。
控制台日志
您可以继续传递
context
作为下一个提示符,以保持会话的活动。我已经把它包括在这篇文章:https://medium.com/@stancsz/keeping-the-gpt-3-context-alive-875e1624adf4
阅读官方文档中的更多信息:https://beta.openai.com/docs/guides/completion/prompt-design
6qftjkof4#
我尝试了一个非常昂贵的想法,它似乎起作用了。这个想法是
to provide the context of previous discussions by enriching your current prompt with the previous promts and responses
。请参见下面的示例代码。
'
'
下面是我从API得到的一个聊天示例。