_from_response(err.response) from None openai.APIStatusError: <html> <head><titl...
错误信息
(.venv) PS D:\code\laohuaproject> & d:/code/laohuaproject/.venv/Scripts/python.exe d:/code/laohuaproject/datashow/api_test_0425.py
Traceback (most recent call last):
File "d:\code\laohuaproject\datashow\api_test_0425.py", line 82, in <module>
ai_result = glm41v_analyze_figure(fig, default_prompt)
File "d:\code\laohuaproject\datashow\api_test_0425.py", line 61, in glm41v_analyze_figure
resp = client.chat.completions.create(
model="glm-4.1v-thinking-free",
messages=messages,
temperature=0.7,
)
File "D:\code\laohuaproject\.venv\Lib\site-packages\openai\_utils\_utils.py", line 287, in wrapper
return func(*args, **kwargs)
File "D:\code\laohuaproject\.venv\Lib\site-packages\openai\resources\chat\completions\completions.py", line 1211, in create
return self._post(
~~~~~~~~~~^
"/chat/completions",
^^^^^^^^^^^^^^^^^^^^
...<47 lines>...
stream_cls=Stream[ChatCompletionChunk],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "D:\code\laohuaproject\.venv\Lib\site-packages\openai\_base_client.py", line 1314, in post
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\code\laohuaproject\.venv\Lib\site-packages\openai\_base_client.py", line 1087, in request
raise self._make_status_error_from_response(err.response) from None
openai.APIStatusError: <html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
AI 解决方案
报错分析报告
1.错误翻译
原文:405 Not Allowed
译文:405 方法不允许
2. 原因分析
client.chat.completions.create()时,可能因API基础URL配置错误、模型名称无效或端点路径不匹配,导致请求被拒绝。3. 解决方案
from openai import OpenAI
# 1. 配置DMXAPI兼容客户端(关键修复)
client = OpenAI(
api_key="your_dmxapi_key", # 替换为实际密钥
base_url="https://api.dmxapi.cn/v1" # DMXAPI的OpenAI兼容端点
)
# 2. 修正后的调用逻辑
def glm41v_analyze_figure(fig, prompt):
messages = [
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": fig}},
{"type": "text", "text": prompt}
]}
]
try:
resp = client.chat.completions.create(
model="glm-4.1v-thinking-free", # 确认模型名与文档一致
messages=messages,
temperature=0.7,
)
return resp.choices[0].message.content
except Exception as e:
print(f"API调用失败: {e}")
return None
4. 预防措施
curl -X POST https://api.dmxapi.cn/v1/chat/completions -H "Authorization: Bearer YOUR_KEY" -d '{"model":"glm-4.1v-thinking-free",...}');httpie或Insomnia可视化调试API请求。