# 《WaLiAPI - 本地 LLM API 网关》第1-6节:API转发代理核心
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
大家好,我是技术UP主小傅哥。
前面几节我们准备好了各个"零件":数据库、适配器、调度器。这一节我们把它们组装成一台完整的"机器"——Proxy 转发代理核心。它是一次请求的"总指挥",负责编排从接收请求到返回响应的全部流程。
# 一、本章诉求
- 设计非流式请求的完整处理链路
- 接入安全扫描与脱敏(安全模块的集成点)
- 实现基于重试配置的故障转移
- 实现请求日志记录与配额扣减
- 实现响应侧的安全扫描合并
# 二、请求处理全链路设计
一次非流式请求经过 Proxy 层的完整生命周期:
┌─────────────────────────────────────────────────────────────┐
│ 1. 解析请求模型(body.model) │
│ 2. 安全扫描请求体 ──→ Block? ──是──→ 记日志 + 返回 451 │
│ │否 │
│ 3. 脱敏处理(如启用) │
│ 4. 查询启用渠道(Repository) │
│ 5. 调度器构建故障转移队列(Dispatcher) │
│ 6. for 渠道 in 队列.take(最大尝试次数): │
│ ├─ 渠道转配置(channel_to_config) │
│ ├─ 获取适配器(get_adaptor) │
│ ├─ 转发请求 ──→ 成功? ──是──→ 响应安全扫描 │
│ │ │ 记录日志 + 扣配额 + 返回 │
│ │ 否 │
│ └─ 记录失败日志,继续下一个 │
│ 7. 全部失败 → 返回 502 │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
这个流程体现了网关的核心价值:一次请求,多个关注点(安全、调度、重试、日志、配额)在此汇聚编排。

