RelayVano

← 全部明信片

深圳团队上线前:把 Node.js、Python 和 Go 的请求发到同一个地址

协议与登机口 ZH

假设深圳的一个开发团队准备上线智能客服:网页后端用 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))

同一条航线上的其他明信片