": { "message": "Invalid URL (POST /v1/v1/chat/completions)", "type": "invalid_r...

2025年12月17日 22:06 状态: processing

🚨 错误信息

{ "error": { "message": "Invalid URL (POST /v1/v1/chat/completions)", "type": "invalid_request_error", "code": "" } }

🤖 AI解决方案

代码糕手 - 专业报错分析报告

1. 错误翻译

原文:Invalid URL (POST /v1/v1/chat/completions)
译文:无效的URL (POST /v1/v1/chat/completions)

2. 原因分析

这是一个典型的API端点路径重复错误。错误发生在调用OpenAI API时,请求的URL路径中包含了重复的版本前缀 /v1/v1/

根本原因:

  • URL路径结构错误,/v1 版本号被重复添加了两次

  • 正确的路径应该是 /v1/chat/completions,但实际请求的是 /v1/v1/chat/completions
  • 3. 解决方案

    Python示例修复:

    # ❌ 错误的代码
    import openai
    
    # 错误:base_url 或 endpoint 配置重复了 /v1
    openai.api_base = "https://api.openai.com/v1"  # 已经包含了 /v1
    # 然后调用时又添加了 /v1
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "Hello"}]
    )
    
    # ✅ 修复后的代码
    import openai
    
    # 方法1:使用正确的base_url
    openai.api_base = "https://api.openai.com"  # 不包含 /v1
    openai.api_key = "your-api-key"
    
    # 正常调用,SDK会自动添加 /v1
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "Hello"}]
    )
    
    # 方法2:如果使用自定义端点
    import requests
    
    # 正确的URL
    url = "https://api.openai.com/v1/chat/completions"  # 只有一个 /v1
    
    headers = {
        "Authorization": f"Bearer your-api-key",
        "Content-Type": "application/json"
    }
    
    data = {
        "model": "gpt-3.5-turbo",
        "messages": [{"role": "user", "content": "Hello"}]
    }
    
    response = requests.post(url, headers=headers, json=data)

    4.️ 预防措施

    最佳实践建议:

  • 统一URL管理:将API基础URL和端点路径分开管理,避免重复拼接
  •    BASE_URL = "https://api.openai.com"
       API_VERSION = "v1"
       ENDPOINTS = {
           "chat": f"/{API_VERSION}/chat/completions",
           "completions": f"/{API_VERSION}/completions"
       }
       

  • 使用环境变量或配置文件:将API配置集中管理,减少硬编码

  •    # config.py
       import os
       
       OPENAI_API_BASE = os.getenv("OPENAI_API_BASE", "https://api.openai.com")
       OPENAI_API_VERSION = "v1"
       
       # 使用时
       full_url = f"{OPENAI_API_BASE}/{OPENAI_API_VERSION}/chat/completions"
       

    ###️ 推荐工具:

  • Postman/Insomnia:用于测试API端点,确保URL正确

  • curl命令验证:快速测试URL是否有效

  curl -X POST https://api.openai.com/v1/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Hello"}]}'
  

---

总结:检查您的API客户端配置,确保URL路径中只包含一次版本前缀 /v1,避免重复拼接。