chat-1 / app.py
rishi1985's picture
Update app.py
43899bb
raw
history blame
22.6 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():
x=requests.get('https://open-ai-ping-eight.vercel.app/proxy')
print("response ", x.text)
print("on startup")
# t = threading.Thread(target=makeqimg)
# t.start()
proxy =None
llama_last_error=0
# LLAMA
chrome_driver_path = '/usr/local/bin/chromedriver-linux64/chromedriver'
@app.post("/llama")
async def get_answer_llama(request: Request ):
data = await request.json()
text = data['text']
text = text.replace('\n', ' : ')
# print("recived ",text)
proxy=None
# try:
# proxy = data['proxy']
# except:
# pass
# print('proxy ip ', proxy )
currtime= time.time()
res= ""
if currtime-llama_last_error<=3600:
res = do_ML_LLAMA7b(text,0)
else:
res= do_ML_LLAMA70b_chori(text,0, proxy)
dict={"LLAMA":res}
return JSONResponse(dict)
def do_ML_LLAMA70b_chori(text:str, trycount:int, proxy:str):
starttime=time.time()
options = ChromeOptions()
global llama_last_error
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
options.add_argument("--ignore-certificate-errors")
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://chansung-llama2-with-gradio-chat.hf.space/?")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
driver.delete_all_cookies()
llama_last_error= currtime
driver.quit()
return "Requested Could not be proceed"
try:
control_panel_span = driver.find_element(By.XPATH,'//span[@class="svelte-s1r2yt" and contains(text(), "Control Panel")]')
control_panel_span.click()
time.sleep(0.5)
input_element = driver.find_element(By.CSS_SELECTOR,'[data-testid="number-input"]')
new_value = "4000" # Replace this with the value you want to set
input_element.clear() # Clear the current value if needed
input_element.send_keys(new_value)
xpath = "//textarea[@data-testid='textbox' and @placeholder='Ask anything']"
textarea = driver.find_element(By.XPATH,xpath)
textarea.clear()
textarea.send_keys(text)
textarea.send_keys("\n")
break
except Exception as e:
print(e)
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()
llama_last_error= currtime
return "Requested Could not be proceed"
try:
div_element = driver.find_element(By.CSS_SELECTOR,'div.wrap.default.full.svelte-zlszon.generating')
print("generating")
continue;
except:
print('done gen ')
div_element = driver.find_elements(By.CLASS_NAME,'md.svelte-9tftx4.chatbot')
div_element= div_element[len(div_element)-1]
# Extract and print the text content of the div element
div_text = div_element.text
print(div_text)
driver.delete_all_cookies()
driver.quit()
return div_text
driver.delete_all_cookies()
driver.quit()
return " --Error Occurred-- "
except:
driver.delete_all_cookies()
driver.quit()
currtime= time.time()
llama_last_error= currtime
return "Error Occurred "
def do_ML_LLAMA70b(text:str, trycount:int, proxy:str):
starttime=time.time()
options = ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('-headless')
options.add_argument("start-maximized")
options.add_argument("--ignore-certificate-errors")
proxy_port = "8080"
proxy_ip= proxy
print("pxoxy ip ",proxy_ip)
proxy_ip = f"{proxy_ip}:{proxy_port}"
print("proxy final ", proxy_ip)
options.add_argument(f'--proxy-server=http://{proxy_ip}')
service = Service(executable_path=chrome_driver_path)
driver = webdriver.Chrome(options= options,service=service)
driver.get("https://huggingface.co/chat/")
try:
while True:
currtime= time.time()
if(currtime>starttime+20):
driver.delete_all_cookies()
driver.quit()
return "Requested Could not be proceed"
try:
# xpath_expression = '//textarea[@data-testid="tex
textarea_element = driver.find_element(By.XPATH, "//textarea[@placeholder='Ask anything']")
# for line in text.split('\n'):
textarea_element.send_keys(text)
# textarea_element.send_keys(Keys.SHIFT + Keys.ENTER)
textarea_element.send_keys('\n')
break
except Exception as e:
print(e)
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:
class_name = "-ml-1"
svg_elements = driver.find_element(By.CLASS_NAME, class_name)
continue
except:
print("not found")
element = driver.find_element(By.CLASS_NAME, "prose") # Find the element by its class name
element_text = element.text # Extract the text from the element
driver.delete_all_cookies()
driver.quit()
return element_text
driver.delete_all_cookies()
driver.quit()
return " --Error Occurred-- "
except:
driver.delete_all_cookies()
driver.quit()
return "Error Occurred "
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):
driver.delete_all_cookies()
driver.quit()
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)
driver.delete_all_cookies()
driver.quit()
return x
except:
continue
driver.delete_all_cookies()
driver.quit()
return " --Error Occurred-- "
except:
driver.delete_all_cookies()
driver.quit()
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):
driver.delete_all_cookies()
driver.quit()
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")
driver.delete_all_cookies()
driver.quit()
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)
driver.delete_all_cookies()
driver.quit()
return x
except:
continue
driver.delete_all_cookies()
driver.quit()
return " --Error Occurred-- "
except:
driver.delete_all_cookies()
driver.quit()
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):
driver.delete_all_cookies()
driver.quit()
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):
driver.delete_all_cookies()
driver.quit()
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:
driver.delete_all_cookies()
driver.quit()
return "Error"
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):
driver.delete_all_cookies()
driver.quit()
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")
driver.delete_all_cookies()
driver.quit()
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):
driver.delete_all_cookies()
driver.quit()
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)
driver.delete_all_cookies()
driver.quit()
return text_content
except Exception as e:
print(e)
continue
driver.quit()
return " --Error Occurred-- "
except:
print("Error")
driver.delete_all_cookies()
driver.quit()
return "Error Occureed"