使用OpenAI官方Python库调用Chat Completions API时大响应截断问题求助
解决思路
- 调高max_tokens参数:你的代码中设置了
max_tokens=512,这直接限制了模型输出的最大token数,当生成内容需要超过512个token时就会被截断。根据需求将该值调高,比如设置为2048,注意不要超过所用GPT-4模型的总token上限(基础版GPT-4为8192,GPT-4-32k为32768)。 - 修复chunk处理逻辑:原代码中直接使用
try-except pass忽略所有异常,且未检查delta.content是否存在——部分流式响应的chunk可能没有content字段(比如响应结束的标记chunk),直接拼接会引发异常导致后续内容丢失。修改为仅当content存在时才进行拼接,并移除宽泛的异常捕获,必要时针对性处理异常。 - 检查总token占用:确保输入消息(system+user内容)的token数加上设置的
max_tokens不超过模型的总token限制,若输入本身占用大量token,需适当减少输入内容或选择更大token上限的模型版本。
修改后的代码示例
response = client.chat.completions.create( model="gpt-4", messages=[ { "role": "system", "content": "You will be provided with some instructions for logic to implement in windows Batch" "Please make it machine readable without explanations" }, { "role": "user", "content": f'instructions: {instructions}' } ], temperature=0, max_tokens=2048, top_p=1, stream=True ) command = '' for chunk in response: content = chunk.choices[0].delta.content if content: command += content print(command)
内容的提问来源于stack exchange,提问作者Matan Dobrushin
相关产品推荐
相关产品推荐

