File size: 4,489 Bytes
a936419
40ce5ac
085ef0b
40ce5ac
1605c68
eb28548
abae114
085ef0b
40ce5ac
0963c3d
cd1062c
085ef0b
cb7bc65
 
6ad3993
cb7bc65
ee8bb54
cb7bc65
 
40ce5ac
cb7bc65
 
ee3485c
abae114
cd1062c
c58f0e1
 
0a61873
 
abae114
0a61873
cb954b3
 
 
 
 
c0b8d28
 
 
 
 
 
 
 
 
 
 
f227cbb
 
72701df
 
 
 
afbd097
1887ca7
afbd097
f227cbb
cb954b3
 
 
 
 
87823b4
cb954b3
c93dedb
cb954b3
 
 
cd1062c
 
 
 
 
 
 
 
 
 
 
abae114
cd1062c
abae114
cd1062c
7c71d14
cd1062c
 
320e043
cd1062c
abae114
320e043
 
abae114
0a61873
cd1062c
 
 
0a61873
ee3485c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51f5b3e
ee3485c
 
6578e3e
eb28548
c230eb4
0a61873
085ef0b
79b0e5e
85deaff
c4d944b
 
5399f24
75cc043
573de21
40ce5ac
 
085ef0b
 
cb954b3
e5d9b98
085ef0b
0a61873
236847e
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import gradio as gr
import requests
import os
import json
import google.generativeai as genai
from bs4 import BeautifulSoup
#from groq import Groq
# Load environment variables
genai.configure(api_key=os.environ["geminiapikey"])
read_key = os.environ.get('HF_TOKEN', None)
cx="77f1602c0ff764edb"

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

#api_key = os.getenv('groq')
google_api_key = os.getenv('google_search')
#if api_key is None:
    #raise ValueError("groq_whisper environment variable is not set")

# Initialize the Groq client
#client = Groq(api_key=api_key)

#very simple (and extremly fast) websearch  
def websearch(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"
    }
    #url = f"https://www.googleapis.com/customsearch/v1?key={google_api_key}&cx={cx}&q={prompt}"
    url = f"https://www.google.com/search?key={google_api_key}&cx={cx}&q={prompt}"

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    response_text = soup.find('body')
    #prompt = f"{search_term}\n use this result from a google search to answer the question \n {response_text.text}"
    #result = predict(prompt)
    return response_text.text


    
    response = requests.get(url, headers=headers)
    data = response.json()  # JSON-Daten direkt verarbeiten
    # Extrahieren des Textes aus den Ergebnissen
    items = data.get('items', [])       
    results = [item['snippet'] for item in items]
    result_text = '\n'.join(results)
    #return results[0]
    return result_text
    
    # URL der Google Custom Search API
    url = f"https://www.googleapis.com/customsearch/v1?key={google_api_key}&cx={cx}&q={prompt}"
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    response_text = soup.find('body')
    #prompt = f"{search_term}\n use this result from a google search to answer the question \n {response_text.text}"
    #result = predict(prompt)
    return response_text.text



def perform_search(prompt):
    if prompt.strip() == '':
        return ''  # Return empty string for empty search

    # URL der Google Custom Search API
    url = f"https://www.googleapis.com/customsearch/v1?key={google_api_key}&cx={cx}&q={prompt}"

    try:
        # HTTP GET-Anfrage an die Google Custom Search API
        response = requests.get(url)
        # JSON-Antwort parsen
        data = response.json()       
        # Extrahiere die Suchergebnisse
        items = data.get('items', [])       
        results = [item['snippet'] for item in items]
        #return results[0]
        # Kombiniere die Ergebnisse zu einem String
        result_text = '\n'.join(results)
        #return results[0]
        # Formuliere die Antwort
        #search_query = f"{prompt} antworte kurz und knapp. antworte auf deutsch. du findest die antwort hier: {result_text}"
        #result = predict(search_query)
        #return result
        return result_text

    except requests.exceptions.RequestException as e:
        print(f"An error occurred: {e}")
        return ''

def predict(prompt):
    generation_config = {
      "temperature": 0.4,
      "top_p": 0.95,
      "top_k": 40,
      "max_output_tokens": 8192,
      "response_mime_type": "text/plain",
    }

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

    chat_session = model.start_chat(
      history=[]
    )
      
    response = chat_session.send_message(f"{prompt}\n antworte immer auf deutsch")
    response_value = response.candidates[0].content.parts[0].text
    return response_value

# 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...")
        #audio_input=gr.Microphone(type="filepath")
    with gr.Row():         
        button = gr.Button("Senden")    

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

# Launch the Gradio application
demo.launch()