":{"message":"","type":"rix_api_error","param":"","code":"bad_response_status_co...
🚨 错误信息
🤖 AI解决方案
原文:Exception: LLM call failed: {"error":{"message":"","type":"rix_api_error","param":"","code":"bad_response_status_code"}}
译文:异常:调用LLM失败:{"error":{"message":"","type":"rix_api_error","param":"","code":"bad_response_status_code"}}
原因分析
这是一个调用外部AI服务(LLM API)时发生的网络或服务端错误。核心原因是API返回了异常的HTTP状态码(bad_response_status_code),通常指4xx(客户端错误)或5xx(服务器端错误),而错误信息(message)为空,导致调用失败。
具体上下文是您的代码尝试与一个名为 rix 的AI服务API进行通信,但对方的服务器返回了一个错误的响应状态码,且未提供有效的错误详情。
解决方案
您需要增强代码的错误处理逻辑,捕获并详细记录API响应信息,以便准确定位问题。
python
假设您使用的是类似requests的库进行API调用
import requests
import logging配置日志
logging.basicConfig(level=logging.INFO)def call_llm_api(api_url, payload, headers):
try:
response = requests.post(api_url, json=payload, headers=headers, timeout=30)
# 1. 明确检查HTTP状态码
response.raise_for_status() # 如果状态码是4xx/5xx,将抛出HTTPError异常
# 2. 尝试解析响应体
return response.json()
except requests.exceptions.HTTPError as http_err:
# 这是关键:捕获HTTP状态码错误,并打印完整的响应信息
logging.error(f"HTTP错误发生!状态码:{response.status_code}")
logging.error(f"响应头:{response.headers}")
logging.error(f"响应正文:{response.text}") # 这里可能包含服务端的具体错误信息
# 根据状态码进行更精细的错误处理
if response.status_code == 401:
raise Exception("认证失败,请检查API密钥。")
elif response.status_code == 429:
raise Exception("请求过于频繁,请稍后重试。")
elif response.status_code >= 500:
raise Exception("服务端内部错误,请联系服务提供商。")
else:
raise Exception(f"未知API错误。状态码:{response.status_code}, 响应:{response.text}")
except requests.exceptions.RequestException as req_err:
# 处理网络连接、超时等错误
logging.error(f"请求过程发生错误:{req_err}")
raise Exception(f"网络请求失败:{req_err}")
except ValueError as json_err:
# 处理响应不是有效JSON的情况
logging.error(f"解析JSON响应失败:{json_err}")
logging.error(f"原始响应文本:{response.text}")
raise Exception("API返回了无效的JSON格式响应。")
立即排查步骤:
api_url、API密钥或令牌是否正确无误,且未过期。rix AI服务的官方状态页面,确认服务是否正常运行。payload 和 headers 完全符合该API的文档要求。️ 预防措施
5xx错误或网络超时,可以使用指数退避策略进行有限次数的重试。Sentry、OpenTelemetry 这样的应用性能监控(APM)工具,记录所有外部调用的成功率、延迟和错误详情。