Hugging Face
Hugging Face Inference Providers 会将请求路由到由多个推理服务商提供的开放权重模型。AISIX 将该目录置于统一的 OpenAI 兼容 API 之后,并由网关管理凭证、调用方访问权限、限流和用量核算。
Hugging Face 与单一服务商上游不同,它使用路由层:由请求中的模型 ID 而不是 URL 决定哪个推理服务商提供该模型。
本指南介绍共享的 Inference Providers 路由器。专用 Hugging Face Inference Endpoint 具有独立的部署主机名,无法通过路由器 URL 访问。仅当其服务引擎提供应用所需的 OpenAI 路由(例如 /v1/chat/completions 或 /v1/embeddings)时,才将该部署配置成私有 OpenAI 兼容端点。自定义端点或任务原生端点并不会自动兼容 OpenAI。
准备工作
开始前,请准备以下内容:
- 一套 AISIX 环境:
- 对于 AISIX Cloud, 需要一个已关联网关的环境和具备写入权限的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请 Hybrid Cloud 访问权限,请联系 API7。
- 对于开源 AISIX 网关,请准备本地 AISIX 安装,或使用开源 AISIX 网关快速入门中的 Docker 环境。配置网关以加载声明式资源文件。
- 在 Access Tokens 中创建、具备 Make calls to Inference Providers 权限的 Hugging Face Access Token。
- 仍有 Inference Providers Credit 的 Hugging Face 账号。
curl和jq。
Hugging Face Access Token 是账户级凭证,而不是针对单个服务商的 API Key。一个 Token 可以授权调用路由器可选择的所有推理服务商,因此 AISIX 中的一个服务提供方密钥即可覆盖整个路由器目录。请将 Token 的权限限制为 Inference Providers,确保 AISIX 中存储的凭证不能同时读取或写入 Hub 仓库。
使用 AISIX Cloud 配置
导出 AISIX Cloud 连接信息:
# AISIX_CP 是 Admin API 基础 URL;应包含 /api,且不含尾部斜杠
# 本地私有化部署快速入门使用 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"
为 Hugging Face 支持的 Chat Completions 和原生 Responses 创建服务提供方密钥、模型别名和调用方 API Key。
由于 Hugging Face 提供 OpenAI 兼容 API,AISIX 会通过 openai 适配器连接,并使用 Inference Providers 路由器作为 api_base。
创建服务提供方密钥
创建用于存储 Hugging Face Token 和路由器根地址的服务提供方密钥:
# 请替换为实际值
export HF_TOKEN="YOUR_PROVIDER_API_KEY"
PROVIDER_KEY_ID=$(curl -sS -X POST "$AISIX_CP/provider_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "huggingface-prod",
"provider": "huggingface",
"api_key": "'"${HF_TOKEN}"'",
"api_base": "https://router.huggingface.co/v1",
"apis": {
"responses": {}
},
"allowed_environments": ["'"${ENV_ID}"'"]
}' | jq -r '.provider_key.id')
echo "$PROVIDER_KEY_ID"
❶ provider 为 huggingface。AISIX Cloud Admin API 会从目录服务提供方派生适配器;adapter 字段仅在 BYO 服务提供方密钥上被接受。
❷ api_key 存储 Hugging Face Access Token。其行为遵循服务提供方密钥中的凭证处理方式。
❸ api_base 是 Inference Providers 路由器的根地址。其主机为 router.huggingface.co,而不是某个模型专用的主机;/v1 是位于所有路由推理服务商之前的 OpenAI 兼容接口。AISIX 会追加端点路径,因此 Chat 路由会解析为 https://router.huggingface.co/v1/chat/completions。如果省略 api_base,AISIX Cloud 会从目录中填入相同的路由器 URL;显式设置该值可使资源内容自解释。
❹ apis.responses 声明路由器在同一根地址提供 Responses API。这 样,AISIX 会使用 Hugging Face 原生格式,而不是通过 Chat Completions 转换请求。
此命令会将返回的服务提供方密钥 ID 保存到 PROVIDER_KEY_ID。
创建模型
Hugging Face 模型 ID 是 <org>/<model> 格式的 Hub 仓库 ID,不同发布方的大小写并不统一:openai/gpt-oss-120b 全部为小写,而 Qwen/Qwen3-235B-A22B-Thinking-2507 和 deepseek-ai/DeepSeek-V4-Pro 使用混合大小写。请从支持的模型列表原样复制 ID,不要手动输入;创建模型别名前,还应在该列表中确认模型当前仍在提供服务。
创建调用方将在请求中发送的模型别名:
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": "hf-gptoss-prod",
"model_name": "openai/gpt-oss-120b",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -r '.model.id')
echo "$MODEL_ID"
❶ display_name 是调用方在 model 中发送的别名。
❷ model_name 是 Hugging Face 模型 ID,例如 openai/gpt-oss-120b 或 deepseek-ai/DeepSeek-V4-Pro。AISIX 会将此字符串原样转发到路由器。
❸ provider_key_id 将该别名关联到 Hugging Face 服务提供方密钥。
固定推理服务商
Hugging Face 接受模型 ID 上的可选后缀,用于控制由哪个推理服务商处理请求。该后缀是模型字符串的一部分,因此应设置在 model_name 中:
model_name 值 | 路由行为 |
|---|---|
openai/gpt-oss-120b | 自动路由,默认选择当前可用且速度最快的推理服务商。 |
openai/gpt-oss-120b:groq | 固定到指定的推理服务商。 |
openai/gpt-oss-120b:cheapest | 按每个输出 Token 的价格路由到成本最低的服务商。 |
openai/gpt-oss-120b:fastest | 路由到吞吐量最高的服务商。这是默认策略。 |
openai/gpt-oss-120b:preferred | 按 Hugging Face Inference Providers 设置中配置的偏好顺序路由。 |
当前后缀语法请参阅 Hugging Face Chat Completion 文档。
后缀会改变延迟、价格以及实际运行模型的后端,因此请将固 定服务商和策略路由的变体视为不同上游。请为每个变体创建一个模型别名,不要原地切换后缀,使限流和用量记录仍可归属到该路由选择。
如果准确的 AISIX 成本和预算计算很重要,请固定推理服务商。使用 :fastest、:cheapest 或 :preferred 时,所选服务商和价格都可能变化,因此请验证或覆盖别名成本元数据。相关字段请参阅模型别名。
创建调用方 API Key
创建可访问该模型别名的调用方 API Key。明文密钥由服务器生成,并且只在响应中返回一次,请安全保存:
AISIX_API_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": "huggingface-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -r '.plaintext')
echo "$AISIX_API_KEY"
allowed_models 值必须引用上一步保存的模型 ID。
网关会自动获取新资源,无需重启。