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

2025年11月26日 18:21 状态: 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--HzhZ1Oi.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-DyojDNx7.js"> <link rel="modulepreload" crossorigin href="/assets/chunk-DnR-Nqyv.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解决方案

错误翻译

原文:API returned completion of type str: <!DOCTYPE html>...
译文:API返回的completion类型为字符串:<!DOCTYPE html>...

原因分析

根本原因:API调用返回的是HTML页面而非预期的JSON数据,这表明API端点可能配置错误或URL不正确,导致返回了网页界面而非API响应。

具体表现:预期接收JSON格式的API响应,但实际收到了HTML文档,这通常发生在:

  • 使用了错误的API端点URL

  • API服务端配置问题

  • 认证失败返回登录页面
  • 解决方案

    # 检查并修正API调用代码
    import requests
    
    # 错误的调用方式示例(可能返回HTML)
    # response = requests.get("https://dmxapi.com/")  # 错误的端点
    
    # 正确的调用方式
    def call_api_correctly():
        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer your-api-key'  # 确保使用正确的认证
        }
        
        # 使用正确的API端点(通常是/api/开头的路径)
        api_url = "https://dmxapi.com/api/v1/completions"  # 示例正确端点
        
        data = {
            "model": "gpt-3.5-turbo",
            "messages": [{"role": "user", "content": "你的问题"}]
        }
        
        response = requests.post(api_url, json=data, headers=headers)
        
        # 添加响应类型检查
        if response.headers.get('Content-Type', '').startswith('text/html'):
            raise ValueError("API返回了HTML而非JSON,请检查端点URL配置")
        
        return response.json()
    
    # 调用修正后的函数
    try:
        result = call_api_correctly()
        print(result)
    except ValueError as e:
        print(f"配置错误: {e}")

    ️ 预防措施

  • URL验证:确保使用正确的API端点路径,通常以/api/开头,避免使用网站根路径
  • 响应检查:在API调用后立即检查Content-Type头部,确认返回的是application/json而非text/html
# 预防性检查代码
def safe_api_call(url, data):
    response = requests.post(url, json=data)
    content_type = response.headers.get('Content-Type', '')
    
    if 'text/html' in content_type:
        raise Exception(f"API配置错误:收到了HTML响应,请检查端点URL:{url}")
    
    return response.json()