mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-05 05:10:38 +08:00
Merge pull request #1506 from qodo-ai/tr/fallback
fix: add fallback for parsing AI responses with leading '+' symbols
This commit is contained in:
@ -735,7 +735,7 @@ def try_fix_yaml(response_text: str,
|
|||||||
get_logger().info(f"Successfully parsed AI prediction after adding |-\n")
|
get_logger().info(f"Successfully parsed AI prediction after adding |-\n")
|
||||||
return data
|
return data
|
||||||
except:
|
except:
|
||||||
get_logger().info(f"Failed to parse AI prediction after adding |-\n")
|
pass
|
||||||
|
|
||||||
# second fallback - try to extract only range from first ```yaml to ````
|
# second fallback - try to extract only range from first ```yaml to ````
|
||||||
snippet_pattern = r'```(yaml)?[\s\S]*?```'
|
snippet_pattern = r'```(yaml)?[\s\S]*?```'
|
||||||
@ -779,9 +779,18 @@ def try_fix_yaml(response_text: str,
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# fifth fallback - try to remove leading '+' (sometimes added by AI for 'existing code' and 'improved code')
|
||||||
|
response_text_lines_copy = response_text_lines.copy()
|
||||||
|
for i in range(0, len(response_text_lines_copy)):
|
||||||
|
response_text_lines_copy[i] = ' ' + response_text_lines_copy[i][1:]
|
||||||
|
try:
|
||||||
|
data = yaml.safe_load('\n'.join(response_text_lines_copy))
|
||||||
|
get_logger().info(f"Successfully parsed AI prediction after removing leading '+'")
|
||||||
|
return data
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
# fifth fallback - try to remove last lines
|
# sixth fallback - try to remove last lines
|
||||||
data = {}
|
|
||||||
for i in range(1, len(response_text_lines)):
|
for i in range(1, len(response_text_lines)):
|
||||||
response_text_lines_tmp = '\n'.join(response_text_lines[:-i])
|
response_text_lines_tmp = '\n'.join(response_text_lines[:-i])
|
||||||
try:
|
try:
|
||||||
|
Reference in New Issue
Block a user