PerplexicaApi / app.py
mgokg's picture
Update app.py
8010aa4 verified
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()