|
@@ -84,13 +84,16 @@ class RouterOutputParser(BaseOutputParser[Dict[str, str]]):
|
|
|
|
|
|
def parse_json_markdown(self, json_string: str) -> dict:
|
|
|
# Remove the triple backticks if present
|
|
|
- json_string = json_string.replace("```json", "").replace("```", "")
|
|
|
+ start_index = json_string.find("```json")
|
|
|
+ end_index = json_string.find("```", start_index + len("```json"))
|
|
|
|
|
|
- # Strip whitespace and newlines from the start and end
|
|
|
- json_string = json_string.strip()
|
|
|
+ if start_index != -1 and end_index != -1:
|
|
|
+ extracted_content = json_string[start_index + len("```json"):end_index].strip()
|
|
|
|
|
|
- # Parse the JSON string into a Python dictionary
|
|
|
- parsed = json.loads(json_string)
|
|
|
+ # Parse the JSON string into a Python dictionary
|
|
|
+ parsed = json.loads(extracted_content)
|
|
|
+ else:
|
|
|
+ raise Exception("Could not find JSON block in the output.")
|
|
|
|
|
|
return parsed
|
|
|
|