文章

使用Flask框架搭建大模型API key管理平台

0. 搭建背景

目前大模型众多,并且很多模型提供了多种付费模式。比如,ChatGPT和Claude都提供了20美元包月的价格,同时也开放API进行按量收费。笔者在此建议各位根据以下情况进行选择:

  1. 经常使用,并且经常被使用次数限制(如超过GPT-4的3小时50条限制),使用20美元包月最划算;
  2. 经常使用,但使用次数达不到限制,同时没有太多代码能力,建议找个搭子合伙开20美元包月最划算;
  3. 经常使用,但使用次数达不到限制或者经常被限制,同时也有一定代码能力,建议使用API并套用ChatGPT自己进行部署的方式最划算。

如果是使用20美元包月,最简单的办法就是注册美区苹果账户并下载ChatGPT APP同时开包月即可。

如果是使用API,使用官方API最为简单,但最头疼的是官方API严格封禁了国内开发者,并且支付方式只支持信用卡支付。因此,大部分开发者都会使用云服务商提供的API,比如Azure提供的OpenAI,AWS提供的Claude。

使用API最令人头疼的问题莫过于管理密钥。一旦丢失,损失几乎无上限。所以,需要定时刷新密钥,防止密钥丢失造成的损失,同时也需要时刻掌握消耗情况等。Azure官方网站的实际体验并不是很好,这就是笔者希望做的工具:能够在Azure和AWS提供的API接口上包一层,能够在自动化管理的同时,记录各种关键信息等。

1. 工具设计与简介

工具使用Flask框架,使用SQLite和JSON管理信息。

1.1 Flask框架简介

Flask是一个轻量级的Python Web框架,以其简单易用和灵活性著称。它提供了丰富的扩展库,允许开发者根据需求自由选择和集成不同的功能模块。Flask的路由系统灵活且强大,能够方便地处理各种HTTP请求。

该工具中,笔者选择Flask作为主要框架,主要因为以下几点原因:

  1. 轻量级:Flask本身非常轻量,仅包含最基本的功能,非常适合小型项目和快速开发。
  2. 灵活性:Flask的扩展库丰富,能够根据项目需求自由选择和集成。
  3. 社区支持:Flask有着广泛的社区支持,能够方便地找到各种教程和问题解决方案。

1.1.2 工具代码基本结构

采用典型的使用Flask开发Python Web应用的代码结构:

1
2
3
4
5
6
7
8
9
10
11
project_root/

├── app/
   ├── __init__.py
   ├── models.py
   ├── routes.py
   └── services.py

├── config.py
├── run.py
└── requirements.txt

展开

  1. app/init.py:

    1. 初始化Flask应用
    2. 配置数据库
    3. 注册蓝图(如果使用)
  2. app/models.py:

    1. 定义数据库模型
    2. 使用ORM(如SQLAlchemy)来定义表结构
  3. app/routes.py:

    1. 定义API路由
    2. 处理HTTP请求
    3. 调用相应的服务函数
  4. app/services.py:

    1. 包含业务逻辑
    2. 与数据库交互
    3. 处理数据转换等
  5. config.py:

    1. 存储配置信息
    2. 可能包括数据库URI、调试模式设置等
  6. run.py:

    1. 应用的入口点
    2. 运行Flask应用
  7. requirements.txt:

    1. 列出项目依赖

1.2 数据库设计与集成

笔者选择使用SQLite作为数据库。SQLite是一种轻量级的嵌入式数据库,适合中小型项目。它无需单独的数据库服务器,使用方便,且性能较好,

该工具中,笔者选择SQLite作为数据库,主要因为以下几点原因:

  1. 轻量级:SQLite不需要独立的服务器进程,占用资源少。
  2. 集成简单:它是一个嵌入式数据库,集成到Flask应用中非常容易。
  3. 适合开发和测试:SQLite数据库文件可以轻松复制和迁移,适合开发和测试环境。

1.2.1 数据库结构设计

本文由作者按照 CC BY 4.0 进行授权