Spaces:
Sleeping
Sleeping
File size: 1,373 Bytes
d005419 |
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 |
import re
from form.form import work_categories
class LlmParser:
_verification_prompt_answers_regex = re.compile(r"\|\s*([^|]*)\s?", re.MULTILINE)
@classmethod
def parse_verification_prompt_answers(cls, llm_answer) -> dict[int, str | None]:
print(f"llm answer: {llm_answer}")
expected_answers_count = 13
answers = {}
i = 0
question_id = 0
lines = [l for l in llm_answer.split("\n") if len(l.strip()) > 0]
while i < len(lines):
line = lines[i].strip()
if len(line) == 0:
i += 1
elif line.endswith("?") and i+1<len(lines):
i+=1
elif "null" in lines[i]:
answers[question_id] = None
i += 1
question_id += 1
elif ":" in lines[i]:
answers[question_id] = line.split(":")[1]
i += 1
question_id += 1
else:
answers[question_id] = line
i+=1
question_id += 1
return answers
@classmethod
def parse_get_categories_answer(cls, category_answer) -> list[str]:
categories = []
for category in category_answer.split(";"):
categories.extend([k for k, v in work_categories.items() if category in v])
return categories
|