Viewing File: /home/ubuntu/codegamaai-test/efimarket_bot/app.py
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI,Request
from supertokens_fastapi import get_cors_allowed_headers
import uvicorn
import os
import json
from src.load_test import *
from src.utils import *
from src.training import *
# from src.web_scraping import *
from src.help import *
# from conversation_data import *
# from TTS import *
# from STT import *
from concurrent.futures import ThreadPoolExecutor
import asyncio
# from src.token_count import read_and_count_tokens_in_folder
from src.constants import redis_context_memory_URL
from src.constants import *
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"] + get_cors_allowed_headers(),
)
def process_request(data):
user_id = data['user_id']
bot_id = data['bot_id']
query = data['query']
context_id = data['context_id']
# bot_name = data['bot_name']
# prompt = data['prompt']
# Iscontact_details_availabel = data['contact_status']
# error_message = data['error_message']
# general_ai = data['general_ai']
mail = "abhinavv@abhi.com"
bot_name = "Pixie The Helper"
prompt = "You are a Tax Assistent that provides Tax Related solution to user"
Iscontact_details_availabel = 3
error_message = "I'm sorry, but I don't have the information needed to answer your question right now. for more specialized support please write a mail to "+mail
general_ai = 1
if query == "haive-delete-context":
data = {"id": context_id}
response = requests.delete(redis_context_memory_URL, json=data)
if response.status_code == 200:
return "context Delete request successful."
else:
return response.status_code
try:
mail = mail
except:
mail = "dummy@gmail.com"
response = load_test(user_id=user_id, bot_id=bot_id, query=query, context_id=context_id, bot_name=bot_name,
custom_instruction=prompt, mail=mail, Iscontact_details_availabel=Iscontact_details_availabel,error_message=error_message,general_ai=general_ai)
return response
async def process_request_async(data):
loop = asyncio.get_event_loop()
with ThreadPoolExecutor() as executor:
response = await loop.run_in_executor(None, process_request, data)
return response
@app.post("/api/v1/query")
async def create_item(request: Request):
try:
b_json = await request.body()
data = json.loads(b_json)
print(data)
response = await process_request_async(data)
return {"message": 'success', "response": response, "status_code": 200}
except Exception as e:
print(e)
return {"message": 'query api failed', "status_code": 500}
# @app.post("/api/v1/query")
# async def create_item(request: Request):
# b_json = await request.body()
# data = json.loads(b_json)
# print(data)
# response = await process_request_async(data)
# return {"message": 'success', "response": response, "status_code": 200}
@app.post("/api/v1/train")
async def create_item2(request: Request):
# try:
b_json = await request.body()
data = json.loads(b_json)
user_id = data['user_id']
bot_id = data['bot_id']
user_folder = os.path.join(os.environ['DB_DIR'], user_id)
user_bot_folder = os.path.join(os.environ['DB_DIR'], user_id, bot_id)
user_bot_data = os.path.join(os.environ['DB_DIR'], user_id, bot_id, 'data')
user_bot_qanda = os.path.join(os.environ['DB_DIR'], user_id, bot_id, 'q_a_data')
user_bot_KB = os.path.join(os.environ['DB_DIR'], user_id, bot_id, 'knowledge_base')
print(data)
if not os.path.exists(user_folder):
os.makedirs(user_folder)
if not os.path.exists(user_bot_folder):
os.makedirs(user_bot_folder)
if not os.path.exists(user_bot_data):
os.makedirs(user_bot_data)
if not os.path.exists(user_bot_KB):
os.makedirs(user_bot_KB)
else:
shutil.rmtree(user_bot_KB)
os.makedirs(user_bot_KB)
if not os.path.exists(user_bot_qanda):
os.makedirs(user_bot_qanda)
train_and_save(user_id, bot_id)
return {"message":"Training started successfully","status_code":200}
# except:
# return {"message":'Training API failed',"status_code":500}
@app.post("/api/v1/answer_suggestion")
async def create_item4(request: Request):
try:
b_json = await request.body()
data = json.loads(b_json)
print(data)
query = data['query']
response = answer_suggestion(query)
return {"message":"success","response":response,"status_code":200}
except:
return {"message":'answer_suggestion API failed',"status_code":500}
# if __name__ == "__main__":
# uvicorn.run(app, host="0.0.0.0",port=5003)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0",port=5012,ssl_keyfile="privkey.pem",ssl_certfile="fullchain.pem")
# while True:
# query = input("Enter your query: ")
# if query == "exit":1
# break
# else:
# user_id = "69"
# bot_id = "69"
# query = "What is the New Regime Tax Rates in India"
# context_id = "U-8-64ccd6e96867eaakaaaak77kgggFgg"
# model = "gpt-4"
# bot_name = "Haive"
# prompt = "You are a Tax Assistent that provides Tax Related solution to user"
# mail = "abhinavv@abhi.com"
# Iscontact_details_availabel = 3
# error_message = "I'm sorry, but I don't have the information needed to answer your question right now. for more specialized support please write a mail to "+mail
# general_ai = 1
# response = load_test(user_id=user_id, bot_id=bot_id, query=query, context_id=context_id, bot_name=bot_name,
# custom_instruction=prompt, mail=mail, Iscontact_details_availabel=Iscontact_details_availabel,error_message=error_message,general_ai=general_ai)
# print(response)
Back to Directory
File Manager