404 Not Found
404 Not Found 表示服务器找不到请求的资源。通常是 URL 路径配置错误导致的。
错误示例
{ "error": { "message": "Not Found", "type": "invalid_request_error", "code": "not_found" }}原因分析
| 原因 | 说明 |
|---|---|
| URL 路径错误 | 请求的接口路径拼写有误或不存在 |
| Base URL 错误 | Base URL 配置不正确,缺少或重复了路径段 |
| 接口不存在 | 请求的 API 接口尚未上线或已被移除 |
| 路径大小写错误 | URL 路径区分大小写,大小写不匹配 |
排查步骤
1. 检查完整的请求 URL
打印完整的请求 URL,确认路径是否正确:
# Pythonurl = f"{BASE_URL}/v1/chat/completions"print(f"Request URL: {url}")2. 确认 Base URL 配置
| Base URL 配置方式 | 请求路径 | 完整 URL |
|---|---|---|
https://api.example.com/v1 | /chat/completions | https://api.example.com/v1/chat/completions |
https://api.example.com | /v1/chat/completions | https://api.example.com/v1/chat/completions |
3. 检查路径是否重复
# 错误:路径重复curl "https://api.example.com/v1/v1/chat/completions" -H "Authorization: Bearer $API_KEY"# ^^^^ 重复了4. 检查路径拼写
确认接口路径拼写正确:
# 错误:拼写错误curl "https://api.example.com/v1/chat/completion" -H "Authorization: Bearer $API_KEY"# ^ 缺少 s5. 测试基础接口连通性
# 测试 models 接口是否可访问curl "$BASE_URL/v1/models" -H "Authorization: Bearer $API_KEY"如果 models 接口返回正常,说明 Base URL 配置正确,问题出在具体的请求路径上。
正确的 URL 格式
常用接口路径对照
| 接口 | 正确路径 |
|---|---|
| 模型列表 | GET /v1/models |
| Chat 补全 | POST /v1/chat/completions |
| Responses | POST /v1/responses |
| Embeddings | POST /v1/embeddings |
| 图片生成 | POST /v1/images/generations |
| 图片编辑 | POST /v1/images/edits |
各语言示例
cURL
curl "https://api.example.com/v1/chat/completions" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'Python(OpenAI SDK)
from openai import OpenAI
client = OpenAI( api_key="sk-your-api-key", base_url="https://api.example.com/v1" # 注意:SDK 会自动拼接 /chat/completions)
response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hello"}])JavaScript(OpenAI SDK)
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "sk-your-api-key", baseURL: "https://api.example.com/v1", // SDK 会自动拼接路径});
const response = await client.chat.completions.create({ model: "gpt-4o", messages: [{ role: "user", content: "Hello" }],});使用 OpenAI SDK 时,
base_url应包含/v1,SDK 会自动拼接后续路径,无需手动添加。