Bad Request for url: https://www.dmxapi.cn/v1/chat/completions [Done 15/66] 日漫_D...

2026年01月03日 11:36 状态: processing

🚨 错误信息

[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错误,表示服务器认为客户端发送的请求格式或内容有问题,无法处理。在你的场景中:
  • 触发位置:向DMXAPI平台发送API请求时

  • 根本原因:请求体(payload)不符合服务器要求,常见问题包括:

  • - 参数缺失:缺少必填字段(如modelmessages
    - 参数格式错误:字段值类型不正确(如数组写成字符串)
    - 内容违规:请求内容触发了服务器的安全或内容过滤规则
    - 消息角色混乱messages数组中的role字段值不正确(如未按system/user/assistant顺序)
    - 请求体过大:超过了API允许的最大token数或字符长度

    根据你提供的日志,错误仅出现在特定漫画章节(如_c001___c002__),而其他章节(如_c143__)成功,高度怀疑是请求内容本身的问题(例如章节标题或描述触发了某些关键词过滤)。

    3. 解决方案


    你需要检查并修正发送给API的请求体。

    第一步:检查请求结构
    确保你的请求体至少包含以下基本结构,并且字段值类型正确:

    json
    {
    "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的内容安全策略误判为与暴力、战争或不当内容相关

    修复方法:在将标题或描述放入请求前,进行简单的清洗或转义:

    python
    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}
    ]
    }

    发送请求...


    第三步:启用详细日志
    在开发环境中,打印出即将发送的完整请求体,与成功的请求进行对比,找出差异。

    python
    import json
    print("Request Payload:", json.dumps(payload, indent=2, ensure_ascii=False))

    4. ️ 预防措施


  • ✅ 请求体验证:在发送API请求前,使用JSON Schema验证工具(如jsonschema Python库)确保结构完全符合API文档要求。

  • ✅ 内容预审:对于用户生成或外部获取的内容(如漫画标题),实现一个简单的“安全词”过滤层,替换或标记可能触发内容策略的敏感词汇。

  • ✅ 使用重试与降级:对于400错误,可以实现重试逻辑(更换描述方式)或降级方案(使用默认标题),确保流程继续。
  • ---
    如果问题持续,请提供触发错误的完整请求体(隐藏敏感信息),以便进行更精确的分析。