# 《WaLiAPI - 本地 LLM API 网关》第1-6节:API转发代理核心

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

大家好,我是技术UP主小傅哥。

前面几节我们准备好了各个"零件":数据库、适配器、调度器。这一节我们把它们组装成一台完整的"机器"——Proxy 转发代理核心。它是一次请求的"总指挥",负责编排从接收请求到返回响应的全部流程。

# 一、本章诉求

  1. 设计非流式请求的完整处理链路
  2. 接入安全扫描与脱敏(安全模块的集成点)
  3. 实现基于重试配置的故障转移
  4. 实现请求日志记录与配额扣减
  5. 实现响应侧的安全扫描合并

# 二、请求处理全链路设计

一次非流式请求经过 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

这个流程体现了网关的核心价值:一次请求,多个关注点(安全、调度、重试、日志、配额)在此汇聚编排