Spaces:
Sleeping
Sleeping
File size: 3,031 Bytes
bf7bb36 b88f9cf bf7bb36 b88f9cf bf7bb36 798de62 b88f9cf 798de62 4fb5fa5 eb06ca3 5c5a2c6 eb06ca3 4fb5fa5 798de62 8580815 bf7bb36 700a24f 5320c21 e9be370 5320c21 e9be370 4fb5fa5 eb06ca3 5c5a2c6 eb06ca3 4fb5fa5 5320c21 8580815 bf7bb36 5320c21 798de62 5320c21 8580815 6a79721 5320c21 8580815 6a79721 bf7bb36 6a79721 d901170 |
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 |
import os
import subprocess
if not os.path.exists("chatglm4-ggml-int4.bin"):
os.system("wget https://huggingface.co/npc0/chatglm-4-9b-int4/resolve/main/chatglm4-ggml-int4.bin")
import chatglm_cpp
pipeline = chatglm_cpp.Pipeline("chatglm4-ggml-int4.bin")
# pipeline.chat([chatglm_cpp.ChatMessage(role="user", content="你好")])
# history = []
prompt = """
現在有些文本,文本詳細且複雜。 它包含細節,可以縮減和綜合為關鍵要點。 你的任務是提取最重要的概念,重點關注主要思路,提供一個概述而不失去精髓。 你的總結應該:
• 簡潔但足夠充分,可以代表所有重要信息
• 使用正確的句式和連貫的流程
• 捕捉誰、什麼、何時、在哪裡、為什麼和如何
• 盡可能地保留原始風格和風格
• 你必須遵循“摘要”格式:
摘要:
用2至3個句子簡要陳述主要主題和主要發現。
主要要點:
• 要點1 - 最重要的發現或細節
• 要點2 - 第二重要的觀黵
• 要點3 - 第三個重要的信息
• 要點4(可選) - 另一個要點
• 要點5(可選) - 最後的關鍵總結要點
文本:
"""
def sum_chain_l1(text, p_bar):
docs = []
for i in p_bar(range(len(text)//8000+1)):
t = text[i*8000:i*8000+8196]
if len(t) > 0:
a = ''
for answer in pipeline.chat(
[chatglm_cpp.ChatMessage(
role="user",
content=prompt+t)],
stream=True):
a += answer.content
yield f"{'='*8} {i+1}/{len(text)//8000+1} {'='*8}\n{a}"
docs.append(answer)
yield docs
def sum_chain_l2_deprecated(docs, p_bar):
hist = docs[0]
i = 0
for doc in p_bar(docs[1:]):
i += 1
a = ''
for answer in pipeline.chat(
[chatglm_cpp.ChatMessage(
role="user",
content=prompt+"\n"+hist+"\n"+doc)],
stream=True):
a += answer.content
yield f"{'='*8} {i}/{len(docs)} {'='*8}\n{a}"
hist = answer
yield hist
import gradio as gr
def greet(text, progress=gr.Progress()):
progress(0, desc="Reading")
docs = []
for doc in sum_chain_l1(text, progress.tqdm):
if isinstance(doc, str):
yield '# drafting summary', doc
# yield 'stage 1 finished', '\n===== summarized parts =====\n'.join(doc)
progress(0, desc="Refinement")
for ans in sum_chain_l2_deprecated(doc, progress.tqdm):
if isinstance(ans, str):
yield '# refining summary', ans
return '# final result', ans
gr.Markdown("# Text Summarization\nStage 1 = draft -> Stage 2 = refine -> final result")
iface = gr.Interface(fn=greet,
inputs=gr.Textbox(lines=20,
placeholder="Text Here..."),
outputs=["text", "text"])
iface.launch()
|