Bad Request for url: https://www.dmxapi.cn/v1/chat/completions [Done 15/66] 日漫_D...
错误信息
[Fail 14/66] 日漫_Chiyu_Mahou_no_Machigatta_Tsukaikata_~Senjou_wo_Kakeru_Kaifuku_Youin~_v01_c001__Trapped_in_an_Another_World: 400 Client Error: Bad Request for url: https://www.dmxapi.cn/v1/chat/completions
[Done 15/66] 日漫_Demon_Slayer__Kimetsu_no_Yaiba_v17_c143__Anger: 成功 (sx50p, st0p500)
[Fail 16/66] 日漫_Chiyu_Mahou_no_Machigatta_Tsukaikata_~Senjou_wo_Kakeru_Kaifuku_Youin~_v01_c002__The_Beginning_of_Hell: 400 Client Error: Bad Request for url: https://www.dmxapi.cn/v1/chat/completions
AI 解决方案
报错分析:API 400错误
1. 错误翻译
原文:400 Client Error: Bad Request for url: https://www.dmxapi.cn/v1/chat/completions
译文:400 客户端错误:对网址 https://www.dmxapi.cn/v1/chat/completions 的请求无效
2. 原因分析
这是典型的HTTP 400错误,表示服务器认为客户端发送的请求格式或内容有问题,无法处理。在你的场景中:
- 参数缺失:缺少必填字段(如
model、messages)- 参数格式错误:字段值类型不正确(如数组写成字符串)
- 内容违规:请求内容触发了服务器的安全或内容过滤规则
- 消息角色混乱:
messages数组中的role字段值不正确(如未按system/user/assistant顺序)- 请求体过大:超过了API允许的最大token数或字符长度
根据你提供的日志,错误仅出现在特定漫画章节(如_c001__、_c002__),而其他章节(如_c143__)成功,高度怀疑是请求内容本身的问题(例如章节标题或描述触发了某些关键词过滤)。
3. 解决方案
你需要检查并修正发送给API的请求体。
第一步:检查请求结构
确保你的请求体至少包含以下基本结构,并且字段值类型正确:
{
"model": "gpt-3.5-turbo", // 或你指定的模型
"messages": [
{
"role": "system", // 或 "user"
"content": "你的提示词或问题"
}
// ... 其他消息
],
// 其他可选参数,如 temperature, max_tokens 等
}
第二步:检查问题内容
失败的两个请求都包含相同的漫画前缀:Chiyu_Mahou_no_Machigatta_Tsukaikata_~Senjou_wo_Kakeru_Kaifuku_Youin~
这个标题(尤其是Senjou_wo_Kakeru_Kaifuku_Youin,可能译为“战场上的恢复要因”)可能被API的内容安全策略误判为与暴力、战争或不当内容相关。
修复方法:在将标题或描述放入请求前,进行简单的清洗或转义:
import json
# 假设 title 是可能触发问题的标题
title = "Chiyu_Mahou_no_Machigatta_Tsukaikata_~Senjou_wo_Kakeru_Kaifuku_Youin~_v01_c001__Trapped_in_an_Another_World"
# 方法1:仅提取核心部分,或使用更中性的描述
safe_title = "Chiyu Mahou Chapter 1" # 或从标题中提取安全部分
# 方法2:如果必须使用原标题,确保它在完整的、无害的上下文中
prompt_content = f"请分析以下漫画章节,标题为:'{title}'。这是一个关于治愈魔法的故事..."
# 构建请求
payload = {
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": prompt_content}
]
}
# 发送请求...
第三步:启用详细日志
在开发环境中,打印出即将发送的完整请求体,与成功的请求进行对比,找出差异。
import json
print("Request Payload:", json.dumps(payload, indent=2, ensure_ascii=False))
4. ️ 预防措施
jsonschema Python库)确保结构完全符合API文档要求。如果问题持续,请提供触发错误的完整请求体(隐藏敏感信息),以便进行更精确的分析。