DEVICE = “cuda” DEVICE_ID = “0” CUDA_DEVICE = f"{DEVICE}:{DEVICE_ID}" if DEVICE_ID else DEVICE def torch_gc(): if torch.cuda.is_available(): with torch.cuda.device(CUDA_DEVICE): torch.cuda.empty_cache() torch.cuda.ipc_collect() app = FastAPI() # 创建API实例 app.add_middleware( CORSMiddleware, # 允许跨域的源列表,例如 [“http://www.example.org”] 等等,[““] 表示允许任何源 allow_origins=[””], # 跨域请求是否支持 cookie,默认是 False,如果为 True,allow_origins 必须为具体的源,不可以是 [““] allow_credentials=False, # 允许跨域请求的 HTTP 方法列表,默认是 [“GET”] allow_methods=[””], # 允许跨域请求的 HTTP 请求头列表,默认是 [],可以使用 [““] 表示允许所有的请求头 # 当然 Accept、Accept-Language、Content-Language 以及 Content-Type 总之被允许的 allow_headers=[””], # 可以被浏览器访问的响应头, 默认是 [],一般很少指定 # expose_headers=[“*”] # 设定浏览器缓存 CORS 响应的最长时间,单位是秒。默认为 600,一般也很少指定 # max_age=1000 ) @app.post(“/”) async def create_item(request: Request): global model, tokenizer json_post_raw = await request.json() json_post = json.dumps(json_post_raw) json_post_list = json.loads(json_post) prompt = json_post_list.get(‘prompt’) history = json_post_list.get(‘history’) max_length = json_post_list.get(‘max_length’) top_p = json_post_list.get(‘top_p’) temperature = json_post_list.get(‘temperature’) response, history = model.chat(tokenizer, prompt, history=history, max_length=max_length if max_length else 32760, top_p=top_p if top_p else 0.7, #top_p=top_p if top_p else 0.1, temperature=temperature if temperature else 0.95) #temperature=temperature if temperature else 0.1)
now = datetime.datetime.now() time = now.strftime("%Y-%m-%d %H:%M:%S") answer = { "response": response, "history": history, "status": 200, "time": time } log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(response) + '"' print(log) torch_gc() return answer
if name == ‘main’: