大模型衍生工具————代理接口

Posted by     "虞天" on Wednesday, July 3, 2024

基于令牌的API代理服务器

这个基于Flask的应用程序是一个代理服务器,设计用于管理和路由到大型语言模型(LLM)API的请求,具备基于令牌的请求限制和身份验证。主要功能包括生成、列出和删除令牌,以及在确保令牌限制得到遵守的情况下代理到LLM API的请求。

核心功能

1. 令牌管理

  • 生成令牌:

    • 端点: /generate_token
    • 方法: POST
    • 描述: 生成一个新的令牌,并指定该令牌允许的最大请求数。每个令牌的最大请求数不能超过10。生成的令牌及其请求限制将被持久存储。
    • 认证: 需要管理员密码来生成令牌。
  • 列出令牌:

    • 端点: /list_tokens
    • 方法: POST
    • 描述: 返回所有已生成的令牌及其对应的请求数限制。
    • 认证: 需要管理员密码来列出令牌。
  • 删除令牌:

    • 端点: /delete_token
    • 方法: POST
    • 描述: 从系统中删除指定的令牌。
    • 认证: 需要管理员密码来删除令牌。

2. 基于令牌的API请求认证

  • 令牌认证:
    • 装饰器: @token_required
    • 描述: 确保只有有效的令牌才能访问被代理的API。每次使用令牌的请求都会被计数,如果令牌超过其请求限制,后续请求将被拒绝。

3. 代理到LLM API的请求

  • 代理请求:
    • 端点: /v1/chat/completions
    • 方法: POST
    • 描述: 将请求代理到LLM API。服务器处理流式请求和非流式请求。
    • 令牌使用: 请求会基于提供的令牌进行认证和限制。每次成功请求后,令牌的请求计数会增加,请求处理完毕后计数会减少。

4. 线程安全

  • 线程安全操作:
    • 使用线程锁(threading lock)确保令牌计数操作的线程安全,防止并发环境中的竞态条件。

配置

应用程序依赖于外部配置文件来获取各种参数:

  • 日志配置: 日志设置在运行时加载。
  • 服务器配置: 包含Flask应用程序运行的IP和端口。
  • LLM API配置: 请求被代理到的LLM API的URL。
  • 令牌配置: 令牌管理的参数,包括管理员密码和用于持久存储的令牌文件。

运行应用程序

要运行此应用程序,确保所有配置文件已正确设置,然后通过执行脚本启动Flask服务器。服务器将通过配置的IP和端口进行访问。

python3 llm_proxy.py

错误处理

应用程序包括基本的错误处理,确保:

  • 带有缺失或无效令牌的请求将被适当地拒绝。
  • 代理请求过程中发生的内部服务器错误将被记录,并向客户端返回一个通用错误消息。

这个代理服务器适用于需要控制访问LLM API的场景,提供可定制的基于令牌的速率限制和安全的令牌管理。

「真诚赞赏,手留余香」

YuTian Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付