Update __init__.py

This commit is contained in:
ThatLukinhasGuy 2023-11-04 18:16:09 -03:00 committed by GitHub
parent 318112c8b9
commit 0af4fc0997
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,44 +1,40 @@
from fastapi import FastAPI, Response, Request
from fastapi.middleware.cors import CORSMiddleware
from typing import List, Union, Any, Dict, AnyStr
from ._tokenizer import tokenize
import g4f
from .. import BaseProvider
import time
import json
import random
import string
import uvicorn
import nest_asyncio
import g4f
app = FastAPI()
class Api:
def __init__(self, engine: g4f, debug: bool = True, sentry: bool = False,
list_ignored_providers: List[Union[str, BaseProvider]] = None) -> None:
self.engine = engine
self.debug = debug
self.sentry = sentry
self.list_ignored_providers = list_ignored_providers
self.app = FastAPI()
nest_asyncio.apply()
origins = [
"http://localhost",
"http://localhost:1337",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
JSONObject = Dict[AnyStr, Any]
JSONArray = List[Any]
JSONStructure = Union[JSONArray, JSONObject]
@app.get("/")
@self.app.get("/")
async def read_root():
return Response(content=json.dumps({"info": "G4F API"}, indent=4), media_type="application/json")
return Response(content=json.dumps({"info": "g4f API"}, indent=4), media_type="application/json")
@app.get("/v1")
@self.app.get("/v1")
async def read_root_v1():
return Response(content=json.dumps({"info": "Go to /v1/chat/completions or /v1/models."}, indent=4), media_type="application/json")
@app.get("/v1/models")
@self.app.get("/v1/models")
async def models():
model_list = [{
'id': model,
@ -50,7 +46,7 @@ async def models():
'object': 'list',
'data': model_list}, indent=4), media_type="application/json")
@app.get("/v1/models/{model_name}")
@self.app.get("/v1/models/{model_name}")
async def model_info(model_name: str):
try:
model_info = (g4f.ModelUtils.convert[model_name])
@ -64,9 +60,8 @@ async def model_info(model_name: str):
except:
return Response(content=json.dumps({"error": "The model does not exist."}, indent=4), media_type="application/json")
@app.post("/v1/chat/completions")
@self.app.post("/v1/chat/completions")
async def chat_completions(request: Request, item: JSONStructure = None):
item_data = {
'model': 'gpt-3.5-turbo',
'stream': False,
@ -158,10 +153,10 @@ async def chat_completions(request: Request, item: JSONStructure = None):
return Response(content=json.dumps(streaming(), indent=4), media_type="application/json")
@app.post("/v1/completions")
@self.app.post("/v1/completions")
async def completions():
return Response(content=json.dumps({'info': 'Not working yet.'}, indent=4), media_type="application/json")
def run(ip, thread_quantity):
def run(self, ip, thread_quantity):
split_ip = ip.split(":")
uvicorn.run(app, host=split_ip[0], port=int(split_ip[1]), use_colors=False, workers=thread_quantity)
uvicorn.run(self.app, host=split_ip[0], port=int(split_ip[1]), use_colors=False, workers=thread_quantity)