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-linux64/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_LLAMA7b(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"