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}" #
    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' #
      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()