Weights & Biases Inference
Weights & Biases Inference 通过 W&B 平台为开放模型提供托管推理服务。AISIX 将这些模型映射到稳定的别名,并在网关处控制调用方访问权限。
准备工作
开始前,请准备以下内容:
- 一套 AISIX 环境:
- 对于 AISIX Cloud,需要一个已关联网关的环境和具有写入作用域的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请 Hybrid Cloud 访问权限,请联系 API7。
- 对于开源 AISIX 网关,请准备本地 AISIX 安装,或使用开源 AISIX 网关快速入门中的 Docker 环境。配置网关以加载声明式资源文件。
- 一个已获 Inference 授权的 W&B API Key。
curl和jq。
使用 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"
W&B Inference 是使用 OpenAI 兼容 API 的社区目录服务提供方。AISIX 通过 openai 适配器连接,并使用 Bearer Token 对上游请求进行身份认证。
创建服务提供方密钥
export WANDB_API_KEY="YOUR_WANDB_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": "wandb-prod",
"provider": "wandb",
"api_key": "'"${WANDB_API_KEY}"'",
"api_base": "https://api.inference.wandb.ai/v1",
"allowed_environments": ["'"${ENV_ID}"'"]
}' | jq -er '.provider_key.id'
)
echo "$PROVIDER_KEY_ID"
AISIX 服务提供方 ID 是 wandb,而不是 weights-and-biases。不要添加 adapter;AISIX 会为目录服务提供方推导出 openai 适配器。
显式 API Base 中包含 /v1。AISIX 发送上游请求时会追加 /chat/completions。
如果未指定项目,W&B 会将请求归因到默认 Entity 和 inference 项目。若要使用其他 W&B 团队和项目,请在服务提供方密钥的 request.default_headers 中添加 OpenAI-Project 值。请参阅上游请求头。
创建模型
使用完整的 W&B 模型 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": "wandb-llama-prod",
"model_name": "meta-llama/Llama-3.1-8B-Instruct",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -er '.model.id'
)
echo "$MODEL_ID"
替换为 W&B Inference 目录中的其他模型时,请保留发布方命名空间和大小写。
创建调用方 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": "wandb-inference-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -er '.plaintext'
)
echo "$AISIX_API_KEY"