使用Flask框架搭建大模型API key管理平台
0. 搭建背景
目前大模型众多,并且很多模型提供了多种付费模式。比如,ChatGPT和Claude都提供了20美元包月的价格,同时也开放API进行按量收费。笔者在此建议各位根据以下情况进行选择:
- 经常使用,并且经常被使用次数限制(如超过GPT-4的3小时50条限制),使用20美元包月最划算;
- 经常使用,但使用次数达不到限制,同时没有太多代码能力,建议找个搭子合伙开20美元包月最划算;
- 经常使用,但使用次数达不到限制或者经常被限制,同时也有一定代码能力,建议使用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作为主要框架,主要因为以下几点原因:
- 轻量级:Flask本身非常轻量,仅包含最基本的功能,非常适合小型项目和快速开发。
- 灵活性:Flask的扩展库丰富,能够根据项目需求自由选择和集成。
- 社区支持: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
展开
app/init.py:
- 初始化Flask应用
- 配置数据库
- 注册蓝图(如果使用)
app/models.py:
- 定义数据库模型
- 使用ORM(如SQLAlchemy)来定义表结构
app/routes.py:
- 定义API路由
- 处理HTTP请求
- 调用相应的服务函数
app/services.py:
- 包含业务逻辑
- 与数据库交互
- 处理数据转换等
config.py:
- 存储配置信息
- 可能包括数据库URI、调试模式设置等
run.py:
- 应用的入口点
- 运行Flask应用
requirements.txt:
- 列出项目依赖
1.2 数据库设计与集成
笔者选择使用SQLite作为数据库。SQLite是一种轻量级的嵌入式数据库,适合中小型项目。它无需单独的数据库服务器,使用方便,且性能较好,
该工具中,笔者选择SQLite作为数据库,主要因为以下几点原因:
- 轻量级:SQLite不需要独立的服务器进程,占用资源少。
- 集成简单:它是一个嵌入式数据库,集成到Flask应用中非常容易。
- 适合开发和测试:SQLite数据库文件可以轻松复制和迁移,适合开发和测试环境。