Spaces:
Sleeping
Sleeping
IsakNordgren
commited on
Commit
·
a7a9d9e
1
Parent(s):
3fabf6e
fler exempel och förbättrad prompt. Testar steg-för-steg-prompting
Browse files- Arkiv.txt +15 -0
- __pycache__/groqSummarizer.cpython-310.pyc +0 -0
- __pycache__/page.cpython-310.pyc +0 -0
- __pycache__/prompts.cpython-310.pyc +0 -0
- __pycache__/summarize.cpython-310.pyc +0 -0
- groqSummarizer.py +6 -19
- page.py +1 -1
- pages/A-skattsblankett.py +11 -0
- pages/Bruksanvisning Automower.py +11 -0
- pages/Deklaration.py +11 -0
- pages/FHM Covid-information +11 -0
- pages/Hovrättsdom.py +11 -0
- pages/Hyresavi.py +0 -1
- pages/Om krisen eller kriget kommer.py +0 -1
- prompts.py +22 -0
- summarize.py +1 -0
- test.json +29 -0
- test.py +16 -0
Arkiv.txt
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""
|
2 |
+
Du sammanfattar texter som användaren skickar.
|
3 |
+
Syftet är att översätta svårlästa texter som exempelvis myndighetsbeslut,
|
4 |
+
kontrakt eller avier/fakturor till klartext som är lättförståelig och tydlig,
|
5 |
+
framförallt om det är något som användaren behöver göra själv (exempelvis betala en faktura).
|
6 |
+
|
7 |
+
Texten som användaren kommer skicka är PDFer som har blivit omformaterade till en lång sträng.
|
8 |
+
Detta kan leda till att viss positionell information försvinner, eller att olika textstycken
|
9 |
+
kommer i en annan ordning än vad som är tänkt.
|
10 |
+
|
11 |
+
Du ska först svara med en flytande text som kort förklarar vad som står i dokumentet.
|
12 |
+
Om dokumentet ger instruktioner ska du beskriva dessa steg för steg sist i svaret.
|
13 |
+
Det ska gå att utföra instruktionerna enbart baserat på det du skriver så användaren inte behöver läsa i pdfen för att veta vad den ska göra.
|
14 |
+
Svara på svenska.
|
15 |
+
"""
|
__pycache__/groqSummarizer.cpython-310.pyc
CHANGED
Binary files a/__pycache__/groqSummarizer.cpython-310.pyc and b/__pycache__/groqSummarizer.cpython-310.pyc differ
|
|
__pycache__/page.cpython-310.pyc
CHANGED
Binary files a/__pycache__/page.cpython-310.pyc and b/__pycache__/page.cpython-310.pyc differ
|
|
__pycache__/prompts.cpython-310.pyc
ADDED
Binary file (1.24 kB). View file
|
|
__pycache__/summarize.cpython-310.pyc
CHANGED
Binary files a/__pycache__/summarize.cpython-310.pyc and b/__pycache__/summarize.cpython-310.pyc differ
|
|
groqSummarizer.py
CHANGED
@@ -3,27 +3,14 @@ from groq import Groq
|
|
3 |
import os
|
4 |
from dotenv import load_dotenv
|
5 |
|
6 |
-
|
7 |
|
8 |
-
def __init__(self):
|
9 |
-
#self.systemPrompt = "Du sammanfattar texter som användaren skickar. Var kortfattad. Svara på svenska. Om texten innehåller instruktioner, lista dem punktvis."
|
10 |
|
11 |
-
|
12 |
-
Du sammanfattar texter som användaren skickar.
|
13 |
-
Syftet är att översätta svårlästa texter som exempelvis myndighetsbeslut,
|
14 |
-
kontrakt eller avier/fakturor till klartext som är lättförståelig och tydlig,
|
15 |
-
framförallt om det är något som användaren behöver göra själv (exempelvis betala en faktura). \n
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
kommer i en annan ordning än vad som är tänkt. \n
|
20 |
|
21 |
-
Outputten ska vara en flytande text som kort förklarar vad som står i dokumentet.
|
22 |
-
Om dokumentet ger instruktioner ska dessa tydligt beskrivas steg för steg sist i svaret.
|
23 |
-
Det ska gå att utföra instruktionerna enbart baserat på outputten.
|
24 |
-
Om det exempelvis är en hyresavi ska bankgiro, OCR-nummer och belopp tydligt framgå.
|
25 |
-
Svara på Svenska
|
26 |
-
"""
|
27 |
|
28 |
self.client = self.load_groq()
|
29 |
|
@@ -48,10 +35,10 @@ class GroqSummarizer():
|
|
48 |
},
|
49 |
{
|
50 |
"role": "user",
|
51 |
-
"content": text,
|
52 |
}
|
53 |
],
|
54 |
model="llama3-70b-8192",
|
55 |
)
|
56 |
-
|
57 |
return chat_completion.choices[0].message.content
|
|
|
3 |
import os
|
4 |
from dotenv import load_dotenv
|
5 |
|
6 |
+
from prompts import systemPrompt
|
7 |
|
|
|
|
|
8 |
|
9 |
+
class GroqSummarizer():
|
|
|
|
|
|
|
|
|
10 |
|
11 |
+
def __init__(self):
|
12 |
+
self.systemPrompt = systemPrompt
|
|
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
self.client = self.load_groq()
|
16 |
|
|
|
35 |
},
|
36 |
{
|
37 |
"role": "user",
|
38 |
+
"content": "\"\"\"" + text + "\"\"\"",
|
39 |
}
|
40 |
],
|
41 |
model="llama3-70b-8192",
|
42 |
)
|
43 |
+
print(chat_completion.choices[0].message.content)
|
44 |
return chat_completion.choices[0].message.content
|
page.py
CHANGED
@@ -11,7 +11,7 @@ def createDemoPage(path):
|
|
11 |
|
12 |
with st.spinner("Summarizing text..."):
|
13 |
summarizer = Summarizer(model = "groq")
|
14 |
-
text = readpdf(
|
15 |
summary = summarizer.summarize(text)
|
16 |
|
17 |
st.subheader("Summary")
|
|
|
11 |
|
12 |
with st.spinner("Summarizing text..."):
|
13 |
summarizer = Summarizer(model = "groq")
|
14 |
+
text = readpdf(path)
|
15 |
summary = summarizer.summarize(text)
|
16 |
|
17 |
st.subheader("Summary")
|
pages/A-skattsblankett.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from summarize import Summarizer
|
3 |
+
import page
|
4 |
+
|
5 |
+
def main():
|
6 |
+
st.title("Text Extractor and Summarizer")
|
7 |
+
|
8 |
+
st.subheader("(Detta är ett exempel på hur en blankett från Skatteverket sammanfattas)")
|
9 |
+
page.createDemoPage("Examples/A-skatt.pdf")
|
10 |
+
|
11 |
+
main()
|
pages/Bruksanvisning Automower.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from summarize import Summarizer
|
3 |
+
import page
|
4 |
+
|
5 |
+
def main():
|
6 |
+
st.title("Text Extractor and Summarizer")
|
7 |
+
|
8 |
+
st.subheader("(Detta är ett exempel på hur en bruksanvisnig för en robotgräsklippare sammanfattas)")
|
9 |
+
page.createDemoPage("Examples/BruksanvisningAutomower.pdf")
|
10 |
+
|
11 |
+
main()
|
pages/Deklaration.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from summarize import Summarizer
|
3 |
+
import page
|
4 |
+
|
5 |
+
def main():
|
6 |
+
st.title("Text Extractor and Summarizer")
|
7 |
+
|
8 |
+
st.subheader("(Detta är ett exempel på hur information på en hemsida om hur man deklarerar sammanfattas)")
|
9 |
+
page.createDemoPage("Examples/deklaration.pdf")
|
10 |
+
|
11 |
+
main()
|
pages/FHM Covid-information
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from summarize import Summarizer
|
3 |
+
import page
|
4 |
+
|
5 |
+
def main():
|
6 |
+
st.title("Text Extractor and Summarizer")
|
7 |
+
|
8 |
+
st.subheader("(Detta är ett exempel på hur FHMs webbsida om Covid-19 sammanfattas)")
|
9 |
+
page.createDemoPage("Examples/FHMCovid.pdf")
|
10 |
+
|
11 |
+
main()
|
pages/Hovrättsdom.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from summarize import Summarizer
|
3 |
+
import page
|
4 |
+
|
5 |
+
def main():
|
6 |
+
st.title("Text Extractor and Summarizer")
|
7 |
+
|
8 |
+
st.subheader("(Detta är ett exempel på hur en dom från hovrätten sammanfattas)")
|
9 |
+
page.createDemoPage("Examples/hovrätt.pdf")
|
10 |
+
|
11 |
+
main()
|
pages/Hyresavi.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1 |
import streamlit as st
|
2 |
from summarize import Summarizer
|
3 |
-
import pdfplumber
|
4 |
import page
|
5 |
|
6 |
def main():
|
|
|
1 |
import streamlit as st
|
2 |
from summarize import Summarizer
|
|
|
3 |
import page
|
4 |
|
5 |
def main():
|
pages/Om krisen eller kriget kommer.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1 |
import streamlit as st
|
2 |
from summarize import Summarizer
|
3 |
-
import pdfplumber
|
4 |
import page
|
5 |
|
6 |
def main():
|
|
|
1 |
import streamlit as st
|
2 |
from summarize import Summarizer
|
|
|
3 |
import page
|
4 |
|
5 |
def main():
|
prompts.py
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
systemPrompt = """
|
3 |
+
Du sammanfattar texter på ett sätt som är enkelt att förstå och ta till sig.
|
4 |
+
Syftet är att hjälpa människor förstå svårlästa texter som exempelvis myndighetsbeslut,
|
5 |
+
kontrakt, avier, eller fakturor genom att översätta dem till klartext, alltså till ett språk som är lättförståelig och tydlig.
|
6 |
+
Målet med din uppgift är att användaren enkelt ska kunna förstå vad som står i dokumentet och vad som behöver göras.
|
7 |
+
|
8 |
+
Använd följande metod för att sammanfatta texten:
|
9 |
+
1. Identifiera det viktigaste i texten. Vad är det som är mest relevant för användaren att veta?
|
10 |
+
2. Sammanfatta texten i korta och tydliga meningar. Undvik onödiga detaljer.
|
11 |
+
3. Om det finns siffror, belopp, datum eller liknande som är viktiga, specificera dessa tydligt.
|
12 |
+
4. Sammanställ koncist vad som behöver göras eller vad som är viktigt att veta.
|
13 |
+
|
14 |
+
|
15 |
+
Användaren kommer att skicka en text som representerar den information som finns i dokumentet den vill ha hjälp med att förstå.
|
16 |
+
Din uppgift är att sammanfatta denna text enligt instruktionerna ovan.
|
17 |
+
|
18 |
+
Svara på svenska.
|
19 |
+
"""
|
20 |
+
|
21 |
+
#Till exempel, om det är en faktura som ska betalas, ska du beskriva hur mycket pengar personen totalt ska betala, och specificera vilka bankuppgifter dessa ska betalas till.
|
22 |
+
#Denna information finns innanför taggarna <dokument> och </dokument>.
|
summarize.py
CHANGED
@@ -18,6 +18,7 @@ import torch
|
|
18 |
from streamlit import session_state as ss
|
19 |
from streamlit_pdf_viewer import pdf_viewer
|
20 |
|
|
|
21 |
class Summarizer:
|
22 |
|
23 |
def __init__(self, model = "groq"):
|
|
|
18 |
from streamlit import session_state as ss
|
19 |
from streamlit_pdf_viewer import pdf_viewer
|
20 |
|
21 |
+
|
22 |
class Summarizer:
|
23 |
|
24 |
def __init__(self, model = "groq"):
|
test.json
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"header": {
|
3 |
+
"customer_ref": "407025",
|
4 |
+
"date": "2024-03-13"
|
5 |
+
},
|
6 |
+
"payment_info": {
|
7 |
+
"payee": "Stockholms Studentbostäder",
|
8 |
+
"bankgiro": "5954-0146",
|
9 |
+
"ocr_nr": "317925899"
|
10 |
+
},
|
11 |
+
"invoices": [
|
12 |
+
{
|
13 |
+
"description": "Hyra Bostad",
|
14 |
+
"period": "20240401-20240430",
|
15 |
+
"amount": "4170,00 SEK"
|
16 |
+
},
|
17 |
+
{
|
18 |
+
"description": "Internetanslutning",
|
19 |
+
"period": "20240401-20240430",
|
20 |
+
"amount": "167,00 SEK"
|
21 |
+
}
|
22 |
+
],
|
23 |
+
"total_amount": "5847,00 SEK",
|
24 |
+
"due_date": "2024-03-31",
|
25 |
+
"contact_info": {
|
26 |
+
"phone": "08-458 10 10",
|
27 |
+
"address": "Box 19608, 104 32 Stockholm"
|
28 |
+
}
|
29 |
+
}
|
test.py
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import PyPDF2
|
2 |
+
|
3 |
+
def extract_text_from_pdf(pdf_path):
|
4 |
+
# Open the PDF file
|
5 |
+
with open(pdf_path, 'rb') as file:
|
6 |
+
reader = PyPDF2.PdfReader(file)
|
7 |
+
text = ''
|
8 |
+
|
9 |
+
# Iterate through each page
|
10 |
+
for page in reader.pages:
|
11 |
+
text += page.extract_text()
|
12 |
+
|
13 |
+
return text
|
14 |
+
|
15 |
+
pdf_path = 'Examples/Kris.pdf'
|
16 |
+
print(extract_text_from_pdf(pdf_path))
|