Inferway
登录注册
跳到正文
对号入座

先挑你现在要完成的那件事

主路径

从零到一次验证过的请求

  1. 1. 注册账号。 免信用卡、无需邀请码。注册已开放,入口在 inferway.ai
  2. 2. 复制密钥。 第一次进入控制台时会自动创建一把 Default 密钥,只显示一次。之后随时在 API 密钥页轮换或新增。
  3. 3. 跑请求。 设置 $INFERWAY_API_KEY,运行下面的流式命令。
  4. 4. 确认成功。控制台 → 请求记录里核对状态、延迟、token 数与所用模型。

第一个请求

一条命令跑通流式请求bash
export INFERWAY_API_KEY="inferway_live_..."

curl "https://api.inferway.ai/v1/chat/completions" \
  -H "Authorization: Bearer $INFERWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "inferway/qwen3.8-27b",
    "stream": true,
    "messages": [{"role": "user", "content": "Say hello in one short sentence."}]
  }'
curl "https://api.inferway.ai/v1/chat/completions" \
  -H "Authorization: Bearer $INFERWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "inferway/qwen3.8-27b",
    "stream": true,
    "messages": [{"role": "user", "content": "Say hello in one short sentence."}]
  }'
流式

非流式请求经 CDN 转发,首字节大约 100 秒就会超时,所以长输出必须设 stream=true。短补全用非流式没问题。

就这样

你用的还是那套 Chat Completions 接口

  • Base URLhttps://api.inferway.ai/v1
  • API 密钥$INFERWAY_API_KEY
  • 模型inferway/qwen3.8-27b
复制给你的 AI 助手装 SDK、设 base_url 和模型 ID、从环境变量读密钥,再运行一个流式请求。指令里只有占位符,绝不含真实密钥。

响应结构

流式分片示例json
data: {
  "id": "chatcmpl_...",
  "object": "chat.completion.chunk",
  "model": "inferway/qwen3.8-27b",
  "choices": [
    {
      "index": 0,
      "delta": { "role": "assistant", "content": "Hello" },
      "finish_reason": null
    }
  ]
}

data: [DONE]

如果第一个请求没跑通

第一次失败大多是配置问题,改应用代码之前先核对这几项。

现象可能原因快速修复
401密钥缺失、已吊销、复制有误,或没在当前 shell 里 export。控制台 → API 密钥里重新复制一份,重试前先执行 echo $INFERWAY_API_KEY 确认。
404客户端指向了错误的 base URL,或把 /v1 拼了两次。base URL 用 https://api.inferway.ai/v1,请求路径 /chat/completions 只写一次。
429触发了账户额度、匿名试玩限额或单次请求大小限制。查看错误中的 dimension。单次大小超限请缩短输入或调低 max_tokens;其他限额按响应中的 Retry-After 等待。
504 / 超时非流式的长输出撞上了 CDN 约 100 秒的首字节超时。请求里加 stream=true。
直接替换配置

已经在用 OpenAI 客户端?

OpenAI 兼容的环境变量bash
# For OpenAI-compatible clients that read OpenAI env vars
export OPENAI_API_KEY="$INFERWAY_API_KEY"
export OPENAI_BASE_URL="https://api.inferway.ai/v1"
export INFERWAY_MODEL="inferway/qwen3.8-27b"

推理(reasoning tokens)

当前服务的模型默认不输出推理(thinking)token,需在请求中显式开启。

推理 token 按输出价计入输出 token,并出现在 usage.completion_tokens_details.reasoning_tokens 里。

可在单次请求中用 chat_template_kwargs.enable_thinking=true(OpenAI SDK 经 extra_body 传入)或 reasoning: {"enabled": true} 开启。

对话补全 - Python

官方 OpenAI Python SDK 可以对接任何 OpenAI 兼容的 base URL。换掉 base URL,密钥照旧。这种非流式写法适合短补全;长输出必须走流式。

Pythonpython
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.inferway.ai/v1",
    api_key=os.environ["INFERWAY_API_KEY"],
)

resp = client.chat.completions.create(
    model="inferway/qwen3.8-27b",
    messages=[{"role": "user", "content": "Say hello in one short sentence."}],
    max_tokens=64,
)

print(resp.choices[0].message.content)
SDK 与编程工具

接入你正在使用的工具

选择工具,查看接入方式与功能限制。配置会跟随页面顶部选择的模型。

安装 SDK(可选)

第一条 cURL 请求不需要任何依赖,准备把集成写进应用时再装 SDK。

