使用动态值初始化OpenAI API调用时遭遇无效JSON错误
解决OpenAI API动态值替换后的JSON格式错误问题
错误原因
你直接在JSON中使用<prompt>这类占位符,替换时未生成合法的JSON值,导致请求体不符合JSON语法规范(比如字符串未加双引号、占位符残留破坏结构),触发了API的400格式错误。
解决方法
1. 生成合法的静态JSON(临时测试用)
把动态值直接替换成对应类型的合法JSON值:
- 字符串类型(如
prompt)必须用双引号包裹 - 数字类型(如
temperature、max_tokens)直接写数值,不需要引号
替换后的正确请求体如下:
{ "model": "gpt-4o-mini", "messages": [ { "role": "user", "content": "tell me a joke" } ], "temperature": 1, "max_tokens": 4000 }
2. 用编程语言的JSON序列化工具构造请求体(推荐)
手动拼接JSON字符串极易出错,建议用对应语言的JSON库自动生成合法请求体:
Python示例
import json # 定义包含动态值的字典 payload = { "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "tell me a joke"}], "temperature": 1, "max_tokens": 4000 } # 序列化为合法JSON字符串 json_payload = json.dumps(payload)
JavaScript示例
// 定义包含动态值的对象 const payload = { model: "gpt-4o-mini", messages: [{ role: "user", content: "tell me a joke" }], temperature: 1, max_tokens: 4000 }; // 序列化为合法JSON字符串 const jsonPayload = JSON.stringify(payload);
3. 验证JSON格式
生成请求体后,用JSON验证工具检查格式是否正确,确保没有语法错误。
内容的提问来源于stack exchange,提问作者user3709406
相关产品推荐
相关产品推荐

