跳到主要内容

Fireworks AI

Fireworks AI 为生成式 AI 模型目录提供托管推理服务。应用通过稳定的 AISIX 别名调用所选模型,网关则保管 Fireworks 凭证。

准备工作

开始前,请准备以下内容:

  • 一套 AISIX 环境:
    • 对于 AISIX Cloud,需要一个已关联网关的环境和具备写入权限的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请 Hybrid Cloud 访问权限,请联系 API7
    • 对于开源 AISIX 网关,请准备本地 AISIX 安装,或使用开源 AISIX 网关快速入门中的 Docker 环境。配置网关以加载声明式资源文件。
  • Fireworks 控制台获取的 Fireworks API Key。
  • curljq

使用 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"

为 Fireworks 支持的 Chat Completions 路由创建服务提供方密钥、模型别名和调用方 API Key。

由于 Fireworks AI 提供 OpenAI 兼容 API,AISIX 会通过 openai 适配器连接,并使用 Fireworks API 根地址作为 api_base

创建服务提供方密钥

创建用于存储 Fireworks 凭证和 API 根地址的服务提供方密钥,并允许其进入该环境:

# 请替换为实际值
export FIREWORKS_API_KEY="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": "fireworks-prod",
"provider": "fireworks-ai",
"api_key": "'"${FIREWORKS_API_KEY}"'",
"api_base": "https://api.fireworks.ai/inference/v1",
"allowed_environments": ["'"${ENV_ID}"'"]
}' | jq -r '.provider_key.id')

echo "$PROVIDER_KEY_ID"

provider 为目录服务提供方 ID fireworks-ai。连字符是该标识符的一部分;仅使用 fireworks 会被拒绝并返回 400 INVALID_REQUEST

api_key 存储 Fireworks API Key。其行为遵循服务提供方密钥中的凭证处理方式。

api_base 指向 Fireworks 推理 API。/inference 路径段不可省略:Fireworks 在 https://api.fireworks.ai/inference/v1 下提供 OpenAI 兼容推理路由,而用于列出和创建 Fireworks API Key 的账户管理 REST API 位于 https://api.fireworks.ai/v1。删除 /inference 会让服务提供方密钥指向错误的 API 接口。

AISIX 会把端点路径追加到 api_base,因此请使用 API 根地址,末尾不要包含 /chat/completions。追加端点路径前会移除末尾斜杠,因此 https://api.fireworks.ai/inference/v1/https://api.fireworks.ai/inference/v1 的解析结果相同。

此服务提供方的 api_base 可选。省略时,AISIX Cloud Admin API 会填入 https://api.fireworks.ai/inference/v1。显式设置该值可以在资源上直观显示上游根地址,并在以后迁移到专用 Fireworks 部署时保留该设置。

此命令会将返回的服务提供方密钥 ID 保存到 PROVIDER_KEY_ID

创建模型

Fireworks 模型 ID 是完全限定的账户路径,而不是简单名称。由 Fireworks 发布的 Serverless 模型使用 accounts/fireworks/models/<name> 格式,例如 accounts/fireworks/models/gpt-oss-120b。Fireworks 还会用 p 表示版本号中的小数点,因此 Qwen 3.7 Plus 为 accounts/fireworks/models/qwen3p7-plusgpt-oss-120b 这样的扁平 OpenAI 风格名称不是有效的 Fireworks 模型 ID。

请从 Fireworks 模型概览复制完整标识符,不要手动拼接。部分目录条目会将 models 路径段替换为 routers,自行部署的模型则在第一个路径段中使用你自己的账户名称。

创建调用方将在请求中发送的模型别名:

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": "fireworks-gptoss-prod",
"model_name": "accounts/fireworks/models/gpt-oss-120b",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -r '.model.id')

echo "$MODEL_ID"

display_name 是调用方在 model 中发送的别名。调用方不会看到该账户路径。

model_name 是 Fireworks 模型 ID,例如 accounts/fireworks/models/gpt-oss-120baccounts/fireworks/models/kimi-k3accounts/fireworks/models/qwen3p7-plus

provider_key_id 将该别名关联到 Fireworks 服务提供方密钥。

创建调用方 API Key

创建可访问该模型别名的调用方 API Key。API 会生成密钥值,并且只返回一次明文:

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": "fireworks-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -r '.plaintext')

echo "$AISIX_API_KEY"

allowed_models 值通过模型 ID 引用模型。明文密钥只在此响应中返回,请安全保存。

新资源会自动投射到已关联的网关。

使用开源 AISIX 网关配置

导出上游凭证,并选择应用将发送给网关的调用方 API Key:

export FIREWORKS_API_KEY="YOUR_PROVIDER_API_KEY"
export CALLER_API_KEY="YOUR_CALLER_API_KEY"

为此服务提供方创建完整的声明式资源文件:

resources.yaml
_format_version: "1"

provider_keys:
- display_name: "fireworks-prod"
provider: "fireworks-ai"
adapter: "openai"
api_key: ${FIREWORKS_API_KEY}
api_base: "https://api.fireworks.ai/inference/v1"

models:
- display_name: "fireworks-gptoss-prod"
provider: "fireworks-ai"
model_name: "accounts/fireworks/models/gpt-oss-120b"
provider_key: "fireworks-prod"

api_keys:
- display_name: "fireworks-caller"
key_env: CALLER_API_KEY
allowed_models:
- "fireworks-gptoss-prod"

如果 AISIX 安装在本地,请在加载前校验文件:

aisix validate --resources resources.yaml

校验后,请在网关进程环境中提供所引用的环境变量并启动网关。仅当这些变量已可用于现有网关进程时才重新加载;否则,请使用更新后的环境重启网关。

