PerplexicaApi / app.py
mgokg's picture
Update app.py
c6fd5fb verified
raw
history blame
3.09 kB
import gradio as gr
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import json
import os
secreturl = os.environ.get('secret_url')
custom_css = """
#md {
height: 350px;
font-size: 30px;
background: #121212;
padding: 20px;
padding-top: 40px;
color: white;
}
.senden {
width: 300px;
float: right;
background:purple;
}
.clear-button {
float: right;
#margin-top: 10px;
background:purple;
}
"""
def question(prompt, optimization_mode):
anfrage = """
instruction: you are a json expert and your job is extracting information from text, generating valid json and return a json object only. do not return any text. halte dich an das vorgegebene json schema.
prompt: fill in the missing contact information. do not reference the json object. do not use html tags inside the json object. do not return explanaitons or any other text. return a valid json object only.
{
"Name": "",
"Email": "",
"Website": "",
"Phone": ""
}
"""
try:
url = secreturl
payload = {
"chatModel": {
"provider": "groq",
"model": "llama3-70b-8192"
},
"embeddingModel": {
"provider": "local",
"model": "xenova-bge-small-en-v1.5"
},
"optimizationMode": optimization_mode,
"focusMode": "webSearch",
"query": f"antworte kurz und knapp. {prompt}. antworte auf deutsch. return plain text only für text zu sprache\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, headers=headers)
ergebnis = response.json().get('message')
for i in range(1, 19):
ergebnis = ergebnis.replace(f"[{i}]", " ")
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, theme=gr.themes.Default(font=[gr.themes.GoogleFont("Inconsolata"), "Arial", "sans-serif"])) as demo:
gr.Markdown("# Perplexica WebSearch <br>")
links_output = gr.Markdown(label="Antwort", elem_id="md")
ort_input = gr.Textbox(label="Frage", placeholder="ask anything...", scale=3, value="")
optimization_mode_input = gr.Dropdown(choices=["speed", "balanced"], label="Optimization Mode", value="speed")
button = gr.Button("senden", elem_classes="senden")
button.click(fn=question, inputs=[ort_input, optimization_mode_input], outputs=links_output)
#clear_button = gr.Button("clear", elem_classes="clear-button")
#clear_button.click(fn=clear, inputs=[], outputs=[ort_input, optimization_mode_input])
demo.launch()