如何通过Python脚本调用OpenAI API延续对话?能否使用响应ID?
关于OpenAI Completion API延续对话的问题
首先明确:不能通过响应里的id字段延续对话。这个cmpl-xxx格式的id只是单次生成请求的唯一标识,仅用于查询请求状态或售后支持,OpenAI不会根据这个id存储或关联对话上下文。
要实现类似ChatGPT的对话延续效果,你需要手动拼接完整的对话历史作为新的prompt传入API。因为text-davinci-001这类Completion模型是无状态的,每次请求都需要提供完整的上下文信息,它才会理解你要“续写”或“延续对话”的需求。
示例代码修改
比如你第一次请求得到俳句后,要发送"write me another",可以这样做:
import openai openai.api_key = mykey # 第一次请求 first_prompt = "write me a haiku" response = openai.Completion.create( engine="text-davinci-001", prompt=first_prompt, max_tokens=50 ) generated_haiku = response["choices"][0]["text"].strip() # 拼接对话历史,生成新的prompt new_prompt = f"{first_prompt}\n{generated_haiku}\n\nwrite me another" # 第二次请求,延续对话 second_response = openai.Completion.create( engine="text-davinci-001", prompt=new_prompt, max_tokens=50 ) print(second_response["choices"][0]["text"].strip())
关键说明
- Completion模型本身不维护会话状态,所有上下文必须通过prompt传递。
- 如果对话轮次多,要注意控制总token数,避免超过模型的token限制(text-davinci-001的最大token数是4096)。
内容的提问来源于stack exchange,提问作者Charmalade
相关产品推荐
相关产品推荐

