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
# 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))
if not snippet:
snippet = re.search(snippet_pattern, response_text_original) # before we removed the "```"
if snippet:
snippet_text = snippet.group()
prefix = (
'```yaml'
if snippet_text.startswith('```yaml')
else ('```yml' if snippet_text.startswith('```yml') else '```')
)
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")
return data
except:

View file

@ -21,16 +21,34 @@ class TestTryFixYaml:
# The function extracts YAML snippet
def test_extract_snippet(self):
review_text = '''\
review_text1 = '''\
Here is the answer in YAML format:
```yaml
name: John Smith
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}
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.