Spaces:
Runtime error
Runtime error
G.Hemanth Sai
commited on
Commit
·
addbc00
1
Parent(s):
53d5196
Initialized schema and fastapi app
Browse files- .gitignore +0 -0
- backend/__init__.py +52 -0
- backend/models/__init__.py +3 -0
- backend/models/auth.py +32 -0
- backend/models/generic.py +14 -0
- backend/models/inference.py +6 -0
- backend/router.py +65 -0
- requirements.txt +2 -0
.gitignore
ADDED
|
File without changes
|
backend/__init__.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import mysql.connector
|
| 2 |
+
from mysql.connector import errorcode
|
| 3 |
+
|
| 4 |
+
from fastapi import FastAPI, status
|
| 5 |
+
from fastapi.exceptions import HTTPException
|
| 6 |
+
|
| 7 |
+
from backend.utils import DBConnection
|
| 8 |
+
|
| 9 |
+
from langchain.llms import CTransformers
|
| 10 |
+
from langchain.chains import LLMChain
|
| 11 |
+
from langchain import PromptTemplate
|
| 12 |
+
|
| 13 |
+
app = FastAPI(title="DocGup-Tea",
|
| 14 |
+
version="V0.0.1",
|
| 15 |
+
description="API for automatic code documentation generation!"
|
| 16 |
+
)
|
| 17 |
+
|
| 18 |
+
from backend import router
|
| 19 |
+
|
| 20 |
+
try:
|
| 21 |
+
dbconnection = DBConnection()
|
| 22 |
+
test_conn = DBConnection.get_client().get_server_info()
|
| 23 |
+
|
| 24 |
+
# send prompt codellama-13b-instruct-GGUF model
|
| 25 |
+
with open("docguptea/utils/prompt.txt",'r') as f:
|
| 26 |
+
prompt = f.read()
|
| 27 |
+
print(prompt)
|
| 28 |
+
|
| 29 |
+
prompt = PromptTemplate(template=prompt,
|
| 30 |
+
input_variables=['query'])
|
| 31 |
+
|
| 32 |
+
llm = CTransformers(
|
| 33 |
+
model = "docguptea/static/models/codellama-13b-instruct.Q4_K_M.gguf",
|
| 34 |
+
model_type="llama",
|
| 35 |
+
max_new_tokens = 1096,
|
| 36 |
+
temperature = 0.25,
|
| 37 |
+
repetition_penalty = 1.13,
|
| 38 |
+
stream=True,
|
| 39 |
+
gpu_layers = 10,
|
| 40 |
+
)
|
| 41 |
+
|
| 42 |
+
llmchain = LLMChain(
|
| 43 |
+
prompt=prompt,
|
| 44 |
+
llm=llm
|
| 45 |
+
)
|
| 46 |
+
|
| 47 |
+
app.state.llmchain = llmchain
|
| 48 |
+
|
| 49 |
+
except mysql.connector.Error as err:
|
| 50 |
+
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(err))
|
| 51 |
+
|
| 52 |
+
|
backend/models/__init__.py
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .auth import *
|
| 2 |
+
from .generic import *
|
| 3 |
+
from .inference import *
|
backend/models/auth.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel, Field, EmailStr
|
| 2 |
+
from typing import Union, List, Tuple
|
| 3 |
+
|
| 4 |
+
from .generic import Base
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class TokenSchema(Base):
|
| 8 |
+
access_token: str
|
| 9 |
+
refresh_token: str
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
class UserAuth(Base):
|
| 13 |
+
username: str = Field(..., description="username")
|
| 14 |
+
password: str = Field(..., min_length=5, max_length=24, description="user password")
|
| 15 |
+
email: EmailStr
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class User(Base):
|
| 19 |
+
username: str
|
| 20 |
+
email: EmailStr
|
| 21 |
+
|
| 22 |
+
class TokenPayload(Base):
|
| 23 |
+
sub: str = None
|
| 24 |
+
exp: int = None
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
class LoginCreds(Base):
|
| 28 |
+
username: str
|
| 29 |
+
password: str
|
| 30 |
+
|
| 31 |
+
class APIKey(Base):
|
| 32 |
+
api_key: str
|
backend/models/generic.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel
|
| 2 |
+
from typing import List
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
class Base(BaseModel):
|
| 6 |
+
@classmethod
|
| 7 |
+
def get_instance(cls, **kwargs):
|
| 8 |
+
return cls(**kwargs)
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
class GeneralResponse(Base):
|
| 12 |
+
status:str
|
| 13 |
+
message: List[str]
|
| 14 |
+
data:dict
|
backend/models/inference.py
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel
|
| 2 |
+
from typing import List
|
| 3 |
+
from .generic import Base
|
| 4 |
+
|
| 5 |
+
class Inference(Base):
|
| 6 |
+
docstr:str
|
backend/router.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import Request, Depends, UploadFile
|
| 2 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 3 |
+
|
| 4 |
+
from docguptea import app
|
| 5 |
+
from docguptea.utils import DBConnection
|
| 6 |
+
from docguptea.models import *
|
| 7 |
+
from docguptea.services.auth import *
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
app.add_middleware(
|
| 11 |
+
CORSMiddleware,
|
| 12 |
+
allow_origins=["*"],
|
| 13 |
+
allow_credentials=True,
|
| 14 |
+
allow_methods=["*"],
|
| 15 |
+
allow_headers=["*"],
|
| 16 |
+
)
|
| 17 |
+
|
| 18 |
+
@app.get("/api/response_check", tags=["Resource Server"])
|
| 19 |
+
def api_response_check():
|
| 20 |
+
response_result = GeneralResponse.get_instance(data={},
|
| 21 |
+
status="not_allowed",
|
| 22 |
+
message=["Not authenticated"]
|
| 23 |
+
)
|
| 24 |
+
|
| 25 |
+
try:
|
| 26 |
+
db_msg = ""
|
| 27 |
+
if DBConnection.is_connected():
|
| 28 |
+
db_msg = "Connection Successful to db!"
|
| 29 |
+
else:
|
| 30 |
+
db_msg = "Connection failed to db"
|
| 31 |
+
|
| 32 |
+
response_result.message.append(db_msg)
|
| 33 |
+
|
| 34 |
+
except Exception as e:
|
| 35 |
+
print("Exception :", e)
|
| 36 |
+
|
| 37 |
+
return response_result
|
| 38 |
+
|
| 39 |
+
@app.post("/auth/signup", summary="Creates new user account", response_model=GeneralResponse, tags=["Auth Server"])
|
| 40 |
+
async def signup(response: UserAuth):
|
| 41 |
+
response_result = GeneralResponse.get_instance(data={},
|
| 42 |
+
status="not_allowed",
|
| 43 |
+
message=["Not authenticated"]
|
| 44 |
+
)
|
| 45 |
+
ops_signup(response_result, response)
|
| 46 |
+
|
| 47 |
+
return response_result
|
| 48 |
+
|
| 49 |
+
@app.post("/auth/login", summary="Logs in user", response_model=TokenSchema, tags=["Auth Server"])
|
| 50 |
+
async def login(response:LoginCreds):
|
| 51 |
+
return ops_login(response)
|
| 52 |
+
|
| 53 |
+
@app.put("/auth/regenerate_api_key",summary="Forget Password",response_model=APIKey,tags=["Auth Server"],dependencies=[Depends(JWTBearer())])
|
| 54 |
+
async def regenerate_api_key(access_token: str = Depends(JWTBearer())):
|
| 55 |
+
user_sub=Auth.get_user_credentials(access_token)
|
| 56 |
+
|
| 57 |
+
return ops_regenerate_api_key(user_sub)
|
| 58 |
+
|
| 59 |
+
@app.post("/api/inference", summary="Inference", response_model=Inference, tags=["Resource Server"], dependencies=[Depends(JWTBearer())])
|
| 60 |
+
async def inference(code_block:str, api_key: str,access_token:str=Depends(JWTBearer())):
|
| 61 |
+
user_sub=Auth.get_user_credentials(access_token)
|
| 62 |
+
|
| 63 |
+
print("after res")
|
| 64 |
+
|
| 65 |
+
return ops_inference(code_block,api_key,user_sub)
|
requirements.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
streamlit
|
| 2 |
+
fastapi
|