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