自带端点
私有模型服务器(例如 vLLM、SGLang 和 Ollama)可以从你控制的基础设施公开 OpenAI 兼容 API。AISIX 可以将模型流量路由到这些服务器,或路由到位于自有模型之前的私有代理。
如果应用需要继续通过 OpenAI 兼容 API 调用 AISIX,同时由 AISIX 将流量转发到私有或隔离网络中的模型服务,请使用 BYO 端点。该端点必须接受 OpenAI 兼容的 Chat Completions 请求。
如需使用已按各引擎文档中的 API 格式验证过的 AISIX Cloud 步骤,请参阅专门的 Ollama 或 vLLM 指南。对于 SGLang 等其他私有 OpenAI 兼容服务器,请使用本页的通用 AISIX Cloud 资源格式。
准备工作
开始前,请准备以下内容:
- 一套 AISIX 环境:
- 对于 AISIX Cloud,需要一个已关联网关的环境和具有写入作用域的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请 Hybrid Cloud 访问权限,请联系 API7。
- 对于开源 AISIX 网关,请准备本地 AISIX 安装,或使用开源 AISIX 网关快速入门中的 Docker 环境。配置网关以加载声明式资源文件。
- 可访问的 OpenAI 兼容端点及其提供的模型名称。示例使用提供
meta-llama/Llama-3.1-8B-Instruct的 vLLM。 curl和jq。
使用 AISIX Cloud 配置
导出 AISIX Cloud 连接信息:
# AISIX_CP 是 Admin API 基础 URL;应包含 /api,且末尾不带斜杠
# 本地 On-Premises 快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CLOUD_ADMIN_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
使用 byo 作为服务提供方标识符,选择 openai 适配器,并显式设置端点:
PROVIDER_KEY_ID=$(curl -sS -X POST "$AISIX_CP/provider_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "vllm-private",
"provider": "byo",
"adapter": "openai",
"api_key": "not-used-by-vllm",
"api_base": "http://10.0.0.5:8000/v1",
"allowed_environments": ["'"$ENV_ID"'"]
}' | jq -r '.provider_key.id')
AISIX Cloud Admin API 使用 provider: "byo",以便用量数据区分自定义端点和目录服务提供方。对于开源 AISIX 网关,resources.yaml 中的 provider 可以是 vllm 等 描述性标签。两种方式都要求 api_key 非空;仅当端点忽略身份验证时才使用占位值。
创建模型:
MODEL_ID=$(curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/models" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "llama-3-private",
"model_name": "meta-llama/Llama-3.1-8B-Instruct",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -r '.model.id')
创建可访问该模型的调用方 API Key:
BYO_CALLER_KEY=$(curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/api_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "byo-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -r '.plaintext')
在模型定价中配置 BYO 定价。AISIX Cloud 模型请求不接受开源网关使用的 cost 配置块。
使用开源 AISIX 网关配置
在 resources.yaml 中为私有端点声明服务提供方密钥、模型别名和调用方 API Key。
创建服务提供方密钥
许多私有运行的推理服务器不需要 API Key。对于无需身份验证的端点,请在服务提供方密钥中使用非空占位值 ;AISIX 会将其作为 Bearer Token 发送,你的服务器可以忽略该值。
请使用服务器预期的端点根地址,例如 vLLM 使用 http://host:8000/v1、SGLang 使用 http://host:30000/v1、Ollama 使用 http://host:11434/v1。以下示例使用 http://10.0.0.5:8000/v1。
为私有 OpenAI 兼容端点声明服务提供方密钥:
_format_version: "1"
provider_keys:
- display_name: vllm-private
provider: vllm
adapter: openai
api_key: not-used-by-vllm
api_base: http://10.0.0.5:8000/v1
provider是适合当前环境的任意简短标签。adapter选择 OpenAI 兼容的上游格式。api_key是无需身份验证的端点所使用的非空占位值。对于需要身份验证的端点,请从环境变量引用真实凭证(例如api_key: ${VLLM_API_KEY}),不要在文件中写入明文 Secret。api_base是端点根地址。如果/v1是服务器路由的一部分,请将其包含在内。
服务提供方密钥 Secret 遵循服务提供方密钥中 说明的凭证处理方式。
创建模型
将面向调用方的别名映射到端点所提供的上游模型 ID:
models:
- display_name: llama-3-private
provider: vllm
model_name: meta-llama/Llama-3.1-8B-Instruct
provider_key: vllm-private
cost:
input_per_1k: 0.0
output_per_1k: 0.0
display_name是调用方在model中发送的别名。model_name是端点预期的上游 ID。对于 vLLM 和 SGLang,请使用所提供的模型名称;对于 Ollama,请使用本地模型标签,例如llama3.1:8b。provider_key通过服务提供方密钥的display_name将模型别名关联到服务提供方密钥。cost为可选字段,用于提供下文所述的定价元数据。
添加价格元数据
目录服务提供方会携带来自 models.dev 目录的价格。BYO 端点不在该目录中,因此如果需要 Token 成本核算,请自行设置定价元数据。
将模型条目中的零成本占位值替换为实际的每 1K 个 Token 费率:
cost:
input_per_1k: 0.10
output_per_1k: 0.30
两个值的单位都是每 1,000 个 Token 的美元价格。input_per_1k 适用于提示词 Token,output_per_1k 适用于补全 Token。存在 cost 配置块时,这两个字段都为必填项。
开源网关会将这些元数据用于用量事件和 least_cost 路由,但不会据此执行预算限制。AISIX Cloud 不会使用 resources.yaml 中的 cost 配置块;请通过模型定价单独配置 BYO 定价。资源文件字段请参阅模型别名。
创建调用方 API Key
声明可访问私有模型别名的 API Key 资源。明文密钥值来自环境变量,并在网关加载文件时进行哈希处理:
api_keys:
- display_name: byo-caller
key_env: BYO_CALLER_KEY
allowed_models: ["llama-3-private"]
allowed_models 值必须与已创建的模型别名匹配。
启动网关前导出调用方密钥值:
# 请替换为实际值
export BYO_CALLER_KEY="YOUR_CALLER_API_KEY"
验证并加载配置
如果 AISIX 安装在本地,请在加载前验证完整文件:
aisix validate --resources resources.yaml
验证后,在网关进程环境中提供所引用的环境变量,再启动网关。如果这些变量已经可供本地安装的网关进程使用,请向该进程发送 SIGHUP 以重新加载文件:
kill -HUP "$(pgrep -x aisix)"
如果新增了变量或更改了变量值,请改用更新后的进程环境重启网关。
如果使用 Docker,请调整开源 AISIX 网关快速入门中的验证和启动命令。挂载此 resources.yaml 文件,并在两条命令中使用 -e 传入它引用的每个环境变量。
验证服务提供方连接
导出 AISIX 网关 Origin:
# 本地快速入门使用 http://127.0.0.1:3000
export AISIX_PROXY="YOUR_AISIX_GATEWAY_ORIGIN"
使用已创建的调用方 API Key 和模型别名,通过代理发送请求:
curl -sS -X POST "$AISIX_PROXY/v1/chat/completions" \
-H "Authorization: Bearer ${BYO_CALLER_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3-private",
"messages": [
{
"role": "user",
"content": "Say hello from the private model."
}
]
}'
响应应为 OpenAI 兼容的 Chat Completions 响应,并回显面向调用方的别名。请在端点访问日志中检查来自 AISIX 的 POST /v1/chat/completions 条目。
如果 AISIX 返回上游路由或连接错误,请检查 api_base、所提供的模型名称和端点可访问性。
支持其他端点
私有端点必须实现应用通过 AISIX 调用的每个 OpenAI 兼容路由。当端点提供兼容的 Embeddings 路由时,AISIX 可以转发 Embedding 请求。其他路由有额外的服务提供方要求;请参阅服务提供方兼容性。
对于请求或响应格式上的细微差异,请在服务提供方密钥上配置服务提供方专用覆盖。
后续步骤
你已将私有 OpenAI 兼容端点连接到 AISIX。接下来可阅读以下指南: