File size: 1,804 Bytes
aa4225d
7736b92
615f98d
1dcd1cd
615f98d
e835725
 
67959d4
7736b92
e99754b
7736b92
e835725
aa4225d
 
 
 
ffab851
970a425
9f8e6cc
8341baf
f5f74ce
9f8e6cc
 
f5f74ce
362dc0e
 
ffab851
615f98d
def98d5
 
 
b2f14ff
1dcd1cd
 
f5f74ce
aa4225d
 
 
1dcd1cd
ffab851
 
f5f74ce
 
caf9c68
 
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
import os
import pip
import gradio as gr
from epub2txt import epub2txt

if not os.path.exists("./chatglm2-6b-int4.flm"):
    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")
    pip.main(['install', '-e', 'fastllm/build/tools/', '--user'])
    # exit()
    
from fastllm_pytools import llm
model = llm.model("./chatglm2-6b-int4.flm")
prompt = os.getenv("prompt")

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()
            self.out = gr.Markdown()
            inp = gr.File(file_types=['.epub'])
            inp.change(self.process, inp, self.out)
        demo.launch()

    def process(self, file, profile: gr.OAuthProfile | None):
        if profile is None:
            return gr.update(value='Login to access the tool.')
        ch_list = epub2txt(file.name, outputlist=True)
        chapter_titles = epub2txt.content_titles
        title = epub2txt.title
        return gr.update(
            value=f"# {title}\n\n" + model.response(prompt+ch_list[2]))
            # value=f"# {title}\n\n" + "\n\n".join(
            #     [f"## {ct}\n\n{c}" for ct, c in zip(chapter_titles, ch_list)]))

    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()