OpenAI Compatible (OpenAI API系列)配置方法

179 阅读4分钟

OpenAI Compatible (OpenAI API系列)配置方法

配置 OpenAI Compatible (OpenAI 兼容) 模式是目前连接各种大模型服务(如 DeepSeek、SiliconFlow、Moonshot、Ollama 等)最通用的方法。

只要软件(如 Cursor, Cline, LangChain, AutoGen 等)支持 OpenAI 格式,你就可以通过只需修改 三个核心参数 来接入任何支持该标准的服务商。

以下是通用的配置方法整理:

1. 核心三大参数

无论你在哪个软件中配置,只需要关注这三个关键信息:

参数名通用解释典型格式 / 示例
Base URL(API 域名/地址)服务商的接口地址。这是“欺骗”软件以为它在访问 OpenAI 的关键。https://api.provider.com/v1(注意:绝大多数必须以/v1结尾)
API Key(密钥)你的身份凭证。sk-xxxxxxxxxxxxxx
Model Name(模型 ID)你想调用的具体模型名称。deepseek-chatdeepseek-ai/DeepSeek-V3llama3:8b

2. 常用服务商配置速查表

你可以直接复制下表中的 Base URL常用 Model ID 到你的软件设置中。

服务商Base URL (API地址)常用 Model ID (示例)备注
DeepSeek (官方)https://api.deepseek.com/v1deepseek-chat​(对应 V3)deepseek-reasoner(对应 R1)官方最稳定
硅基流动 (SiliconFlow)https://api.siliconflow.cn/v1deepseek-ai/DeepSeek-V3deepseek-ai/DeepSeek-R1需要填写完整路径
月之暗面 (Moonshot)https://api.moonshot.cn/v1moonshot-v1-8kmoonshot-v1-32kKimi 的底层模型
智谱 AI (BigModel)https://open.bigmodel.cn/api/paas/v4glm-4glm-4-flash注意​: 智谱是个例,通常用/v4
Ollama (本地运行)http://localhost:11434/v1llama3qwen2.5用于本地跑模型
vLLM / LMDeployhttp://<你的IP>:8000/v1(取决于你部署时指定的模型名)自建推理服务常用

3. 详细配置步骤(通用模板)

假设你在使用任何支持 OpenAI 的工具(如 VS Code 插件、Python 脚本、Chatbox 等):

  1. 选择提供商 (Provider)

    • 在设置里找到 "Provider" 或 "API Type" 选项。
    • 不要选 "OpenAI"(这通常锁定为 api.openai.com)。
    • 必须选"OpenAI Compatible" ​、 "Custom OpenAI" 或 ​ "Local AI"
  2. 填写 Base URL

    • 填入服务商提供的地址。
    • 关键点​:如果软件报错,尝试在该地址后面加上 /v1​,或者去掉 /v1​ 试试。90% 的软件需要带 /v1
    • 错误示例​:https://api.deepseek.com/chat/completions (这是完整路径,不是 Base URL)
    • 正确示例​:https://api.deepseek.com/v1
  3. 填写 API Key

    • 粘贴 sk- 开头的密钥。
  4. 填写 Model ID

    • 这里不能瞎填,必须精确匹配服务商列表里的名字。
    • 例如在 DeepSeek 官方填 deepseek-v3​ 是无效的,必须填 deepseek-chat

4. 常见避坑指南

  • 关于 /v1的玄学

    • 标准 OpenAI 库会自动拼接 /chat/completions
    • 如果你填写的 Base URL 是 .../v1/chat/completions​,软件拼接后会变成 .../v1/chat/completions/chat/completions​,导致 ​404 错误
    • 结论​:通常只填到 /v1 即可。
  • 模型名称不要带空格

    • 复制模型 ID 时,注意前后不要有空格。
  • HTTPS vs HTTP

    • 远程服务(DeepSeek, SiliconFlow)必须用 https://
    • 本地服务(Ollama)通常用 http://

5. Python 代码测试模板

下面以轨迹流动为例子:

⚙️ 配置参数对照表

在运行以下代码前,请确保你已经准备好了对应的环境。

配置项说明示例值
Base URLAPI 基础地址https://api.siliconflow.cn/v1
API Key你的授权密钥sk-xxxxxxxxxxxxxxxxxxxxxxxx
Model使用的模型名称deepseek-ai/DeepSeek-V3

1.Python测试模板

如果你不确定配置是否正确,可以用这段最简 Python 代码测试一下(需要安装 pip install openai):

from openai import OpenAI

# 1. 替换为你的 Base URL
base_url = "https://api.siliconflow.cn/v1" 
# 2. 替换为你的 API Key
api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# 3. 替换为正确的模型名称
model = "deepseek-ai/DeepSeek-V3"

client = OpenAI(api_key=api_key, base_url=base_url)

try:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "测试一下,回复'配置成功'"}],
        stream=False
    )
    print(response.choices[0].message.content)
except Exception as e:
    print(f"配置错误: {e}")
2. cURL (最快捷的命令行测试)

这是最简单的方法,无需安装任何编程语言环境,直接在终端执行即可。

curl --location "https://api.siliconflow.cn/v1/chat/completions" \
--header "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx" \
--header "Content-Type: application/json" \
--data '{
    "model": "deepseek-ai/DeepSeek-V3",
    "messages": [
        {
            "role": "user",
            "content": "测试一下,回复'\''配置成功'\''"
        }
    ],
    "stream": false
}'

3. Node.js (使用 OpenAI 官方 SDK)

首先需要安装 SDK:npm install openai

const OpenAI = require("openai");

const client = new OpenAI({
    apiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx",
    baseURL: "https://api.siliconflow.cn/v1"
});

async function main() {
    try {
        const response = await client.chat.completions.create({
            model: "deepseek-ai/DeepSeek-V3",
            messages: [{ role: "user", content: "测试一下,回复'配置成功'" }],
            stream: false,
        });
        console.log(response.choices[0].message.content);
    } catch (error) {
        console.error(`配置错误: ${error.message}`);
    }
}

main();

4. Go (使用标准 http 库)

Go 语言不依赖第三方库的实现方式:

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	url := "https://api.siliconflow.cn/v1/chat/completions"
	apiKey := "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
	
	payload := map[string]interface{}{
		"model": "deepseek-ai/DeepSeek-V3",
		"messages": []map[string]string{
			{"role": "user", "content": "测试一下,回复'配置成功'"},
		},
	}
	
	jsonPayload, _ := json.Marshal(payload)
	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
	
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")
	
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("请求错误: %v\n", err)
		return
	}
	defer resp.Body.Close()
	
	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}

5. Java (使用 OkHttp 库)

这是 Java 开发中常用的轻量级网络库实现方案:

import okhttp3.*;
import java.io.IOException;

public class SiliconFlowTest {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        String json = "{" +
                "\"model\": \"deepseek-ai/DeepSeek-V3\"," +
                "\"messages\": [{\"role\": \"user\", \"content\": \"测试一下,回复'配置成功'\"}]," +
                "\"stream\": false" +
                "}";

        RequestBody body = RequestBody.create(
                json, MediaType.get("application/json; charset=utf-8"));

        Request request = new Request.Builder()
                .url("https://api.siliconflow.cn/v1/chat/completions")
                .header("Authorization", "Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx")
                .post(body)
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println(response.body().string());
            } else {
                System.err.println("配置错误: " + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}