Spaces:
Running
Running
import gradio as gr | |
import requests | |
from urllib.parse import urljoin | |
from datetime import datetime | |
from IPython.display import display | |
from IPython.display import Markdown | |
import json | |
import os | |
jetzt = datetime.now() | |
zeitstempel_str = jetzt.strftime("%Y-%m-%d") | |
secreturl = os.environ.get('secret_url') | |
custom_css = """ | |
#md { | |
height: 450px; | |
font-size: 35px; | |
background: black; | |
padding: 20px; | |
padding-top: 40px; | |
color: white; | |
border: 1 px solid #383838; | |
} | |
""" | |
def question(prompt, optimization_mode): | |
try: | |
# url to the Perplexica backend (http://url.com:3001/api search/) | |
url = secreturl | |
payload = { | |
"chatModel": { | |
"provider": "groq", | |
"model": "llama3-70b-8192" | |
}, | |
"embeddingModel": { | |
"provider": "gemini", | |
"model": "text-embedding-004" | |
}, | |
"optimizationMode": optimization_mode, | |
"focusMode": "webSearch", | |
"query": f"antworte kurz und knapp. {prompt}. antworte auf deutsch. formatiere deine antworten ansprechend und strukturiert in markdown\nhinweis: heute ist der {zeitstempel_str}\n", | |
"history": [ | |
["human", "Hi, how are you?"], | |
["assistant", "I am doing well, how can I help you today?"] | |
] | |
} | |
headers = { | |
"Content-Type": "application/json" | |
} | |
response = requests.post(url, json=payload) | |
ergebnis = response.json().get('message') | |
#get rid of some disturbing numbers | |
for i in range(1, 19): | |
ergebnis = ergebnis.replace(f"[{i}]", " ") | |
#this modul is sooooo cool:) | |
display(Markdown(ergebnis)) | |
return ergebnis | |
except requests.RequestException as e: | |
return {"error": str(e)} | |
except Exception as e: | |
return {"error": str(e)} | |
def clear(): | |
return "", "speed" | |
# Erstelle die Gradio-Schnittstelle | |
with gr.Blocks(css=custom_css) as demo: | |
links_output = gr.Markdown(label="Antwort", elem_id="md", value="# Perplexica Websearch") | |
ort_input = gr.Textbox(label="Frage", placeholder="ask anything...", scale=3, value="") | |
optimization_mode_input = gr.Dropdown(choices=["speed", "balanced"], label="Optimization Mode", value="balanced") | |
ort_input.submit(fn=question, inputs=[ort_input, optimization_mode_input], outputs=links_output) | |
examples = gr.Examples([["Erstelle eine Anleitung. Apache als reverse proxy installieren unter ubuntu 24.x"], ["Kontaktdaten Bürgermeister bad kissingen"], ["Kontaktdaten lachfalten bad kissingen. output format:json"]], ort_input) | |
demo.launch() |