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)