": { "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. 错误翻译


plaintext
原文: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示例修复:

    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和端点路径分开管理,避免重复拼接

  • python
    BASE_URL = "https://api.openai.com"
    API_VERSION = "v1"
    ENDPOINTS = {
    "chat": f"/{API_VERSION}/chat/completions",
    "completions": f"/{API_VERSION}/completions"
    }

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

  • python
    # 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是否有效

  • bash
    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,避免重复拼接。