File size: 2,578 Bytes
a936419
40ce5ac
085ef0b
40ce5ac
1605c68
eb28548
abae114
085ef0b
40ce5ac
0963c3d
cd1062c
085ef0b
cb7bc65
 
6ad3993
cb7bc65
097823d
cb7bc65
 
40ce5ac
cb7bc65
 
ee3485c
abae114
cd1062c
0a61873
cb954b3
 
 
 
 
d1e8811
f227cbb
883fe4b
72701df
883fe4b
72701df
d1e8811
 
45616e1
 
 
f681054
bc9f82a
0a61873
ee3485c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51f5b3e
ee3485c
 
6578e3e
eb28548
c230eb4
0a61873
085ef0b
79b0e5e
85deaff
c4d944b
 
5399f24
75cc043
573de21
40ce5ac
 
085ef0b
 
cb954b3
e5d9b98
085ef0b
45616e1
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
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: #121212;
    padding: 20px;
    color: white;
    border: 1 px solid white;
}
"""

#api_key = os.getenv('groq')
google_api_key = os.getenv('google_search')

#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}"   
    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)   
    # 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
    return results

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()