Installbash
# Python
pip install openai

# TypeScript / Node.js
npm install openai

按工具查看接入指南

Pi

可接入

在 Pi 中使用 Inferway 聊天和处理代码任务。接入前,请确认账户已开通模型访问。

模型能力
支持工具调用
Inferway 接口
已开放/v1/chat/completions
在此工具中使用
聊天与代码任务
模型Qwen3.8 27B查看此模型

上下文 262,144 最大输出 131,072

将以下服务商合并到 ~/.pi/agent/models.json;若文件已存在,保留原有服务商。Pi 的 openai-completions 适配器使用 Chat Completions,并不是旧的 /completions 接口。

先在启动客户端的终端中设置 INFERWAY_API_KEY。不要把密钥直接写进配置。

~/.pi/agent/models.jsonjson
{
  "providers": {
    "inferway": {
      "baseUrl": "https://api.inferway.ai/v1",
      "api": "openai-completions",
      "apiKey": "$INFERWAY_API_KEY",
      "models": [
        {
          "id": "inferway/qwen3.8-27b",
          "name": "Inferway",
          "reasoning": false,
          "input": [
            "text"
          ],
          "contextWindow": 262144,
          "maxTokens": 32768,
          "compat": {
            "supportsDeveloperRole": false,
            "supportsReasoningEffort": false,
            "maxTokensField": "max_tokens"
          }
        }
      ]
    }
  }
}
Pibash
pi --provider inferway --model 'inferway/qwen3.8-27b'

确认接入成功

  1. 1使用配置的服务商和模型开启新会话,发送“只回复:连接成功”,确认收到文本且没有 API 错误。
  2. 2打开控制台 → Requests,查看请求状态与 token 用量。
  3. 3处理代码任务时,让客户端读取一个非敏感文件。应用修改前,请先检查它提出的改动。
设置 Key、完整步骤与排错

开始之前

先按官方说明安装客户端。本文的 Pi 指 pi-mono coding agent;Hermes 指 Nous Research 的 Hermes Agent。

Inferway 账户激活后,从控制台 → API keys 获取 Key。建议为该客户端使用独立 Key,并确认允许的模型和消费上限。live、test 前缀共用推理与计费流程;test 是环境标签,不代表免费或模拟推理。

Inferway 地址需要 Inferway Key;OpenRouter Key 用于 OpenRouter,不能直接用于此地址。

将 Key 保存在客户端凭证存储或本机环境中,不要粘贴到提示词、截图或提交到仓库的配置文件。终端示例适用于 macOS / Linux 的 bash、zsh。

在当前终端设置 Key

下面的交互输入会隐藏 Key,并避免将其写入命令历史。请从同一个终端启动客户端;另外打开的应用可能无法继承该变量。

INFERWAY_API_KEYbash
printf 'Inferway API key: '
IFS= read -r -s INFERWAY_API_KEY
printf '\n'
export INFERWAY_API_KEY

确认地址和模型

使用完整模型 ID inferway/qwen3.8-27b。Base URL 只包含一次 /v1,不要在 Base URL 设置中添加 /chat/completions。确认下方响应中包含该模型 ID。

List modelsbash
curl --fail-with-body --silent --show-error --max-time 30 \
  'https://api.inferway.ai/v1/models' \
  -H "Authorization: Bearer $INFERWAY_API_KEY"

免费账户与长任务

注册免费账户:单次输入预算 131,072 tokens(128K),输出最多 32,768 tokens(32K);60 次/分钟,并发 2。不设每分钟 token 限制。

每日输入 5,000,000、输出 500,000、合计 5,500,000 tokens,UTC 00:00 重置。同一账户的 API Key 共享每个模型的额度。

输入预算包含系统提示词、历史对话和工具内容,按保守估算校验,实际可提交长度随内容而异。超过 4,096 tokens 的输出请使用流式请求。

Pi 使用流式响应,免费账户的 maxTokens 请保持在 32,768 以内。非交互任务请将标准输入重定向到 /dev/null。若提示单次请求过大,请压缩对话;等待不会改变单次限制。

Taskbash
pi --provider inferway --model 'inferway/qwen3.8-27b' -p 'Review this project and run its tests' </dev/null

请求失败时

认证失败:检查 Key 是否存在、有效且获准使用该模型,并从设置变量的终端重新打开客户端。排错时不要输出完整 Key。

地址或模型错误:检查是否重复添加 /v1,使用公布的完整模型 ID,并确认客户端选择 Chat Completions。请求发往 /responses 或 /completions 时,换 Key 无法解决。

额度或超时:检查钱包余额和 Key 限额,按 Retry-After 等待,并缩短输入或降低输出上限。长输出保持流式传输,排错期间避免 Agent 连续重试。

联系支持时提供客户端版本、模型 ID、请求时间和可用的 request ID;请遮盖凭证和源码。

撤销接入:在控制台吊销此工具的 Key,并移除客户端中的 Inferway 服务商配置。

独立指南

MCP(Model Context Protocol)

已上线

MCP 端点已上线。把支持 MCP 的客户端指向下面的服务器地址,用同一把 API Key 鉴权即可;工具走标准协议,零保留规则同样适用。

MCP 服务器入口json
{
  "mcpServers": {
    "inferway": {
      "url": "https://api.inferway.ai/v1/mcp/sse",
      "headers": {
        "Authorization": "Bearer $INFERWAY_API_KEY"
      }
    }
  }
}

上生产检查清单

  • 密钥只留在服务端 绝不要把 inferway_live_… 密钥发到浏览器、移动端或公开仓库。
  • 长输出走流式 任何可能超过 CDN 首字节窗口的输出都必须设 stream=true。
  • 给 max_tokens 设上限。 按路由设定输出上限,成本和延迟才可预期。
  • 只监控元数据 记录状态、延迟、token 数与模型;要保住端到端的零保留,就别记录提示词或补全内容。
透明度清单

把流量接到 Inferway 之前,先看透明度中心,再看状态页与原始压测报告。

端点参考

OpenAI 兼容的那条路径保持小而可预期;账户、账单、用量与 agent 操作走另外一组第一方端点。

OpenAI 兼容 API/v1/chat/completions

对话、工具调用、JSON 模式与流式,用 OpenAI SDK 直接打这条。

控制台 API/v1/keys · /v1/billing · /v1/usage · /v1/requests

服务端的密钥、钱包、用量与请求元数据流程走这条。

端点方法用途
/v1/chat/completionsPOSTOpenAI 兼容的对话补全
/v1/modelsGET列出已发布模型,含能力与价格元数据
/v1/mcp/sse · /v1/mcp/messagesGET · POSTMCP 服务端点(已上线)
/v1/keysGET / POST / DELETE管理直连 API 密钥
/v1/billingGET钱包摘要与近期用量
/v1/billing/transactionsGET钱包账本流水
/v1/billing/checkoutPOST创建 Stripe Checkout 充值会话
/v1/usageGET按时间窗口聚合的用量
/v1/requestsGET请求元数据历史(不含内容)
/healthGET网关与后端健康状态
/v1/statsGET状态页公开数据

公开支持的端点是 POST /v1/chat/completions 和 GET /v1/models。旧版 POST /v1/completions 不提供(404),请改用 chat completions。POST /v1/messages(Anthropic 格式)在本部署未开启,在另行通知前一律返回 404。

模型

1

选择模型,查看上下文、输出限制与工具支持。API 示例和工具配置会使用同一个模型。

字段当前值怎么用
推荐模型inferway/qwen3.8-27b对话补全里默认的 model 值。
上下文窗口262,144模型的上下文窗口;账户输入预算可能更低。
最大输出131,072模型的输出上限;未设 max_tokens 时默认 32,768,账户输出限额可能更低。
精度NVFP4标称精度就是实际服务精度,负载下不降级。
所有数值取自模型 catalog

鉴权

鉴权请求头http
Authorization: Bearer $INFERWAY_API_KEY
  • API 密钥 密钥统一以 inferway_live_… 开头,签发给服务端负载使用。
  • 浏览器应用 别把直连密钥暴露在客户端,请求走你自己的后端代理。

错误码

Inferway 返回 OpenAI 兼容的错误对象:{"error": { "type": "...", "message": "...", "code": "..." }}

付费请求在派发前预留 prompt 估价 × 输入价 + max_tokens × 输出价。可用余额耗尽时,符合条件的请求可使用注册免费额度;免费请求不扣钱包。402 表示请求在派发前被拒绝,不产生费用。余额以 4 位小数展示;单价以实时价目表为准。

错误码目录(实时)

/v1/chat/completions 与 /v1/agent/chat 可能返回的全部错误码,直接取自网关自己的目录,不是抄写。每一行都带 HTTP 状态、是否可以安全重试,以及 API 实际发出的原文。结账、账单与密钥管理相关的端点会返回它们各自的错误码,不在本表中。

codeHTTP可否重试含义
authentication_error401不可Authentication failed.
conflict409不可A conflict occurred with the current state of the resource.
free_quota_exhausted429可以,先退避Free quota exhausted. Please retry later.
free_tier_unavailable503可以,先退避The free tier is temporarily unavailable; please retry shortly.
internal_error500不可网关内部错误
internal_tool_failure500不可An internal tool error occurred.
invalid_request400不可请求格式错误或参数非法
malformed_upstream502不可Received an invalid response from the upstream service.
payment_required402不可Payment required. Add credit at https://inferway.ai/console/billing
rate_limited429可以,先退避超出免费使用或并发限额
service_unavailable503不可Service outage in progress. Live status: https://inferway.ai/status
upstream_rejected422不可The upstream service rejected the request.
upstream_unavailable503可以,先退避The service is temporarily unavailable.
错误码、状态与重试策略取自 GET /v1/public/errors

限速与配额

额度拒绝返回 HTTP 429。查看错误码、window 和 dimension;有 Retry-After 时按其等待。单次请求大小超限需要缩短输入或调低 max_tokens,等待不会改变此限制。

对象限额窗口
匿名试玩60每分钟(每 IP)
匿名试玩300每小时
匿名试玩1,000每天(UTC)
账户有余额后按账户自身限额免费上限不再适用,可在控制台查看

注册免费账户

注册免费账户:单次输入预算 131,072 tokens(128K),输出最多 32,768 tokens(32K);60 次/分钟,并发 2。不设每分钟 token 限制。

每日输入 5,000,000、输出 500,000、合计 5,500,000 tokens,UTC 00:00 重置。同一账户的 API Key 共享每个模型的额度。

输入预算包含系统提示词、历史对话和工具内容,按保守估算校验,实际可提交长度随内容而异。超过 4,096 tokens 的输出请使用流式请求。

  • X-RateLimit-Limit. 当前 RPM 窗口的配额
  • X-RateLimit-Remaining. 当前窗口内剩余的请求数
  • X-RateLimit-Reset. 当前窗口重置的 Unix 时间戳。
  • Retry-After. 收到 429 后应等待的秒数。

运营限制

  • 并发上限 注册免费账户允许 2 个并发请求;付费账户按账户与密钥策略执行。
  • 数据保留 内容零保留;仅保留元数据用于计费与可靠性。

OpenAI 兼容性

下面这张表写的是网关今天实际怎么处理每个参数 -- 不是我们希望它怎么处理。

参数状态说明
model支持转发前会重写成后端的模型 ID。
messages支持必填且非空,校验后转发给推理引擎。
stream支持流式路径已实现;自动注入 stream_options.include_usage。
temperature支持透传给推理引擎,并记入计费元数据。
top_p支持列于 supported_sampling_parameters,整体透传。
max_tokens支持透传给推理引擎。
stop支持列于 supported_sampling_parameters,转发给推理引擎。
n未验证网关不做处理,原样转发;实际行为取决于后端。
logprobs未验证网关不做处理,随原始请求体转发,未对线上响应做过验证。
tools支持supported_features 中声明 ["tools","json_mode"],转发给推理引擎。
response_format支持网关声明 json_mode;字段随原始请求体转发。
图像输入未验证模型元数据声明 input_modalities: ["text"];网关只为 CSAM 哈希检查解析 image_url,推理侧行为未验证。

思考默认关闭。需要时请在请求里传 "reasoning": {"enabled": true},并把该请求的 max_tokens 预算留到约 16k 以上——预算太小会被思考过程占满,正文一个字都看不到。

最小示例应用

最小示例应用python
#!/usr/bin/env python3
"""Minimal Inferway chat sample. Requires: pip install openai"""
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.inferway.ai/v1",
    api_key=os.environ["INFERWAY_API_KEY"],
)

messages = [{"role": "system", "content": "You are a helpful assistant."}]

while True:
    user = input("You: ")
    if not user:
        break
    messages.append({"role": "user", "content": user})
    stream = client.chat.completions.create(
        model="inferway/qwen3.8-27b",
        messages=messages,
        stream=True,
    )
    reply = ""
    print("Assistant: ", end="", flush=True)
    for chunk in stream:
        if not chunk.choices:
            continue
        piece = chunk.choices[0].delta.content
        if piece:
            reply += piece
            print(piece, end="", flush=True)
    print("\n")
    messages.append({"role": "assistant", "content": reply})

下一步