---
title: "工作原理"
description: "pirouter 的一个请求怎么走：API key 确定工作区与钱包，模型 ID 确定候选 provider，网关选出一个部署转发，失败时切换，结束后按实际用量扣费。附全站术语表。"
canonical: "https://pirouter.ai/zh/docs/how-it-works"
last-updated: "2026-10-17"
lang: "zh"
source: "content/docs/zh/(start)/how-it-works.mdx"
---

# 工作原理

pirouter 的一个请求怎么走：API key 确定工作区与钱包，模型 ID 确定候选 provider，网关选出一个部署转发，失败时切换，结束后按实际用量扣费。附全站术语表。

一个请求用 API key 找到工作区和钱包，用模型 ID 找到能服务这个模型的 provider，网关从中选一个部署转发；失败时换下一个 provider，请求结束后按实际用量从钱包扣费。

## 七个对象

| 对象       | 是什么                                 | 例子                            |
| -------- | ----------------------------------- | ----------------------------- |
| 工作区      | 账户的单位。API key、钱包、路由设置、用量与日志都属于一个工作区 | 注册时自动建的个人工作区                  |
| API key  | 调用 API 的凭证，属于一个工作区，以 `sk-pi-` 开头    | `$PIROUTER_API_KEY`           |
| 钱包       | 工作区的预付余额，每个请求从这里扣费                  | 控制台的 **Token 钱包**             |
| 厂商       | 造模型的公司，是模型 ID 的前半段                  | `openai`、`anthropic`、`google` |
| 模型       | 你在请求里写的 `vendor/model`              | `openai/gpt-6.1-sol`          |
| provider | 实际运行模型、回复请求的服务方                     | `anthropic`、`azure`           |
| 部署       | provider 下的一个模型实例，有自己的每分钟配额         | 某个 provider 在某个区域的一个部署        |

厂商和 provider 可以同名，但不是一层：`anthropic/claude-…` 的厂商是 Anthropic，服务它的 provider 可以是 `anthropic`，也可以是 `azure`。

## 一个请求怎么走

1. **鉴权**：网关读 `Authorization: Bearer` 里的 API key，确定工作区。
2. **预留费用**：按预估费用从钱包预留一部分余额，余额不够返回 `402`。
3. **找候选**：按模型 ID 找出能服务它的 provider，再按请求里的 `provider` 字段和工作区的路由设置收窄。
4. **选部署**：在候选之间按权重选一个，检查这个部署的配额，用满了返回 `429`。
5. **转发**：把请求发给这个部署。失败时换下一个 provider（故障切换）；所有 provider 都失败、而请求写了 `models` 时，换下一个模型（模型回退）。
6. **结算**：请求结束后按实际用量扣费，多预留的部分退回。

每一步的细节在各自的页面：[鉴权与 API key](https://pirouter.ai/zh/docs/authentication.md)、[定价与计费](https://pirouter.ai/zh/docs/guides/billing.md)、[Provider 路由](https://pirouter.ai/zh/docs/guides/routing.md)、[限流](https://pirouter.ai/zh/docs/api/rate-limits.md)、[模型回退](https://pirouter.ai/zh/docs/guides/fallbacks.md)。

## 术语表

文档里每个概念只用一个词：

| 统一写法           | 指什么                                | 不用的写法       |
| -------------- | ---------------------------------- | ----------- |
| 厂商（vendor）     | 造模型的公司                             | —           |
| provider       | 服务模型的一方                            | 供应商、服务商、上游  |
| 部署             | provider 下的一个模型实例                  | —           |
| 故障切换（failover） | 同一个模型换到另一个 provider                | 换一家、接手      |
| 模型回退（fallback） | 换到 `models` 里的下一个模型                | 备用          |
| API key        | 调用凭证，量词「一个」                        | 密钥、一把       |
| 零数据留存（ZDR）     | provider 不保存提示词与回复                 | 零留存         |
| trace ID       | 每个响应的 `X-Pi-Trace-Id`，报障时附上        | 追踪 ID、请求 ID |
| 图像             | 图像生成与编辑的输入输出                       | 图片、生图       |
| 端点             | 一个 API 路径，如 `/v1/chat/completions` | 接口          |
| 回复             | 模型的输出；服务的输出叫返回或响应                  | 答复、应答       |

## 控制台标签对照

控制台的中文标签和文档用词不完全一致。文档引用控制台时照界面原文加粗：

| 控制台标签               | 文档用词     |
| ------------------- | -------- |
| **供应商**             | provider |
| **创建密钥**、**API 密钥** | API key  |
| **Token 钱包**        | 钱包       |
| **Trace ID**        | trace ID |

## 下一步

- [快速开始](https://pirouter.ai/zh/docs/quickstart.md): 创建 key，充值，调通一个模型。
- [Provider 路由](https://pirouter.ai/zh/docs/guides/routing.md): 默认怎么选 provider，怎么改。
