You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
2.1 KiB

from _arango import db
from _llm import LLM
from langchain_text_splitters import CharacterTextSplitter
from print_color import *
interrogations = list(db.aql.execute('for doc in interrogations filter doc.formatted_text == null return doc', count=True))
text_splitter = CharacterTextSplitter(
separator="\n\n",
chunk_size=2000,
chunk_overlap=0,
length_function=len,
is_separator_regex=False,
)
for interrogation in interrogations:
text = interrogation['text']
chunks = text_splitter.split_text(text)
formated_chunks = []
for chunk in chunks:
print_yellow(len(chunk))
llm = LLM(chat=False, system_prompt='Du formaterar text enligt med markdown för att göra den lättare att läsa. Använd inte rubriker, bara fet och stil. Om det förekommer en dialog fetmarkera den som talar, exempelvis ** DH: **. Namn ska göras fetade, även om det bara är ett förnamn. Svara alltid med EXAKT samma text som du fick, men formaterad. Svara alltid på svenska.')
if 'name' not in interrogation:
interrogation['name'] = interrogation['person']
name = interrogation['name']
prompt = f'''Kolla på texten nedan: \n\n\n{chunk}\n\n\nJag vill att du svarar med EXAKT samma text, men formaterad enligt markdown för att vara enklare att läsa. Formatera enligt följande:
- Använd aldrig rubriker (#)
- Om det är en längre dialog mellan förhörsledare (FL) och den hörde (DH) så formatera dem med fetstil, exempelvis **DH: **.
- Gör namn på personer fetade, även om det bara är ett förnamn. Den förhörde – {name} – ska inte vara fetad utan normal text.
Ibland är styckeindelningen inte korrekt, försök att göra det lättare att läsa.
Svara ENBART med den formaterade texten, ingenting annat.'''
formatted_chunk = llm.generate(prompt)
print_blue(formatted_chunk)
formated_chunks.append(formatted_chunk)
formatted_text = '\n '.join(formated_chunks)
interrogation['formatted_text'] = formatted_text
db.collection('interrogations').update(interrogation, check_rev=False)