Fix date range processing: extract first range only, add JSON format instructions, increase max_tokens

This commit is contained in:
ppanchigar
2026-02-04 12:17:50 -06:00
parent 5b619b2f5f
commit 16ead7d5f3
3 changed files with 20 additions and 7 deletions
+1 -1
View File
@@ -899,7 +899,7 @@ def prompt_split_reimb_dates(date_range: str, filename: str) -> dict:
prompt,
model_id="sonnet_latest",
filename=filename,
max_tokens=200,
max_tokens=500,
cache=True,
instruction=prompt_templates.SPLIT_REIMB_DATES_INSTRUCTION(),
usage_label="SPLIT_REIMB_DATES",
@@ -679,6 +679,13 @@ def split_reimb_dates(one_to_n_results: list, filename: str) -> list:
llm_answer_final = prompt_calls.prompt_split_reimb_dates(
date_range, filename
)
# Debug: print raw parsed LLM output
print(f"DEBUG split_reimb_dates - Index {index}:")
print(f" Input date_range: {date_range}")
print(f" Parsed LLM output: {llm_answer_final} (type: {type(llm_answer_final)})")
if isinstance(llm_answer_final, dict):
print(f" start_date: {llm_answer_final.get('start_date')}")
print(f" end_date: {llm_answer_final.get('end_date')}")
# Update the specific record with parsed dates
if llm_answer_final and isinstance(llm_answer_final, dict):
if "start_date" in llm_answer_final:
+12 -6
View File
@@ -2010,7 +2010,7 @@ def EFFECTIVE_DATE_FIX_PROMPT() -> Tuple[str, Callable[[str], dict]]:
def SPLIT_REIMB_DATES_INSTRUCTION() -> str:
"""Static instruction for SPLIT_REIMB_DATES prompt caching."""
return """[OBJECTIVE]
return f"""[OBJECTIVE]
Extract start and end dates from a date range string and return them in YYYY/MM/DD format.
[RULES]
@@ -2034,17 +2034,23 @@ Extract start and end dates from a date range string and return them in YYYY/MM/
5. If only one date is present:
- Assume it is the start_date and set end_date as "N/A"
6. If no extractable dates are found in the text:
6. If multiple date ranges are present (separated by commas, e.g., "Effective 5/1/2018 - 4/30/2019, Effective 5/1/2019 - 4/30/2020"):
- Extract the FIRST (earliest) date range only
- Use the start_date from the first range and end_date from the first range
- Ignore all subsequent date ranges
7. If no extractable dates are found in the text:
- Return "N/A" for both start_date and end_date
[OUTPUT FORMAT]
Return the dates in the following JSON format:
{
Return ONLY the JSON dictionary with no explanatory text. Use the following format:
{{
"start_date": "YYYY/MM/DD",
"end_date": "YYYY/MM/DD"
}
}}
Note: Use "N/A" for dates that cannot be determined or extracted from the input text."""
Note: Use "N/A" for dates that cannot be determined or extracted from the input text.
{JSON_DICT_FORMAT_INSTRUCTIONS}"""
def SPLIT_REIMB_DATES(date_range: str) -> Tuple[str, Callable[[str], dict]]: