": { "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,避免重复拼接。