Spaces:
Sleeping
Sleeping
import os | |
import subprocess | |
import gradio as gr | |
from epub2txt import epub2txt | |
from websocket import create_connection | |
if not os.path.exists(os.getenv("checkpoint_path")): | |
os.system("git clone --recurse-submodules https://github.com/ztxz16/fastllm.git") | |
os.system("cd fastllm; mkdir build; cd build; cmake ..; make -j; cd tools; python setup.py install --user --prefix=") | |
os.system("wget https://huggingface.co/huangyuyang/chatglm2-6b-int4.flm/resolve/main/chatglm2-6b-int4.flm") | |
subprocess.Popen(["uvicorn", "api:app"]) | |
class GUI: | |
def __init__(self, *args, **kwargs): | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
gr.Markdown(scale=2).attach_load_event(self.hello, None) | |
gr.LoginButton() | |
gr.LogoutButton() | |
out = gr.Markdown() | |
inp = gr.File(file_types=['.epub']) | |
inp.change(self.process, inp, out) | |
self.ws = None | |
self.out = [] | |
demo.queue(concurrency_count=2).launch() | |
def process(self, file, profile: gr.OAuthProfile | None): | |
if profile is None: | |
return gr.update(value='Login to access the tool.') | |
h = '' | |
chapter_titles = epub2txt.content_titles | |
title = epub2txt.title | |
if self.ws is None: | |
self.ws = create_connection(f"ws://localhost:8000/ws") | |
self.ws.send(file.name) | |
res = '' | |
while 'output: ' not in res: | |
res = self.ws.recv() | |
if 'chsum: ' in res: | |
self.out.append(res.replace("chsum: ", "")) | |
elif 'draft_sum: ' in res: | |
h = res[11:] | |
elif 'output: ' in res: | |
self.ws.close() | |
self.ws = None | |
self.out = [] | |
yield gr.update(value=res) | |
yield gr.update( | |
value=f"# {title}\n\n" +h+ "\n\n".join( | |
[f"## {ct}\n\n{c}" for ct, c in zip(chapter_titles, self.out)])) | |
def hello(self, profile: gr.OAuthProfile | None): | |
if profile is None: | |
return '# ePub summarization tool\n\nLogin to access the tool.' | |
return f"# ePub summarization tool\n\nWelcome {profile.name}!!" | |
GUI() |