File size: 3,676 Bytes
a936419
40ce5ac
085ef0b
40ce5ac
1605c68
ae2ec3d
a936419
6c974e5
085ef0b
40ce5ac
0963c3d
085ef0b
cb7bc65
 
6ad3993
cb7bc65
ee8bb54
cb7bc65
 
40ce5ac
cb7bc65
 
79b0e5e
0b36bad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae2ec3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b0e5e
 
 
40ce5ac
79b0e5e
 
c3b4363
79b0e5e
 
 
 
40ce5ac
 
79b0e5e
 
 
40ce5ac
 
 
fa566da
40ce5ac
 
 
 
e6bff66
085ef0b
79b0e5e
85deaff
40ce5ac
 
5399f24
40ce5ac
 
 
085ef0b
 
0b36bad
e5d9b98
085ef0b
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import gradio as gr
import requests
import os
import json
import google.generativeai as genai
from bs4 import BeautifulSoup


# Load environment variables
genai.configure(api_key=os.environ["geminiapikey"])
read_key = os.environ.get('HF_TOKEN', None)

custom_css = """
#md {
    height: 400px;  
    font-size: 30px;
    background: #202020;
    padding: 20px;
    color: white;
    border: 1 px solid white;
}
"""

def google_search(search_term, **kwargs):
    service = build("customsearch", "v1", developerKey=api_key) # Ersetze YOUR_GOOGLE_API_KEY mit deinem API-Key
    res = service.cse().list(q=search_term, cx="77f1602c0ff764edb", **kwargs).execute() # Ersetze YOUR_CUSTOM_SEARCH_ENGINE_ID mit deiner Custom Search Engine ID
    return res

def get_impressum_text(search_term):
    try:
      search_results = google_search(search_term)

      if 'items' in search_results:
          for item in search_results['items']:
              link = item['link']
              try:
                  response = requests.get(link, timeout=5) # Timeout hinzugefügt für Fehlerbehandlung
                  response.raise_for_status() # Wirft eine Exception, wenn der Statuscode nicht 200 ist
                  soup = BeautifulSoup(response.content, 'html.parser')

                  impressum_div = soup.find('div', class_='MjjYud')

                  if impressum_div:
                      return impressum_div.text.strip()

              except requests.exceptions.RequestException as e:
                  print(f"Fehler beim Abrufen der URL {link}: {e}")
                  continue # Weiter mit dem nächsten Suchergebnis

      return None  # Kein Impressum gefunden


def websearch(prompt):
    
    url = f"https://www.google.com/search?q={prompt}"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status() # Wirft eine Exception für Fehlercodes
    except requests.exceptions.RequestException as e:
       print(f"Fehler beim Abrufen der Google-Seite: {e}")
       return None

    soup = BeautifulSoup(response.content, 'html.parser')
    
    first_div = soup.find('div', class_='MjjYud')
    
    if first_div:
        return first_div.text.strip()
    else:
        print("Kein div mit der Klasse 'MjjYud' gefunden.")
        return None

def predict(prompt):
    # Create the model
    generation_config = {
        "temperature": 0.3,
        "top_p": 0.95,
        "top_k": 40,
        "max_output_tokens": 2048,
        "response_mime_type": "text/plain",
    }

    model = genai.GenerativeModel(
        #model_name="gemini-1.5-pro",
        model_name="gemini-2.0-flash-exp",
        generation_config=generation_config,
    )

    chat_session = model.start_chat(
        history=[
        ]
    )
    
    response = chat_session.send_message(prompt)
    #response = model.generate_content(contents=prompt, tools='google_search_retrieval')
    return response.text

# Create the Gradio interface
with gr.Blocks(css=custom_css) as demo:
    with gr.Row():
        details_output = gr.Markdown(label="answer", elem_id="md")        
        #details_output = gr.Textbox(label="Ausgabe", value = f"\n\n\n\n")  
    with gr.Row():
        ort_input = gr.Textbox(label="prompt", placeholder="ask anything...")      
    with gr.Row():         
        button = gr.Button("Senden")    

    # Connect the button to the function
    button.click(fn=get_impressum_text, inputs=ort_input, outputs=details_output)   

# Launch the Gradio application
demo.launch()