proxy-llm 功能完善路线图

该组件为基于 Go 构建的高性能 HTTP 反向代理,专用于将客户端请求透明转发至兼容 OpenAI 或 Anthropic 协议的上游服务。在转发的同时,代理以无侵入方式完整捕获每次会话的请求与响应,包括流式传输中产生的所有数据分片,并以 JSONL 格式实时持久化至本地存储。这一机制使每一轮交互均可被精确追溯,从而满足合规审计、行为分析及训练语料构建等需求。系统还提供可选的按日历日合并导出功能,可将当日全部会话记录重组织为统一的行式数据集,直接服务于监督微调、偏好对齐等训练数据的准备工作

proxy-llm 功能完善路线图

概述

本文档基于业界主流 LLM 代理服务(Ollama、vLLM、llama.cpp、LiteLLM、Open WebUI)的功能对标,详细列出 proxy-llm 当前缺失或需要完善的功能模块。


一、请求路由与负载均衡

1.1 负载均衡策略(缺失)

现状:当前项目仅通过请求体中的 model 字段选择后端,不支持同一模型的多节点负载分担。

竞品参考

需要实现的功能

# 建议的配置格式
load_balancing:
  strategy: "round_robin"  # round_robin, least_connections, weighted, random
  health_check_interval: 30s
  failover_timeout: 10s
  nodes:
    - url: "http://backend1:8080"
      weight: 1
      priority: 1
    - url: "http://backend2:8080"
      weight: 1
      priority: 2  # 备用节点

实现要点


1.2 请求重试与退避(部分缺失)

现状:配置中有 max_retries 字段,但代理层未实现重试逻辑。

需要实现的功能


二、速率限制与流量控制

2.1 速率限制(配置存在但未实现)

现状proxy.rate_limit 配置项存在,值为 0(无限制),但代码中无任何限流逻辑。

竞品参考

需要实现的功能

rate_limiting:
  global:
    requests_per_minute: 100
    tokens_per_minute: 50000
  per_user:
    enabled: true
    requests_per_minute: 30
    tokens_per_minute: 10000
  per_model:
    enabled: true
    gpt-4:
      requests_per_minute: 50
    claude-3:
      requests_per_minute: 40
  strategies:
    overflow: "reject"  # reject, queue, fallback
    queue_max_size: 1000
    queue_timeout: 30s

实现要点


2.2 并发连接限制(缺失)

现状:HTTP Transport 配置了 MaxIdleConnsMaxIdleConnsPerHost,但无并发请求限制。

需要实现的功能


三、缓存层

3.1 响应缓存(完全缺失)

现状:每次请求都会转发到上游,无任何缓存机制。

竞品参考

需要实现的功能

cache:
  enabled: true
  backend: "memory"  # memory, redis, memcached
  redis:
    url: "redis://localhost:6379"
    db: 0
  ttl: 3600  # 秒
  max_size: 10000  # 条目数
  key_generation:
    # 缓存键生成策略:基于请求内容
    include_headers: ["Authorization"]
    normalize: true  # 归一化请求参数
  scope:
    cache_by_model: true
    cache_by_system_prompt: true
    cache_by_tools: true
  hit_response:
    headers:
      X-Cache: "HIT"
    latency_improvement_tracking: true

缓存键生成逻辑

  1. 哈希 model + messages + system_prompt + temperature + max_tokens
  2. 忽略 stream 参数(缓存原始结果)
  3. 忽略 request_id 等唯一标识

命中缓存时


3.2 KV Cache 复用(缺失)

现状:每次请求从头开始生成。

需要实现的功能


四、安全与认证

4.1 认证体系(仅基础实现)

现状:仅支持简单的 Bearer Token 认证,不支持 OAuth、API Key 轮换等。

需要实现的功能

