mgokg's picture
Update app.py
d1b76e1 verified
import gradio as gr
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.by import By
from gradio_client import Client
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
#from selenium.webdriver.firefox.options import Options
import groq
import os
import time
import requests
options = webdriver.ChromeOptions()
options.add_argument('--headless')
wd = webdriver.Chrome(options=options)
#wd = webdriver.Firefox(options=options)
#get your api-key @groq.com. its free!
api_key = os.getenv('groq')
client = groq.Client(api_key=api_key)
# Use Llama 3 70B powered by Groq for answering
def update(prompt, ort):
try:
completion = client.chat.completions.create(
model="llama3-70b-8192",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": f"gefragt sind die nächsten 3 zugverbindungen von bad kissingen nach {ort} du findest die antwort im kontext. liefere als antwort ein 2 spaltige tabelle. linke spalte: abfahrtszeit, fahrtdauer, ankunftszeit.rechte spalte: abfahrtsort,leer,zielort. formatiere die tabelle in markdown\n kontext: \n {prompt} \n antworte immer auf deutsch!"}
],
)
return completion.choices[0].message.content
except Exception as e:
return f"Error in response generation: {str(e)}"
def selenium(message):
#url = "https://chat.deepseek.com/"
#url = 'https://www.spiegel.de'
#url = f"https://duckduckgo.com/?q=impressum {message}"
url = f"https://search.brave.com/search?q=impressum {message}"
#<ol class="AmbQnf">
wd.get(url)
time.sleep(3)
element = wd.find_element(By.TAG_NAME, "body")
#time.sleep(3)
#return element.text
try:
completion = client.chat.completions.create(
model="llama3-8b-8192",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": f"return json object with keys name and email. \n name = {message}\n value for email can be found here: {element.text} \n return json object only, no additional text or comments \n"}
],
)
return completion.choices[0].message.content
except Exception as e:
return f"Error in response generation: {str(e)}"
#text_input = wd.find_element(By.XPATH, '/html/body/div[1]/div/div[2]/div[2]/div/div/div[2]/div[2]/div/div/div[1]/textarea')
wait = WebDriverWait(wd, 25) # Korrektur der Instanziierung
element = wait.until(EC.visibility_of_element_located((By.ID, "chat-input"))) # Korrektur der Verwendung von EC
#element = WebDriverWait(wd, 25).until(
#EC.presence_of_element_located((By.ID, 'chat-input'))
#)
time.sleep(5)
#textarea = wd.find_element(By.XPATH, "/html/body/div/main/div[3]/div[2]/div/div[2]/div/div/div[3]/div[2]/div[1]/div/div/div/div/textarea")
#textarea = wd.find_element(By.XPATH, "/html/body/div[1]/div[2]/main/div[1]/div[2]/div/div[1]/div/form/div/div[2]/div/div/div[1]/div[1]/div/textarea")
element.send_keys(f"{message}")
element.send_keys(Keys.RETURN)
time.sleep(8)
elements = wd.find_elements(By.TAG_NAME, "p")
time.sleep(3)
out=""
for e in elements:
out +=e.text
#return element.text
return out
texts=""
url = f"https://www.google.com/search?q=zugverbindung+bad+kissingen+{message}"
#url = 'https://www.spiegel.de'
#<ol class="AmbQnf">
wd.get(url)
wd.implicitly_wait(5)
element = wd.find_element(By.TAG_NAME, "body")
#wd.quit()
time.sleep(5)
#return element.text
results = update(element.text, message)
results=gr.Markdown()
return results
iface = gr.Interface(
fn=selenium,
inputs="text",
outputs="text",
#title="perplexity.ai",
#description="Websuche"
)
iface.launch()