字符串转译(处理调用大模型API时body格式不对问题)

本文介绍了在调用GPTAPI时遇到的JSON格式错误,特别是当Prompt包含结构信息和特殊字符时。提供了使用在线转译工具和Python代码对字符串进行转义的方法,确保API请求体的正确格式,以避免请求失败。
摘要由CSDN通过智能技术生成

在调用GPT API 时就会报错,遇到要传比较复杂的Prompt时(如附带一些结构信息包含特殊字符的),就会出现json格式不规范从而导致请求失败报错的问题。这个时候我们就需要用工具来对我们的字符串进行转译

如下图(报错),出现这种情况我们应该如何解决呢?继续往下看
在这里插入图片描述

可以通过以下两种方式来解决

  1. 在线转译工具
  2. 转译代码
在线转译工具

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格式错误情况了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值