chat-1 / app.py
rishi1985's picture
Update app.py
fbc6f68
raw
history blame
15.7 kB
import io
from fastapi import FastAPI, File, UploadFile
import subprocess
import os
import requests
import random
# import undetected_chromedriver as uc
import shutil
import json
# from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
from pydantic import BaseModel
from typing import Annotated
from fastapi import Form
import selenium
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.chrome.service import Service
import threading
import random
import string
from selenium.webdriver.common.keys import Keys
import time
# from selenium.webdriver.firefox.options import Options
# options = FirefoxOptions()
# options.headless = True
# service = Service()
# driver = webdriver.Firefox(options= options,service=service)
# driver.get("https://yuntian-deng-chatgpt.hf.space/")
# driver.get("https://yuntian-deng-chatgpt.hf.space/")
class Query(BaseModel):
text: str
host:str
from fastapi import FastAPI, Request, Depends, UploadFile, File
from fastapi.exceptions import HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
# cred = credentials.Certificate('key.json')
# app1 = firebase_admin.initialize_app(cred)
# db = firestore.client()
# data_frame = pd.read_csv('data.csv')
from selenium.webdriver.common.by import By
from pymongo.mongo_client import MongoClient
@app.on_event("startup")
async def startup_event():
print("on startup")
# t = threading.Thread(target=makeqimg)
# t.start()
# LLAMA
chrome_driver_path = '/usr/local/bin/chromedriver'
@app.post("/llama")
async def get_answer_llama(request: Request ):
data = await request.json()
text = data['text']
print("recived ",text)
# try:
# model = data['model']
# if model == '13b':
# print('using 13b')
# res= do_ML_LLAMA13b(text,0)
# dict={"LLAMA":res}
# return JSONResponse(dict)
# except:
# print("Using 7b")
res= do_ML_LLAMA13b(text,0)
dict={"LLAMA":res}
return JSONResponse(dict)
def do_ML_LLAMA7b(text:str, trycount:int):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://huggingface-projects-llama-2-7b-chat.hf.space")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
xpath_expression = '//textarea[@data-testid="textbox"]'
textarea_element = driver.find_element(By.XPATH, xpath_expression)
for line in text.split('\n'):
textarea_element.send_keys(line)
# Simulate pressing the 'Shift + Enter' keys to add a newline without triggering submit
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
span_element = driver.find_element(By.CLASS_NAME, 'svelte-s1r2yt')
span_element.click()
input_element = driver.find_element(By.CSS_SELECTOR, 'input[data-testid="number-input"]')
new_value = "2048" # Replace this with the value you want to set
input_element.clear()
input_element.send_keys(new_value)
textarea_element.send_keys('\n')
break
except:
continue
prev =""
time.sleep(0.6)
while True:
time.sleep(0.5)
currtime= time.time()
if(currtime>starttime+170):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
# value=""
try:
div_element = driver.find_element(By.CLASS_NAME, 'wrap.default.minimal.svelte-zlszon.translucent.hide')
element = driver.find_element(By.XPATH,'//div[@data-testid="bot" and contains(@class, "message bot")]')
x=(element.text)
return x
except:
continue
return " --Error Occurred-- "
except:
return "Error Occurred "
def do_ML_LLAMA13b(text:str, trycount:int):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://huggingface-projects-llama-2-13b-chat--mkxgl.hf.space/")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
xpath_expression = '//textarea[@data-testid="textbox"]'
textarea_element = driver.find_element(By.XPATH, xpath_expression)
for line in text.split('\n'):
textarea_element.send_keys(line)
# Simulate pressing the 'Shift + Enter' keys to add a newline without triggering submit
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
span_element = driver.find_element(By.CLASS_NAME, 'svelte-s1r2yt')
span_element.click()
input_element = driver.find_element(By.CSS_SELECTOR, 'input[data-testid="number-input"]')
new_value = "2048" # Replace this with the value you want to set
input_element.clear()
input_element.send_keys(new_value)
textarea_element.send_keys('\n')
break
except:
continue
prev =""
time.sleep(0.6)
while True:
time.sleep(0.5)
currtime= time.time()
if(currtime>starttime+170):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
try:
queue_element = driver.find_element(By.CLASS_NAME,'progress-text')
queue_text = queue_element.text
print(queue_text)
if "queue" in queue_text:
print("Queue is present")
return do_ML_LLAMA7b(text, trycount)
except:
pass
# value=""
try:
div_element = driver.find_element(By.CLASS_NAME, 'wrap.default.minimal.svelte-zlszon.translucent.hide')
element = driver.find_element(By.XPATH,'//div[@data-testid="bot" and contains(@class, "message bot")]')
x=(element.text)
return x
except:
continue
return " --Error Occurred-- "
except:
return "Error Occurred "
########## MPT
@app.post("/mpt")
async def get_answer_mpt(request: Request ):
data = await request.json()
text = data['text']
print("recived ",text)
res= do_ML_MPT(text,0)
dict={"MPT":res}
return JSONResponse(dict)
def do_ML_MPT(text:str, trycount:int):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://mosaicml-mpt-30b-chat.hf.space")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
textarea_xpath = "//textarea[@data-testid='textbox' and @class='scroll-hide svelte-1pie7s6' and @placeholder='Chat Message Box']"
textarea_element = driver.find_element(By.XPATH,textarea_xpath)
for line in text.split('\n'):
textarea_element.send_keys(line)
# Simulate pressing the 'Shift + Enter' keys to add a newline without triggering submit
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
break
except:
continue
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
button_id = 'component-9' # Replace 'comonent-7' with the actual ID
button_element = driver.find_element(By.ID,button_id)
# Perform actions on the element (e.g., clicking the button)
button_element.click()
break
except Exception as e:
print(e)
time.sleep(0.2)
prev =""
# time.sleep(2)
while True:
time.sleep(0.5)
currtime= time.time()
if(currtime>starttime+120):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
# value=""
try:
element = driver.find_element(By.XPATH,'//div[@data-testid="bot" and contains(@class, "message bot")]')
x=(element.text)
print("From text ",x)
if x=="":
raise ValueError(" k")
driver.quit()
return x
except Exception as e:
print(e)
continue
driver.quit()
return " --Error Occurred-- "
except:
print("Error")
if trycount>1:
return
driver.quit()
return do_ML_MPT(text,trycount+1)
'''Falcon 40 b intruct'''
@app.post("/falcon")
async def get_answer_falcon(request: Request ):
data = await request.json()
text = data['text']
print("recived ",text)
res= do_ML_FALCON(text,0)
dict={"FALCON":res}
return JSONResponse(dict)
def do_ML_FALCON(text:str, trycount:int):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://huggingfaceh4-falcon-chat.hf.space")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
textarea_element = driver.find_element(By.CSS_SELECTOR,'textarea[placeholder="Hello Falcon !!"]')
for line in text.split('\n'):
textarea_element.send_keys(line)
# Simulate pressing the 'Shift + Enter' keys to add a newline without triggering submit
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
textarea_element.send_keys('\n')
break
except:
continue
prev =""
# time.sleep(2)
while True:
time.sleep(0.5)
currtime= time.time()
if(currtime>starttime+170):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
# value=""
try:
div_element = driver.find_element(By.CSS_SELECTOR,'div[data-testid="bot"]')
div_text = div_element.text
print(div_text)
if prev==div_text and prev !="":
driver.quit()
return div_text
prev= div_text
except Exception as e:
print(e)
continue
driver.quit()
return " --Error Occurred-- "
except:
print("Error")
return "Error Occureed"
'''Star Code'''
@app.post("/starcode")
async def get_answer_falcon(request: Request ):
data = await request.json()
text = data['text']
print("recived ",text)
res= do_ML_STARCODE(text,0)
dict={"RESULT":res}
return JSONResponse(dict)
def do_ML_STARCODE(text:str, trycount:int):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://huggingfaceh4-starchat-playground.hf.space/")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
return "Requested Could not be proceed"
try:
textarea_element = driver.find_element(By.CSS_SELECTOR,'textarea[placeholder="Enter your message here"]')
for line in text.split('\n'):
textarea_element.send_keys(line)
# Simulate pressing the 'Shift + Enter' keys to add a newline without triggering submit
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
time.sleep(0.5)
textarea_element.send_keys('\n')
break
except:
continue
prev =""
# time.sleep(2)
while True:
time.sleep(0.5)
currtime= time.time()
if(currtime>starttime+170):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
try:
div_element = driver.find_element(By.CLASS_NAME,'svelte-j1gjts.generating')
continue
except:
pass
# value=""
try:
div_element = driver.find_element(By.CSS_SELECTOR,'div[data-testid="bot"]')
text_content = div_element.text
print(text_content)
return text_content
except Exception as e:
print(e)
continue
driver.quit()
return " --Error Occurred-- "
except:
print("Error")
return "Error Occureed"