Skip to content

架构概览

AIClient-2-API 项目提供一个统一的 API 服务,旨在兼容不同的主流大型语言模型(LLM),包括 Google Gemini、OpenAI、Anthropic Claude、Grok 等。其核心架构采用模块化设计,重点围绕协议转换、账号池调度和插件扩展。

核心模块组成

AIClient-2-API 的架构由以下关键层次组成:

1. API 服务层 (src/services/)

  • api-server.js: 整个服务的入口,负责 HTTP 服务的启动和基础路由。
  • api-manager.js: 统一管理 API 路由映射和端点分配。
  • ui-manager.js: 负责 Web 管理界面的渲染与交互。

2. 核心调度与管理 (src/core/ & src/services/)

  • config-manager.js: 集中式配置加载、验证和动态合并。
  • service-manager.js: 服务实例化工厂,支持模型级别的 Fallback 逻辑。
  • plugin-manager.js: 插件系统核心,支持在请求生命周期的关键点(如响应分块)注入自定义逻辑。
  • provider-pool-manager.js: (位于 src/providers/) 账号池管理,实现负载均衡、故障转移和凭证自动切换。

3. 协议转换层 (src/converters/ & src/convert/)

  • ConverterFactory.js: 转换器工厂,采用单例模式管理不同协议的转换实例。
  • BaseConverter.js: 抽象基类,定义了请求、响应、流式分块和模型列表的统一转换接口。
  • strategies/: 存放具体的协议实现(如 OpenAIConverterClaudeConverter 等)。

4. 服务适配层 (src/providers/)

  • adapter.js: 实现 ApiServiceAdapter 抽象层,封装底层 API 调用的共性逻辑。
  • 具体提供商核心: openai-core.jsclaude-core.jsgemini-core.js 等,负责实际的 HTTP 交互和身份验证。

5. 通用工具层 (src/utils/)

  • common.js: 核心工具库,包含请求体解析、统一错误处理、重试逻辑和授权检查。
  • provider-strategies.js: 提供商策略工厂,处理模型提取、系统提示词管理等逻辑。
  • logger.js: 统一的日志记录系统。

请求处理流程

mermaid
graph TD
    A[HTTP 客户端] --> B[api-server.js]
    B --> C[request-handler.js]
    C --> D{协议解析}
    D -->|请求转换| E[converters/ConverterFactory]
    E --> F[service-manager.js]
    F --> G{账号池调度}
    G --> H[providers/adapter.js]
    H --> I[具体供应商 Core]
    I --> J[外网 LLM API]
    J --> K{结果转换}
    K --> L[converters/ConverterFactory]
    L --> M[HTTP 响应]
    
    subgraph 插件钩子
    M -.-> N[PluginManager: onContentGenerated]
    end

核心设计理念

  1. 协议中立性: 内部逻辑尽可能与特定协议脱钩,通过转换层实现“输入任意,输出一致”。
  2. 高可用性: 账号池管理器能自动检测并屏蔽失效凭证,确保服务不因单点账号失效而中断。
  3. 动态性: 配置支持实时刷新,策略模式允许根据请求的模型名称动态选择最佳的适配器。
  4. 可扩展性: 开发者可以通过添加新的 Converter 策略或编写插件来快速增强功能。