File size: 4,174 Bytes
a936419
 
 
8ca50ab
1d3c45e
c9f3ae4
a936419
ce9fc94
 
c402c9e
55e7ed5
adfe721
b22d092
4cc0f9b
b22d092
5fd5342
4cc0f9b
a224edc
 
5fd5342
 
c402c9e
 
 
 
201f13e
2bc40b7
9d4773b
33d5e28
2bc40b7
a41bba5
c9b175d
 
a41bba5
2c076d1
a41bba5
 
 
 
 
f824e57
2bc40b7
 
9005e59
2bc40b7
a07a31e
 
 
2c076d1
a07a31e
 
24ad0b1
 
a07a31e
fe2a716
a07a31e
bb0ed10
d549d87
a07a31e
 
 
 
 
 
 
 
 
 
 
512941f
659321e
4283251
 
 
91f14e6
 
d6ca163
 
9f1a3e0
 
d6ca163
9f1a3e0
 
 
d6ca163
 
 
 
 
543ccb3
5a96c14
5758366
2c9db66
f824e57
 
 
 
2bc40b7
 
2566216
5a96c14
 
a936419
 
4cc0f9b
7295b99
a640856
4cc0f9b
a640856
 
ef14801
5e3a028
eeb9912
a936419
ece9550
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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:20px;
    background:#181818;
    padding: 20px;
    padding-top: 40px;
    color:white;
}
#senden {
    width: 200px; 
    float:right;
}
"""


def parse_links(prompt):
    #anfrage ='fill in the missing contact information. do not reference the json object. do not use html tags inside the json object. it must be valid json. do not return explanaitons or any other text. thanks for your efforts:)'
    Name=prompt
    #outputs.value = "# Bitte warten"
    #suite your prompt to your needs
    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:
        #get Perplexica on github
        #http:// url to perplexica api running inside a docker container. you may use certbot to issue a certificate for the perplexica webserver
        url = secreturl
        
        payload = {
            "chatModel": {
                "provider": "groq",
                "model": "llama3-70b-8192"
            },
            "embeddingModel": {
                "provider": "local",
                "model": "xenova-bge-small-en-v1.5"
            },
            "optimizationMode": "speed",
            "focusMode": "webSearch",
            #"query": f"Impressum Name={prompt}\n{anfrage}. outputformat=json",
            "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')
        #ergebnis=gr.Markdown()
        ergebnis =ergebnis.replace("[1]", " ")
        ergebnis =ergebnis.replace("[2]", " ")
        ergebnis =ergebnis.replace("[3]", " ")
        ergebnis =ergebnis.replace("[4]", " ")
        ergebnis =ergebnis.replace("[5]", " ")
        ergebnis =ergebnis.replace("[6]", " ")
        ergebnis =ergebnis.replace("[7]", " ")
        ergebnis =ergebnis.replace("[8]", " ")
        ergebnis =ergebnis.replace("[9]", " ")
        ergebnis =ergebnis.replace("[10]", " ")
        ergebnis =ergebnis.replace("[11]", " ")
        ergebnis =ergebnis.replace("[12]", " ")
        ergebnis =ergebnis.replace("[13]", " ")
        ergebnis =ergebnis.replace("[14]", " ")
        ergebnis =ergebnis.replace("[15]", " ")
        ergebnis =ergebnis.replace("[16]", " ")
        ergebnis =ergebnis.replace("[17]", " ")
        ergebnis =ergebnis.replace("[18]", " ")
        return ergebnis
        # return as Dictionary, for gr.JSON 
        #return {"body_text": body_text}
    
    except requests.RequestException as e:
        return {"error": str(e)}
    except Exception as e:
        return {"error": str(e)}

#clear output
def clear():
    clear=""
    return clear

# Erstelle die Gradio-Schnittstelle
with gr.Blocks(css=custom_css, theme = gr.themes.Default()) as demo:
    gr.Markdown("# Perplexica WebSearch  ")
    links_output = gr.Markdown(label="Antwort",elem_id="md")  
    ort_input = gr.Textbox(label="Frage", placeholder="ask anything...", scale= 3, value="")   
    #clearbutton = gr.Button("clear", elem_id="clear")  
    button = gr.Button("senden", elem_id="senden")
    
    button.click(fn=parse_links, inputs=ort_input, outputs=links_output)
    #clearbutton.click(fn=clear, inputs=[], outputs=links_output)

demo.launch()