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