You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAI Completion API中conversation_memory参数未被识别的问题排查

问题

调用OpenAI Completion API时添加conversation_memory参数,触发InvalidRequestError: Unrecognized request argument supplied: conversation_memory错误,代码及报错栈如下:

调用代码

import openai

# Set the API key
openai.api_key = "YOUR API KEY"

# Define the conversation memory
conversation_memory = {
    "previous_question": "What is the capital of France?",
    "previous_answer": "The capital of France is Paris."
}

# Make the API request
response = openai.Completion.create(
    model="text-davinci-003",
    prompt="Where is the Eiffel Tower located?",
    temperature=0.5,
    max_tokens=1024,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0,
    conversation_memory=conversation_memory
)

# Print the response
print(response.text)

报错栈

InvalidRequestError                       Traceback (most recent call last)
<ipython-input-17-ace11d6ce405> in <module>
     11 
     12 # Make the API request
---> 13 response = openai.Completion.create(
     14     model="text-babbage-001",
     15     prompt="Where is the Eiffel Tower located?",

C:\ProgramData\Anaconda3\lib\site-packages\openai\api_resources\completion.py in create(cls, *args, **kwargs)
     23     while True:
     24         try:
---> 25             return super().create(*args, **kwargs)
     26         except TryAgain as e:
     27             if timeout is not None and time.time() > start + timeout:

C:\ProgramData\Anaconda3\lib\site-packages\openai\api_resources\abstract\engine_api_resource.py in create(cls, api_key, api_base, api_type, request_id, api_version, organization, **params)
    113         )
    114         url = cls.class_url(engine, api_type, api_version)
--> 115         response, _, api_key = requestor.request(
    116             "post",
    117             url,

C:\ProgramData\Anaconda3\lib\site-packages\openai\api_requestor.py in request(self, method, url, params, headers, files, stream, request_id, request_timeout)
    179             request_timeout=request_timeout,
    180         )
--> 181         resp, got_stream = self._interpret_response(result, stream)
    182         return resp, got_stream, self.api_key
    183 

C:\ProgramData\Anaconda3\lib\site-packages\openai\api_requestor.py in _interpret_response(self, result, stream)
    394         else:
    395             return (
--> 396                 self._interpret_response_line(
    397                     result.content, result.status_code, result.headers, stream=False
    398                 ),

C:\ProgramData\Anaconda3\lib\site-packages\openai\api_requestor.py in _interpret_response_line(self, rbody, rcode, rheaders, stream)
    427         stream_error = stream and "error" in resp.data
    428         if stream_error or not 200 <= rcode < 300:
--> 429             raise self.handle_error_response(
    430                 rbody, rcode, resp.data, rheaders, stream_error=stream_error
    431             )

InvalidRequestError: Unrecognized request argument supplied: conversation_memory

原因分析

OpenAI的Completion API(包括所有text-davinci、text-babbage等模型)根本不支持conversation_memory参数,该API的设计逻辑是基于单个prompt文本进行补全,没有内置的对话记忆机制。你添加的这个参数不在官方文档定义的合法参数列表里,所以会被API拒绝。

解决方法

方法1:手动将对话历史拼接到Completion的prompt中

如果坚持使用Completion API,需要把之前的对话内容整合到prompt里,让模型感知上下文:

import openai

openai.api_key = "YOUR API KEY"

# 拼接对话历史到prompt
conversation_history = """Q: What is the capital of France?
A: The capital of France is Paris.

Q: Where is the Eiffel Tower located?
A:"""

response = openai.Completion.create(
    model="text-davinci-003",
    prompt=conversation_history,
    temperature=0.5,
    max_tokens=1024,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0
)

# 提取并打印结果
print(response.choices[0].text.strip())

方法2:改用ChatCompletion API(推荐)

如果需要完整的对话记忆功能,推荐使用OpenAI的ChatCompletion API(支持gpt-3.5-turbo、gpt-4等模型),该API通过messages参数天然支持对话历史:

import openai

openai.api_key = "YOUR API KEY"

# 对话历史以消息数组形式存储
conversation_messages = [
    {"role": "user", "content": "What is the capital of France?"},
    {"role": "assistant", "content": "The capital of France is Paris."},
    {"role": "user", "content": "Where is the Eiffel Tower located?"}
]

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=conversation_messages,
    temperature=0.5
)

# 提取并打印回复
print(response.choices[0].message["content"].strip())

内容的提问来源于stack exchange,提问作者Richard Twitty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:15:48