一、fastapi
FastAPI 是一个现代、快速(高性能)的 Python Web 框架,用于构建基于标准 Python 类型提示的 API。以下是 FastAPI 的主要特点及其入门方法的简要说明:
主要特点:
- 开发速度快:提高开发功能的速度,大约是 200% 到 300%。
- 更少的错误:减少约 40% 的人为(开发人员)引入的错误。
- 直观:出色的编辑器支持,随处都有代码补全功能,减少调试时间。
- 易用:设计易于使用和学习,减少阅读文档的时间。
- 简洁:最小化代码重复,从每个参数声明中获得多个功能。
- 健壮:生产就绪代码,具有自动交互文档。
- 基于标准:基于(并完全兼容)API 的开放标准:OpenAPI 和 JSON Schema。
二、代码封装api前端请求与后端响应
from fastapi import FastAPI, Request
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import uvicorn
import json
import datetime
import torch
# 设置设备参数
DEVICE = "cuda" # 使用CUDA
DEVICE_ID = "0" # CUDA设备ID,如果未设置则为空
CUDA_DEVICE = f"{DEVICE}:{DEVICE_ID}" if DEVICE_ID else DEVICE # 组合CUDA设备信息
# 清理GPU内存函数
def torch_gc():
if torch.cuda.is_available(): # 检查是否可用CUDA
with torch.cuda.device(CUDA_DEVICE): # 指定CUDA设备
torch.cuda.empty_cache() # 清空CUDA缓存
torch.cuda.ipc_collect() # 收集CUDA内存碎片
# 构建 chat 模版
def bulid_input(prompt, history=[], system_message=None):
system_format = 'system\n\n{content}\n'
user_format = 'user\n\n{content}\n'
assistant_format = 'assistant\n\n{content}\n'
prompt_str = ''
# 添加system消息
if system_message:
prompt_str += system_format.format(content=system_message)
# 拼接历史对话
for item in history:
if item['role'] == 'user':
prompt_str += user_format.format(content=item['content'])
else:
prompt_str += assistant_f