auth:
  enabled: true
  providers:
    - type: "api_key"
      header: "X-API-Key"
      keys:
        - key: "${API_KEY_1}"
          user_id: "user_1"
          permissions: ["chat", "completions"]
          rate_limit: 100
        - key: "${API_KEY_2}"
          user_id: "user_2"
          permissions: ["chat"]
          rate_limit: 50
    - type: "jwt"
      secret: "${JWT_SECRET}"
      issuer: "proxy-llm"
      audience: "clients"
      expiration: 24h
    - type: "oauth2"
      provider: "github"  # github, google, oidc
      client_id: "${OAUTH_CLIENT_ID}"
      client_secret: "${OAUTH_CLIENT_SECRET}"
      scopes: ["openid", "profile", "email"]
  mfa:
    enabled: false
    provider: "totp"  # totp, sms

4.2 输入验证与过滤(缺失)

现状:请求体直接透传,无输入验证。

需要实现的功能


4.3 审计日志(部分缺失)

现状:请求/响应被记录到 JSONL,但无独立的安全审计日志。

需要实现的功能


五、可观测性增强

5.1 分布式追踪(缺失)

现状:有 request_idcall_id,但未集成分布式追踪。

需要实现的功能

tracing:
  enabled: true
  provider: "opentelemetry"  # opentelemetry, jaeger, zipkin
  opentelemetry:
    endpoint: "http://otel-collector:4317"
    sampling_rate: 0.1
    resource_attributes:
      service.name: "proxy-llm"
      service.version: "1.0.0"
  span_attributes:
    include_request_id: true
    include_model: true
    include_tokens: true

追踪维度


5.2 指标增强(部分缺失)

现状:基本的请求计数和延迟指标。

需要补充的指标

指标类型 指标名称 说明
缓存 cache_hits_total 缓存命中次数
缓存 cache_misses_total 缓存未命中次数
缓存 cache_hit_ratio 缓存命中率
速率限制 rate_limit_rejected_total 被速率限制拒绝的请求数
重试 retries_total 重试次数
重试 retries_by_error_total 按错误类型统计的重试
并发 active_requests_gauge 当前活跃请求数
连接 upstream_connection_errors_total 上游连接错误数
流式 streaming_duration_seconds 流式响应持续时间
格式转换 format_conversion_errors_total 格式转换错误数

5.3 健康检查增强(部分缺失)

现状:仅返回 OK 字符串。

需要实现的功能

health:
  endpoints:
    - path: "/health"
      type: "liveness"
    - path: "/ready"
      type: "readiness"
    - path: "/health/verbose"
      type: "verbose"
  upstream:
    check_interval: 60s
    timeout: 10s
    failure_threshold: 3
    success_threshold: 2
  verbose:
    show_upstream_status: true
    show_cache_status: true
    show_rate_limit_status: true

就绪检查


六、流式处理增强

6.1 流式缓冲控制(缺失)

现状:SSE 流直接透传,无缓冲控制。

需要实现的功能


6.2 流式预处理(缺失)

现状:流式数据直接转发。

需要实现的功能


七、数据存储增强

7.1 存储后端多样化(缺失)

现状:仅支持本地文件系统 JSONL 存储。

需要实现的功能

storage:
  backend: "filesystem"  # filesystem, s3, postgres, elasticsearch, mongodb
  filesystem:
    directory: "./data"
    compress: true
    rotate: "daily"
  s3:
    bucket: "llm-data"
    region: "us-east-1"
    prefix: "logs/"
    credentials:
      access_key: "${AWS_ACCESS_KEY_ID}"
      secret_key: "${AWS_SECRET_ACCESS_KEY}"
  elasticsearch:
    url: "http://localhost:9200"
    index: "proxy-llm-{date}"
    bulk_size: 1000
    flush_interval: 5s
  postgres:
    dsn: "${DATABASE_URL}"
    table: "request_logs"
    batch_size: 500
    flush_interval: 10s

7.2 数据生命周期管理(缺失)

现状:通过 rotate 按日期组织,但无自动清理。

需要实现的功能


7.3 数据导出增强(部分缺失)

现状:每日导出为单一 JSONL 文件。

需要实现的功能


八、模型管理增强

8.1 动态模型发现(缺失)

现状:模型配置需要在启动时静态配置。

需要实现的功能


8.2 模型路由策略(缺失)

现状:简单通过 model 字段匹配。

