This commit is contained in:
Xinyu Wu 2025-11-28 00:17:43 -05:00 committed by GitHub
commit 8e88bf065f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 4 deletions

View file

@ -812,14 +812,19 @@ def try_fix_yaml(response_text: str,
pass pass
# second fallback - try to extract only range from first ```yaml to the last ``` # second fallback - try to extract only range from first ```yaml to the last ```
snippet_pattern = r'```yaml([\s\S]*?)```(?=\s*$|")' snippet_pattern = r'```(yaml|yml)?([\s\S]*?)```(?=\s*$|")'
snippet = re.search(snippet_pattern, '\n'.join(response_text_lines_copy)) snippet = re.search(snippet_pattern, '\n'.join(response_text_lines_copy))
if not snippet: if not snippet:
snippet = re.search(snippet_pattern, response_text_original) # before we removed the "```" snippet = re.search(snippet_pattern, response_text_original) # before we removed the "```"
if snippet: if snippet:
snippet_text = snippet.group() snippet_text = snippet.group()
prefix = (
'```yaml'
if snippet_text.startswith('```yaml')
else ('```yml' if snippet_text.startswith('```yml') else '```')
)
try: try:
data = yaml.safe_load(snippet_text.removeprefix('```yaml').rstrip('`')) data = yaml.safe_load(snippet_text.removeprefix(prefix).rstrip('`'))
get_logger().info(f"Successfully parsed AI prediction after extracting yaml snippet") get_logger().info(f"Successfully parsed AI prediction after extracting yaml snippet")
return data return data
except: except:

View file

@ -21,16 +21,34 @@ class TestTryFixYaml:
# The function extracts YAML snippet # The function extracts YAML snippet
def test_extract_snippet(self): def test_extract_snippet(self):
review_text = '''\ review_text1 = '''\
Here is the answer in YAML format: Here is the answer in YAML format:
```yaml ```yaml
name: John Smith name: John Smith
age: 35 age: 35
``` ```
'''
review_text2 = '''\
Here is the answer in YAML format:
```yml
name: John Smith
age: 35
```
'''
review_text3 = '''\
Here is the answer in YAML format:
```
name: John Smith
age: 35
```
''' '''
expected_output = {'name': 'John Smith', 'age': 35} expected_output = {'name': 'John Smith', 'age': 35}
assert try_fix_yaml(review_text) == expected_output assert try_fix_yaml(review_text1) == expected_output
assert try_fix_yaml(review_text2) == expected_output
assert try_fix_yaml(review_text3) == expected_output
# The YAML string is empty. # The YAML string is empty.