在调用GPT API 时就会报错,遇到要传比较复杂的Prompt时(如附带一些结构信息包含特殊字符的),就会出现json格式不规范从而导致请求失败报错的问题。这个时候我们就需要用工具来对我们的字符串进行转译
如下图(报错),出现这种情况我们应该如何解决呢?继续往下看
在这里插入图片描述
可以通过以下两种方式来解决
- 在线转译工具
- 转译代码
在线转译工具
https://www.box3.cn/tools/addslashes.html
python转译代码如下
test_string = input["test_string"]
def escape_special_characters(input_string):
# 使用字典映射特殊字符及其转义序列
escape_characters = {
"'": "\\'", # 单引号
'"': '\\"', # 双引号
"\\": "\\\\", # 反斜杠
"\0": "\\0" # NUL字节
}
# 使用列表推导式处理字符串
escaped_string = ''.join(escape_characters.get(char, char) for char in input_string)
return escaped_string
# 测试字符串
print("Original String:", test_string)
print("Escaped String:", escape_special_characters(test_string))
description = escape_special_characters(test_string)
output = {'description':description}
转移前的字符串
##工作表结构json:[
{
"controlId": "625d4dd8a64269123a9b4590",
"controlName": "品名",
"type": 2
},
{
"controlId": "625d4dd8a64269123a9b4592",
"controlName": "规格",
"type": 2
},
{
"controlId": "625d4dd8a64269123a9b4591",
"controlName": "单价",
"type": 8
},
{
"controlId": "625d4dd8a64269123a9b459c",
"controlName": "到货日期",
"type": 15
},
{
"controlId": "625d4dd8a64269123a9b459e",
"controlName": "修改统计核对",
"type": 6
},
{
"controlId": "625d4dd8a64269123a9b4594",
"controlName": "库存数量",
"type": 6
}
]##字段说明:controlId是字段ID,controlName是字段名称,type是字段类型##tpye类型说明:2-文本,3-手机,5-邮箱,6-数字,8-金额,15-日期##执行动作:根据tpye的类型,为这个结构的工作表生成15条示例数据,其中填充的文本值优先考虑中文##生成数据的格式:生成15条数据,每一条数据都参考格式:[
{
"controlId": “对应controlId”,
"value": “生成的数字段值
},
{
"controlId": “对应controlId”,
"value": “生成的数字段值
},
{
"controlId": “对应controlId”,
"value": “生成的数字段值
},
{
"controlId": “对应controlId”,
"value": “生成的数字段值
},
{
"controlId": “对应controlId”,
"value": “生成的数字段值
}
],组装成一个15个对象的对象数组输出给我。##输出要求:只输出最终的对象数组的json结果给我,不需要任何其他的输出。结果:##工作表结构json:[
{
\\\"controlId\\\":\\\"625d4dd8a64269123a9b4590\\\",\\\"controlName\\\":\\\"品名\\\",\\\"type\\\":2},{\\\"controlId\\\":\\\"625d4dd8a64269123a9b4592\\\",\\\"controlName\\\":\\\"规格\\\",\\\"type\\\":2},{\\\"controlId\\\":\\\"625d4dd8a64269123a9b4591\\\",\\\"controlName\\\":\\\"单价\\\",\\\"type\\\":8},{\\\"controlId\\\":\\\"625d4dd8a64269123a9b459c\\\",\\\"controlName\\\":\\\"到货日期\\\",\\\"type\\\":15},{\\\"controlId\\\":\\\"625d4dd8a64269123a9b459e\\\",\\\"controlName\\\":\\\"修改统计核对\\\",\\\"type\\\":6},{\\\"controlId\\\":\\\"625d4dd8a64269123a9b4594\\\",\\\"controlName\\\":\\\"库存数量\\\",\\\"type\\\":6}]##字段说明:controlId是字段ID,controlName是字段名称,type是字段类型##tpye类型说明:2-文本,3-手机,5-邮箱,6-数字,8-金额,15-日期##执行动作:根据tpye的类型,为这个结构的工作表生成15条示例数据,其中填充的文本值优先考虑中文##生成数据的格式:生成15条数据,每一条数据都参考格式:[
{
\\\"controlId\\\": \\\“对应controlId\\\”,\\\"value\\\": \\\“生成的数字段值
},
{
\\\"controlId\\\": \\\“对应controlId\\\”,\\\"value\\\": \\\“生成的数字段值
},
{
\\\"controlId\\\": \\\“对应controlId\\\”,\\\"value\\\": \\\“生成的数字段值
},
{
\\\"controlId\\\": \\\“对应controlId\\\”,\\\"value\\\": \\\“生成的数字段值
},
{
\\\"controlId\\\": \\\“对应controlId\\\”,\\\"value\\\": \\\“生成的数字段值
}
],组装成一个15个对象的对象数组输出给我。##输出要求:只输出最终的对象数组的json结果给我,不需要任何其他的输出。
转移后的字符串
##工作表结构json:[{\"controlId\":\"625d4dd8a64269123a9b4590\",\"controlName\":\"品名\",\"type\":2},{\"controlId\":\"625d4dd8a64269123a9b4592\",\"controlName\":\"规格\",\"type\":2},{\"controlId\":\"625d4dd8a64269123a9b4591\",\"controlName\":\"单价\",\"type\":8},{\"controlId\":\"625d4dd8a64269123a9b459c\",\"controlName\":\"到货日期\",\"type\":15},{\"controlId\":\"625d4dd8a64269123a9b459e\",\"controlName\":\"修改统计核对\",\"type\":6},{\"controlId\":\"625d4dd8a64269123a9b4594\",\"controlName\":\"库存数量\",\"type\":6}]##字段说明:controlId是字段ID,controlName是字段名称,type是字段类型##tpye类型说明:2-文本,3-手机,5-邮箱,6-数字,8-金额,15-日期##执行动作:根据tpye的类型,为这个结构的工作表生成15条示例数据,其中填充的文本值优先考虑中文##生成数据的格式:生成15条数据,每一条数据都参考格式:[{\"controlId\":“对应controlId”,\"value\":“生成的数字段值},{\"controlId\":“对应controlId”,\"value\":“生成的数字段值},{\"controlId\":“对应controlId”,\"value\":“生成的数字段值},{\"controlId\":“对应controlId”,\"value\":“生成的数字段值},{\"controlId\":“对应controlId”,\"value\":“生成的数字段值}],组装成一个15个对象的对象数组输出给我。##输出要求:只输出最终的对象数组的json结果给我,不需要任何其他的输出。结果:##工作表结构json:[{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b4590\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"品名\\\\\\\",\\\\\\\"type\\\\\\\":2},{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b4592\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"规格\\\\\\\",\\\\\\\"type\\\\\\\":2},{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b4591\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"单价\\\\\\\",\\\\\\\"type\\\\\\\":8},{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b459c\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"到货日期\\\\\\\",\\\\\\\"type\\\\\\\":15},{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b459e\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"修改统计核对\\\\\\\",\\\\\\\"type\\\\\\\":6},{\\\\\\\"controlId\\\\\\\":\\\\\\\"625d4dd8a64269123a9b4594\\\\\\\",\\\\\\\"controlName\\\\\\\":\\\\\\\"库存数量\\\\\\\",\\\\\\\"type\\\\\\\":6}]##字段说明:controlId是字段ID,controlName是字段名称,type是字段类型##tpye类型说明:2-文本,3-手机,5-邮箱,6-数字,8-金额,15-日期##执行动作:根据tpye的类型,为这个结构的工作表生成15条示例数据,其中填充的文本值优先考虑中文##生成数据的格式:生成15条数据,每一条数据都参考格式:[{\\\\\\\"controlId\\\\\\\": \\\\\\“对应controlId\\\\\\”,\\\\\\\"value\\\\\\\": \\\\\\“生成的数字段值},{\\\\\\\"controlId\\\\\\\": \\\\\\“对应controlId\\\\\\”,\\\\\\\"value\\\\\\\": \\\\\\“生成的数字段值},{\\\\\\\"controlId\\\\\\\": \\\\\\“对应controlId\\\\\\”,\\\\\\\"value\\\\\\\": \\\\\\“生成的数字段值},{\\\\\\\"controlId\\\\\\\": \\\\\\“对应controlId\\\\\\”,\\\\\\\"value\\\\\\\": \\\\\\“生成的数字段值},{\\\\\\\"controlId\\\\\\\": \\\\\\“对应controlId\\\\\\”,\\\\\\\"value\\\\\\\": \\\\\\“生成的数字段值}],组装成一个15个对象的对象数组输出给我。##输出要求:只输出最终的对象数组的json结果给我,不需要任何其他的输出。
转译后的API请求,就不会出现body格式错误情况了