mgokg's picture
Update app.py
7a70be2 verified
import gradio as gr
import requests
import re
import os
import json
import google.generativeai as genai
from bs4 import BeautifulSoup
from google.ai.generativelanguage_v1beta.types import content
from IPython.display import display
from IPython.display import Markdown
#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;
}
"""
generation_config = {
"temperature": 0.3,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
def ground_search(prompt):
model = genai.GenerativeModel(
model_name="gemini-2.0-pro-exp-02-05",
generation_config=generation_config,
tools = [
genai.protos.Tool(
google_search = genai.protos.Tool.GoogleSearch(),
),
],
)
chat_session = model.start_chat(
history=[
{
"role": "user",
"parts": [
"",
],
},
{
"role": "model",
"parts": [
"",
],
},
]
)
response = chat_session.send_message(f"{prompt}")
#print(response.text)
return response.text
def duckduckgo(search_term):
url = f"https://duckduckgo.com/?q=impressum+{search_term}&ia=web"
try:
response = requests.get(url)
#response.raise_for_status() # Raises HTTPError for bad responses
s1 = response.text
# Removing HTML tags using Beautiful Soup
s2 = re.sub(r"<.*?>", "", s1)
return s1
#return response.text # Return the content of the response
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return response.text
#api_key = os.getenv('groq')
google_api_key = os.getenv('google_search')
#API_URL = "https://blavken-flowiseblav.hf.space/api/v1/prediction/fbc118dc-ec00-4b59-acff-600648958be3"
def query(payload):
API_URL = f"https://specialist-it.de/bots.php?json={payload}"
try:
response = requests.post(API_URL)
response.raise_for_status() # Raises HTTPError for bad responses
return response.text # Return the content of the response
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return response.text
def querys(payloads):
output = query(payloads)
print(output)
#return result_text
# Formuliere die Antwort
search_query = f"{payloads} antworte kurz und knapp. antworte auf deutsch. du findest die antwort hier:\n {output}"
result = predict(search_query)
texte=""
for o in output:
texte +=o
return result
#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)
display(Markdown(result))
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()