Spaces:
Running
Running
Update model.py
Browse files
model.py
CHANGED
@@ -865,13 +865,12 @@ def parse_multi_sample_llm_output(raw_response: str, output_format_str):
|
|
865 |
metadata_list = {}
|
866 |
explanation_lines = []
|
867 |
output_answers = raw_response.split("\n")[0].split(", ")
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
print("explain line split by new line: ", explanation_lines)
|
875 |
output_formats = output_format_str.split(", ")
|
876 |
explain = ""
|
877 |
# assign output format to its output answer and explanation
|
@@ -880,9 +879,17 @@ def parse_multi_sample_llm_output(raw_response: str, output_format_str):
|
|
880 |
for o in range(len(outputs)):
|
881 |
output = outputs[o]
|
882 |
metadata_list[output] = {"answer":"",
|
883 |
-
|
884 |
# assign output answers
|
885 |
if o < len(output_answers):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
886 |
metadata_list[output]["answer"] = output_answers[o]
|
887 |
if "unknown" in metadata_list[output]["answer"].lower():
|
888 |
metadata_list[output]["answer"] = "unknown"
|
@@ -1238,7 +1245,7 @@ def query_document_info(query_word, alternative_query_word, metadata, master_str
|
|
1238 |
f"If the text does not specify ancient or archaeological context, assume 'modern'. "
|
1239 |
f"Provide only {output_format_str}. "
|
1240 |
f"If any information is not explicitly present, use the fallback rules above before defaulting to 'unknown'. "
|
1241 |
-
f"
|
1242 |
f"\n\nText Snippets:\n{context_for_llm}\n\n"
|
1243 |
f"Output Format: {output_format_str}"
|
1244 |
)
|
|
|
865 |
metadata_list = {}
|
866 |
explanation_lines = []
|
867 |
output_answers = raw_response.split("\n")[0].split(", ")
|
868 |
+
explanation_lines = [x for x in raw_response.split("\n")[1:] if x.strip()]
|
869 |
+
print("raw explanation line which split by new line: ", explanation_lines)
|
870 |
+
if len(explanation_lines) == 1:
|
871 |
+
if len(explanation_lines[0].split(". ")) > len(explanation_lines):
|
872 |
+
explanation_lines = [x for x in explanation_lines[0].split(". ") if x.strip()]
|
873 |
+
print("explain line split by dot: ", explanation_lines)
|
|
|
874 |
output_formats = output_format_str.split(", ")
|
875 |
explain = ""
|
876 |
# assign output format to its output answer and explanation
|
|
|
879 |
for o in range(len(outputs)):
|
880 |
output = outputs[o]
|
881 |
metadata_list[output] = {"answer":"",
|
882 |
+
output+"_explanation":""}
|
883 |
# assign output answers
|
884 |
if o < len(output_answers):
|
885 |
+
# check if output_format unexpectedly in the answer such as:
|
886 |
+
#country_name: Europe, modern/ancient: modern
|
887 |
+
try:
|
888 |
+
if ": " in output_answers[o]:
|
889 |
+
output_answers[o] = output_answers[o].split(": ")[1]
|
890 |
+
except:
|
891 |
+
pass
|
892 |
+
# Europe, modern
|
893 |
metadata_list[output]["answer"] = output_answers[o]
|
894 |
if "unknown" in metadata_list[output]["answer"].lower():
|
895 |
metadata_list[output]["answer"] = "unknown"
|
|
|
1245 |
f"If the text does not specify ancient or archaeological context, assume 'modern'. "
|
1246 |
f"Provide only {output_format_str}. "
|
1247 |
f"If any information is not explicitly present, use the fallback rules above before defaulting to 'unknown'. "
|
1248 |
+
f"If the {explain_list} is not 'unknown', write 1 sentence after the output explaining how you inferred it from the text (one sentence for each)."
|
1249 |
f"\n\nText Snippets:\n{context_for_llm}\n\n"
|
1250 |
f"Output Format: {output_format_str}"
|
1251 |
)
|