API 返回的 completion 类型错误:<class 'str'>: <!DOCTYPE html> <html lang="zh"> <head> <...

2026年04月24日 17:24 processing

错误信息

API 返回的 completion 类型错误:<class 'str'>: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="theme-color" content="#ffffff" /> <meta name="description" content="OpenAI 接口聚合管理,支持多种渠道包括 OpenAI,Azure,Claude,Midjourney,Suno,Luma,Runway,Kling,Gemini,Flux,Udio 可用于二次分发管理 key" /> <link rel="icon" href="" /> <link rel="dns-prefetch" href="https://at.alicdn.com"> <link rel="preconnect" href="https://at.alicdn.com" crossorigin> <link rel="stylesheet" href="https://at.alicdn.com/t/c/font_4670331_ymatw5orvcb.css" crossorigin="anonymous"> <script type="module" crossorigin src="/assets/app-gpW4OKC7.js"></script> <link rel="modulepreload" crossorigin href="/assets/chunk-DNvSC-lt.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-CX4HiF4A.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-B44qZnMV.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-DnR-Nqyv.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-DyojDNx7.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-FC8mhxCE.js"> <link rel="stylesheet" crossorigin href="/assets/asset-ByGjGmTC.css"> <link rel="stylesheet" crossorigin href="/assets/asset-DT5rqr1n.css"> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"></div> </body> </html>。

AI 解决方案

报错分析

1.错误翻译


原文:API 返回的 completion 类型错误:<class 'str'>
译文:API返回的completion类型错误:类型为字符串(<class 'str'>)

2.原因分析


  • 根本原因:API预期返回结构化数据(如JSON),但实际返回了HTML字符串(错误页面/未授权页)。

  • 具体位置:API响应的Content-Type错误或请求参数/路径错误,导致服务器返回HTML而非目标completion数据。
  • 3. 解决方案


    import requests
    
    def get_valid_completion(api_url, payload, headers):
        response = requests.post(api_url, json=payload, headers=headers)
        
        # 校验响应类型(核心修复)
        if "text/html" in response.headers.get("Content-Type", ""):
            raise ValueError(f"API返回HTML而非数据:{response.text[:200]}...")
        
        return response.json()  # 正常解析JSON
    
    # 使用示例(替换为真实参数)
    api_url = "https://dmxapi.cn/v1/chat/completions"  # 正确端点
    payload = {"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "你好"}]}
    headers = {"Authorization": "Bearer YOUR_KEY", "Content-Type": "application/json"}
    
    try:
        result = get_valid_completion(api_url, payload, headers)
    except ValueError as e:
        print(f"错误:{e}")
    

    4. 预防措施


  • 最佳实践1:请求前用Postman/curl验证API端点正确性,避免拼写错误。

  • 最佳实践2:代码中强制检查Content-Type(如application/json),非预期类型立即抛错。

  • 推荐工具:Postman(API调试)、HTTPie(命令行验证响应头)。
  • ---
    :若仍报错,需检查API密钥有效性、模型名称是否正确,或联系DMXAPI支持确认服务状态。