|
import io |
|
from fastapi import FastAPI, File, UploadFile |
|
from fastapi import FastAPI, Request, Response, BackgroundTasks |
|
|
|
import subprocess |
|
import os |
|
import requests |
|
import random |
|
|
|
|
|
import shutil |
|
import json |
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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=['*'], |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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") |
|
|
|
|
|
|
|
|
|
proxy =None |
|
|
|
llama_last_error=0 |
|
|
|
|
|
|
|
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'] |
|
|
|
res= "" |
|
res= do_ML_LLAMA70b(text,0) |
|
dict={"LLAMA":res} |
|
return JSONResponse(dict) |
|
|
|
|
|
def do_ML_LLAMA70b(text:str, trycount:int): |
|
starttime=time.time() |
|
options = ChromeOptions() |
|
global llama_last_error |
|
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+30): |
|
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) |
|
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER) |
|
textarea_element.send_keys('\n') |
|
|
|
|
|
break |
|
except Exception as e: |
|
print(e) |
|
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 prev |
|
|
|
element_selector = '.wrap.default.minimal.svelte-119qaqt.translucent.generating' |
|
|
|
try: |
|
element = driver.find_element(By.CSS_SELECTOR,element_selector) |
|
print("generating") |
|
continue |
|
except: |
|
print("Element is not present.") |
|
|
|
parent_element = driver.find_elements(By.CLASS_NAME,'message') |
|
extracted_text = parent_element[1].text |
|
element_text= extracted_text |
|
if element_text=="" or element_text=='Loading content ': |
|
pritn("empty text exception") |
|
continue |
|
|
|
driver.quit() |
|
|
|
return element_text |
|
|
|
driver.delete_all_cookies() |
|
driver.quit() |
|
llama_last_error= time.time() |
|
return " --Error Occurred-- " |
|
|
|
|
|
except Exception as e: |
|
print(e) |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
llama_last_error= time.time() |
|
return "Error Occurred " |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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) |
|
|
|
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' |
|
button_element = driver.find_element(By.ID,button_id) |
|
|
|
|
|
button_element.click() |
|
break |
|
except Exception as e: |
|
print(e) |
|
time.sleep(0.2) |
|
|
|
|
|
prev ="" |
|
|
|
|
|
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" |
|
|
|
|
|
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''' |
|
|
|
|
|
|
|
|
|
'''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) |
|
|
|
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER) |
|
time.sleep(0.5) |
|
textarea_element.send_keys('\n') |
|
break |
|
except: |
|
continue |
|
|
|
|
|
prev ="" |
|
|
|
|
|
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 |
|
|
|
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" |
|
|
|
|
|
|
|
|
|
@app.post("/falcon180b") |
|
async def get_answer_falcon180(request: Request, background_tasks: BackgroundTasks ): |
|
data = await request.json() |
|
text= data['text'] |
|
print("recievoed , ", text ) |
|
return StreamingResponse(do_falcon180(text), media_type="text/plain") |
|
|
|
|
|
|
|
import asyncio |
|
from fastapi.responses import StreamingResponse |
|
|
|
async def do_falcon180(text): |
|
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://lunarflu-falcon-180b-demo-duplicate.hf.space") |
|
try: |
|
while True: |
|
try: |
|
curr= time.time() |
|
if curr- starttime>20: |
|
break |
|
xpath_expression = "//span[@class='svelte-s1r2yt' and contains(text(), 'Additional Inputs')]" |
|
element = driver.find_element(By.XPATH, xpath_expression) |
|
element.click() |
|
element = driver.find_elements(By.CSS_SELECTOR, 'input[data-testid="number-input"]') |
|
element[1].clear() |
|
element[1].send_keys('1900') |
|
textarea_element = driver.find_element(By.XPATH,'//textarea[@placeholder="Type a message..."]') |
|
for line in text.split('\n'): |
|
textarea_element.send_keys(line) |
|
textarea_element.send_keys(Keys.SHIFT + Keys.ENTER) |
|
textarea_element.send_keys('\n') |
|
break |
|
except Exception as e: |
|
print(e) |
|
continue |
|
old_text="" |
|
while True: |
|
|
|
curr= time.time() |
|
if curr- starttime>180: |
|
driver.quit() |
|
break |
|
done = False |
|
try: |
|
xpath_expression = "//span[contains(@class, 'chatbot')]" |
|
element = driver.find_elements(By.XPATH, xpath_expression) |
|
text = element[1].text |
|
|
|
while True: |
|
text = element[1].text |
|
send_text= text[len(old_text):] |
|
old_text= text |
|
yield send_text.encode() |
|
try: |
|
element = driver.find_element(By.CLASS_NAME,"generating") |
|
|
|
except: |
|
|
|
driver.quit() |
|
done= True |
|
break |
|
if done: |
|
break |
|
except Exception as e: |
|
print(e) |
|
continue |
|
except: |
|
driver.quit() |
|
|
|
|
|
|
|
|
|
@app.post("/wizlm70b") |
|
async def get_answer_falcon180(request: Request): |
|
data = await request.json() |
|
text= data['text'] |
|
print("recievoed , ", text ) |
|
return do_wizard70b(text) |
|
|
|
|
|
def do_wizard70b(text): |
|
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://chat.lmsys.org/") |
|
while True: |
|
curr= time.time() |
|
if curr- starttime>10: |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return "Error-- 1" |
|
try: |
|
button = driver.find_element(By.XPATH, "//button[contains(@class, 'svelte-kqij2n') and text()='Single Model']") |
|
button.click() |
|
break |
|
except Exception as e: |
|
print(e) |
|
time.sleep(0.5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time.sleep(1) |
|
while True: |
|
curr= time.time() |
|
if curr- starttime>60: |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return "Error-- 3" |
|
try: |
|
textarea = driver.find_elements(By.XPATH,'//textarea[@data-testid="textbox"]') |
|
textarea[2].clear() |
|
for line in text.split('\n'): |
|
textarea[2].send_keys(line) |
|
textarea[2].send_keys('\n') |
|
except Exception as e: |
|
print(e) |
|
time.sleep(0.5) |
|
|
|
time.sleep(2) |
|
while True: |
|
curr= time.time() |
|
if curr- starttime>178: |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return "Error-- 3 -- timeout" |
|
try: |
|
element = driver.find_element(By.CSS_SELECTOR, '.generating') |
|
print("geberating") |
|
time.sleep(0.5) |
|
except: |
|
print("Element with 'generating' keyword in class is not present.") |
|
div_element = driver.find_element(By.XPATH,'//div[@data-testid="bot"]') |
|
extracted_text = div_element.text |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return extracted_text |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.post("/palm2") |
|
async def get_answer_llama(request: Request ): |
|
data = await request.json() |
|
text = data['text'] |
|
|
|
res= "" |
|
res= do_ML_PALM(text,0) |
|
dict={"BOT":res} |
|
return JSONResponse(dict) |
|
|
|
|
|
def do_ML_PALM(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://chansung-palm-with-gradio-chat.hf.space') |
|
try: |
|
while True: |
|
curr = time.time() |
|
if curr-starttime>178: |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return 'Error -1' |
|
|
|
try: |
|
xpath = "//textarea[@data-testid='textbox' and @placeholder='Ask anything']" |
|
textarea = driver.find_element(By.XPATH,xpath) |
|
textarea.clear() |
|
for line in text.split('\n'): |
|
textarea.send_keys(line) |
|
textarea.send_keys("\n") |
|
break |
|
except: |
|
continue |
|
time.sleep(1.5) |
|
while True: |
|
if curr-starttime>178: |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return 'Error -2' |
|
try: |
|
div_element = driver.find_element(By.CSS_SELECTOR,'div.wrap.default.full.svelte-zlszon.generating') |
|
continue |
|
except: |
|
print('fail') |
|
try: |
|
div_element = driver.find_elements(By.CLASS_NAME,'md.svelte-9tftx4.chatbot') |
|
div_element= div_element[1] |
|
|
|
div_text = div_element.text |
|
if div_text=="": |
|
continue |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return div_text |
|
except: |
|
time.sleep(0.5) |
|
continue |
|
|
|
|
|
except Exception as e: |
|
print(e) |
|
driver.delete_all_cookies() |
|
driver.quit() |
|
return "Error 3" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|