需要实现的功能

model_routing:
  enabled: true
  strategies:
    - name: "cost_optimized"
      description: "根据成本选择最优模型"
      rules:
        - condition: "prompt_tokens < 1000"
          prefer: "fast_cheaper_model"
        - condition: "requires_reasoning"
          prefer: "strong_reasoning_model"
    - name: "latency_optimized"
      description: "根据延迟要求选择模型"
      rules:
        - condition: "max_latency < 1s"
          prefer: "fastest_model"
  fallback:
    enabled: true
    default_model: "fallback_model"
    retry_on_failure: true

8.3 模型性能监控(缺失)

现状:无模型性能对比。

需要实现的功能


九、插件与扩展系统

9.1 中间件系统(缺失)

现状:仅有 CORS 和认证中间件。

需要实现的功能

middleware:
  - name: "request_modifier"
    enabled: true
    config:
      add_headers:
        X-Proxy-Version: "1.0.0"
      modify_model:
        rules:
          - pattern: "gpt-4-turbo"
            replace: "gpt-4-1106-preview"
  - name: "response_transformer"
    enabled: true
    config:
      strip_fields: ["_meta", "debug_info"]
      add_fields:
        proxy_timestamp: "{now}"
  - name: "usage_analytics"
    enabled: true
    config:
      batch_size: 100
      flush_interval: 30s
      destination: "clickhouse"
  - name: "content_filter"
    enabled: true
    config:
      provider: "custom"  # custom, openai_moderation, together_ai
      model: "text-moderation-stable"
      action: "block"  # block, warn, replace

9.2 Hook 系统(缺失)

现状:无事件钩子。

需要实现的功能


十、Web UI 增强

10.1 当前仪表盘功能

现状/usage/api/usage/summary 提供基本的 Token 使用统计。

需要补充的功能

功能 优先级 说明
实时请求监控 P0 显示当前正在处理的请求
请求详情查看 P0 点击查看完整请求/响应
模型性能对比 P1 不同模型的延迟/质量对比
费用趋势图 P1 按时间维度的费用趋势
异常检测 P1 自动检测异常请求模式
用户行为分析 P2 不同用户的使用模式
模型推荐 P2 基于使用场景推荐模型
请求回放 P2 重新发送历史请求

十一、高可用与部署

11.1 多实例协调(缺失)

现状:单实例设计,无集群支持。

需要实现的功能


11.2 Kubernetes 支持(缺失)

现状:无 K8s 原生支持。

需要实现的功能


11.3 配置热更新(缺失)

现状:配置修改需要重启服务。

需要实现的功能


十二、性能优化

12.1 连接复用优化(部分缺失)

现状:每个模型创建独立的 HTTP Client,但无连接池监控。

需要实现的功能


12.2 内存优化(部分缺失)

现状:请求体完整读入内存。

需要实现的功能


12.3 异步处理(部分缺失)

现状:日志写入为同步操作。

需要实现的功能


十三、安全增强(续)

13.1 TLS 增强(部分缺失)

现状:支持 TLS 但配置简单。

需要实现的功能


13.2 数据加密(缺失)

现状:存储的数据无加密。

需要实现的功能


十四、可移植性与标准化

14.1 OpenTelemetry 集成(缺失)

现状:无标准可观测性集成。

需要实现的功能


14.2 API 标准化(部分完成)

现状:支持 OpenAI 和 Anthropic 格式。

需要补充的功能


十五、功能优先级矩阵

功能模块 优先级 工作量估计 业务价值
速率限制实现 P0
响应缓存 P0
分布式追踪 P1
指标增强 P1
输入验证 P1
存储后端多样化 P1
模型路由策略 P2
插件系统 P2
多实例协调 P2
Kubernetes 支持 P2
KV Cache 复用 P3
流式预处理 P3

附录:竞品功能对比

功能 proxy-llm LiteLLM Ollama vLLM Open WebUI
多提供商支持
格式转换
流式处理
速率限制
响应缓存
负载均衡
分布式追踪
认证体系 基础
数据导出
Web UI 基础
插件系统
Kubernetes