如果使用 Docker,请调整开源 AISIX 网关快速入门中的校验和启动命令。挂载此 resources.yaml 文件,并在两个命令中使用 -e 传入该文件引用的每个环境变量。资源加载后,准备下文共用的验证请求:

export AISIX_API_KEY="$CALLER_API_KEY"

验证服务提供方连接

导出 AISIX 网关 Origin:

# 本地快速入门使用 http://127.0.0.1:3000
export AISIX_PROXY="YOUR_AISIX_GATEWAY_ORIGIN"

通过 AISIX 代理发送 Chat Completions 请求:

curl -sS -X POST "$AISIX_PROXY/v1/chat/completions" \
-H "Authorization: Bearer ${AISIX_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "fireworks-gptoss-prod",
"messages": [
{
"role": "user",
"content": "Say hello from Fireworks AI."
}
]
}'

网关会返回 OpenAI 兼容响应,并回显面向调用方的别名 fireworks-gptoss-prod。如果请求失败,请检查服务提供方密钥的 api_keyapi_base 中的 /inference/v1 路径,以及 model_name 中完整的 accounts/... 模型 ID。

了解 Token 限制参数改写

Fireworks 文档将 max_tokens 作为其 Chat Completions 路由的输出限制参数,而当前 OpenAI SDK 和许多 Agent 框架会发送 max_completion_tokens。AISIX 会处理这一差异:fireworks-ai 目录条目内置请求覆盖项,可将出站请求正文中的 max_completion_tokens 重命名为 max_tokens

此改写有以下三项重要影响:

  • 调用方无需使用 Fireworks 专用代码路径。发送 max_completion_tokens 的客户端到达 Fireworks 时,max_tokens 会设置为相同的值。
  • 如果同一个请求同时包含这两个字段,max_completion_tokens 的值会替换 max_tokens。较新的字段优先,因为它更可能是调用方有意设置的值。
  • 重命名适用于此服务提供方密钥所服务的每个标准化路由的出站正文,而不仅是 Chat Completions。服务提供方透传是例外,因为它会原样转发正文;在该路由上请发送 Fireworks 预期的字段名称。

对于省略该字段的请求,Fireworks 会应用自己的默认输出限制,因此长文本生成应设置显式限制。当前参数参考请参阅 Querying text models

警告

服务提供方密钥上提供的 request 配置块会替换内置配置块,而不是与其合并。如果为此服务提供方密钥添加自己的请求覆盖项,请同时重新声明 param_renames,否则该改写将停止应用:

{
"request": {
"param_renames": {
"max_completion_tokens": "max_tokens"
},
"default_headers": {
"X-Team": "platform"
}
}
}

对于开源 AISIX 网关,请将等效覆盖项添加到 resources.yaml 的服务提供方密钥中:

request:
param_renames:
max_completion_tokens: max_tokens

完整的覆盖配置结构请参阅服务提供方专用覆盖项

使用推理模型

Fireworks 提供两种互斥的推理控制方式,每种方式的支持情况取决于具体模型:

  • reasoning_effort,可接受的推理强度因模型而异,包括 lowmediumhigh
  • thinking 对象,其中 type 设置为 enabled,且 budget_tokens 至少为 1024

请求不能同时设置两者。AISIX 会将自己未建模的顶层请求字段原样转发到上游,因此任一种控制项都能不经修改地到达 Fireworks:

{
"model": "fireworks-gptoss-prod",
"messages": [{ "role": "user", "content": "Plan a cache invalidation strategy." }],
"reasoning_effort": "medium"
}

Fireworks 在 reasoning_content 中返回思维链,该字段已经是 AISIX 的规范字段。因此,此服务提供方不需要 response.reasoning_field 覆盖项:对于非流式响应,AISIX 会将该字段保留为 choices[0].message.reasoning_content;对于流式响应,则保留为 delta.reasoning_content。请查看 Reasoning,了解各模型接受的控制方式。

查看端点支持情况

Fireworks 支持的别名可用于下列路由。完整端点矩阵请参阅服务提供方兼容性

路由使用 fireworks-ai 服务提供方密钥时的行为
/v1/chat/completions支持,包括 stream: true
/v1/embeddings当目标模型为 Fireworks Embedding 模型时支持,因为 Fireworks 实现了 OpenAI 形态的 Embeddings 路由。请参阅 Embeddings and reranking
/v1/responses通过 Responses 桥接支持。只有配置的服务提供方为 openai 的模型才能原样转发到上游 Responses API,因此 Fireworks 请求会通过 Chat 适配器路径进行转换。
/v1/rerank不支持。重排序路由只接受 openaicoherejina 服务提供方值,因此即使 Fireworks 提供重排序 API,fireworks-ai 别名也会被拒绝。
/v1/images/generations不支持。该路由要求模型配置的服务提供方为 openai
/v1/videos不支持。该路由有自己的服务提供方允许列表,其中不包含 fireworks-ai
/passthrough/fireworks-ai/*支持 AISIX 未建模的服务提供方原生端点。

对于透传,AISIX 会将请求路径拼接到 api_base。由于 Fireworks 的 api_base 以 API 版本路径段结尾,以 v1/ 开头的透传路径会去重,因此 /passthrough/fireworks-ai/v1/<path>/passthrough/fireworks-ai/<path> 都会解析为 https://api.fireworks.ai/inference/v1/<path>。透传要求调用方 API Key 至少可以访问一个服务提供方值为 fireworks-ai 的模型。AISIX 会借用该模型的服务提供方密钥建立隧道,因此使用的凭证是关联到第一个匹配的允许模型的凭证,而不是通过路径指定的服务提供方密钥。请参阅服务提供方透传

后续步骤

你已将 AISIX 连接到 Fireworks AI,并验证了模型别名。接下来可阅读以下指南: