File size: 2,928 Bytes
2193765
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
def7a15
2193765
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580166a
2193765
 
 
 
 
 
 
 
6292180
2193765
 
 
 
0709871
2193765
 
ec2351c
2193765
 
8559763
5174616
2193765
 
 
 
 
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
import time
import os
import gradio as gr
import requests as requests


URZEDASEK_ENDPOINT = os.getenv("URZEDASEK_ENDPOINT")
ANONYMOUS_TOKEN = os.getenv("ANONYMOUS_TOKEN")


class UrzedasekInferenceClient():

    def chat_completion(
        self,
        messages,
    ):
        auth_header = {
            "Authorization": f"Token {ANONYMOUS_TOKEN}"
            }
        ret = requests.post(
            URZEDASEK_ENDPOINT,
            headers=auth_header,
            json={
                "messages": messages,
            },
        )
        return ret.json()["result"]["urzedas_answer_builder"]["replies"]


client = UrzedasekInferenceClient()


def chunker(result):
    for i in range(0, len(result), 40):
        time.sleep(0.1)
        yield result[i:i + 40]


def respond(
    message,
    history: list[tuple[str, str]],
):
    messages = []

    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    messages.append({"role": "user", "content": message})

    response = ""

    for message in client.chat_completion(messages,):
        for chunk in chunker(message):
            response += chunk
            yield response


with gr.Blocks(fill_height=True) as demo:
    gr.Markdown(
    """
# Urzedasek.pl - Wersja eksperymentalna
Czy zmagasz się z biurokracją, która zdaje się wciągać jak czarna dziura? "Urzedasek.pl" przychodzi z pomocą! Nasza aplikacja to Twój biurokratyczny GPS 📍, który poprowadzi Cię przez meandry urzędowych formularzy, decyzji i nie tylko. Od zdobycia dofinansowania 💸, przez rejestrację działalności gospodarczej 💼, aż po wyrabianie paszportów 📔 – jedyne, do czego potrzebujesz, to kilka kliknięć!
Świat, w którym zdobycie zasiłku czy odwołanie się od mandatu nie musi oznaczać straconego popołudnia i nerwów. A wszystko to osiągalne bez wychodzenia z domu 🏡!
Niech każde "muszę to załatwić" stanie się "już to załatwiłem" z "Urzedasek.pl"!
    """)

    chat = gr.ChatInterface(
        respond,
        examples=[
            ["Chcę skorzystać z dofinansowania, o jakie dofinansowanie mogę się starać?", ""],
            ["Ukradli mi tablice rejestracyjną co mogę zrobić?", ""],
            ["Jak mogę założyć działalność gospodarczą?", ""],
            ["Chce wstąpić do wojska jak to mogę zrobić?", ""],
            ["Chce uzyskać paszport?", ""],
            ["Czy mogę zdobyć zasiłek na dziecko z autyzmem bez orzeczenia?", ""],
            ["Jakie dokumenty należy załatwić po urodzeniu dziecka?", ""],
            ["Jak mogę odwołać się od mandatu?", ""],
            ["Gdzie się wyrabia świadectwo urodzenia? ", ""],

        ],
        additional_inputs=[],
        retry_btn=None,
    )


if __name__ == "__main__":
    demo.launch(share=True)