深圳团队上线前:把 Node.js、Python 和 Go 的请求发到同一个地址
假设深圳的一个开发团队准备上线智能客服:网页后端用 Node.js,离线任务用 Python,内部服务用 Go。三段程序都要访问同一个模型服务。接入时,大家首先碰到的配置就是基础地址,也就是 base URL。
可以把它理解成程序寄送请求的收件地址前缀。你告诉 SDK 请求发往哪里,再调用生成回复的方法。理解这个分工,比直接复制一串地址更有用。
基础地址、接口路径和密钥各管一件事
以本文使用的 OpenAI 兼容接口为例,RelayVano 的 API 主机是 https://api.relayvano.com,而这类 SDK 应填写的基础地址是 https://api.relayvano.com/v1。调用聊天接口时,最终请求路径是 /v1/chat/completions。因此,基础地址里保留 /v1,但不要再填入 /chat/completions。([relayvano.com](https://relayvano.com/english/route-guide))
配置前,可以先写下三个答案:请求寄到哪里,使用哪把密钥,调用哪个模型。基础地址回答第一个问题,密钥用于认证,模型标识则放在具体请求中。官方接入示例也分别设置这三项。([relayvano.com](https://relayvano.com/english/route-guide))
Node.js:在客户端构造时设置 baseURL
以下示例使用官方 openai 包,并假设项目采用 ES 模块。先执行 npm install openai,再在文件中导入客户端。Node.js 的配置项写作 baseURL,注意 URL 三个字母都要大写。([github.com](https://github.com/openai/openai-node?utm_source=openai))
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.RELAYVANO_KEY, baseURL: "https://api.relayvano.com/v1" });
先在运行环境中设置 RELAYVANO_KEY,再启动程序。这段代码创建客户端;后续通过这个 client 发出的接口调用使用所配置的地址。密钥应留在可信的服务端环境中,避免随网页代码发送给浏览器。([relayvano.com](https://relayvano.com/english/route-guide))
Python:同一个地址,参数写作 base_url
Python 使用相同的配置思路,但参数名称采用下划线。先执行 pip install openai,然后分别加入以下三行。这里显式读取环境变量,让配置来源一眼可见。([relayvano.com](https://relayvano.com/english/route-guide))
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["RELAYVANO_KEY"], base_url="https://api.relayvano.com/v1")
检查代码时,重点看 api_key 和 base_url 的拼写。不要把 Node.js 的 apiKey、baseURL 原样搬过来。两种语言接受的参数名称不同,填写的基础地址可以相同。([github.com](https://github.com/openai/openai-python?utm_source=openai))
Go:用 WithBaseURL 传入地址
Go 示例采用官方 openai-go 的 v3 包。项目中导入 os、github.com/openai/openai-go/v3 和 github.com/openai/openai-go/v3/option,再把下面这行放进函数体。这里通过客户端选项设置地址和密钥。([github.com](https://github.com/openai/openai-go?utm_source=openai))
client := openai.NewClient(option.WithAPIKey(os.Getenv("RELAYVANO_KEY")), option.WithBaseURL("https://api.relayvano.com/v1"))
实际调用接口时继续使用这个 client。阅读其他 Go 教程时,也要先确认它使用的包路径;本文的 WithBaseURL 写法对应官方 openai-go,而不是所有名称相似的库。([github.com](https://github.com/openai/openai-go?utm_source=openai))
三种语言共用配置时,先确定变量来源
上述示例把地址显式写在客户端构造处,方便第一次接入时核对。官方三种 SDK 也支持通过 OPENAI_BASE_URL 读取基础地址;采用这种方式时,可同时用 OPENAI_API_KEY 提供密钥,再按各自语言的默认方式创建客户端。([github.com](https://github.com/openai/openai-node/blob/main/docs/authentication.md?utm_source=openai))
团队可以约定:本地测试、预发布和生产环境分别配置变量。排查前先核对正在运行的进程拿到了哪一组值,并检查代码是否又显式传入了地址。这样讨论“我已经改过配置”时,大家能指向具体位置。
首次请求前,逐项核对接入配置
- 核对 API 主机和 /v1 前缀,避免把完整聊天接口地址填进基础地址。
- 确认运行进程可以读取密钥变量,记录配置是否存在即可。
- 从服务提供的模型列表复制调用标识,避免凭展示名称猜测。
- 先发送一条简短消息,确认回复成功,再接入完整业务流程。
这份核对顺序可以直接对照官方接入示例:客户端配置地址和密钥,请求配置模型与消息。先让最小请求跑通,后续问题就更容易定位。([relayvano.com](https://relayvano.com/english/route-guide))
如果你希望按实际用量接入模型服务,推荐试试 RelayVano,并用同一份基础地址配置整理团队的接入方式。可以注册账户,从上面任意一种语言的一条简短请求开始。([relayvano.com](https://relayvano.com/english/route-guide))