bug: fix cache_control missing during convertion (#8692)

Co-authored-by: Engel Nyst <engel.nyst@gmail.com>
This commit is contained in:
CoreJa 2025-05-25 21:35:34 +08:00 committed by GitHub
parent 77cd05c33b
commit 0c2924453f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 52 additions and 0 deletions

View File

@ -544,6 +544,8 @@ def convert_fncall_messages_to_non_fncall_messages(
raise FunctionCallConversionError(
f'Unexpected content type {type(content)}. Expected str or list. Content: {content}'
)
if 'cache_control' in message:
content[-1]['cache_control'] = {'type': 'ephemeral'}
converted_messages.append({'role': 'user', 'content': content})
else:
raise FunctionCallConversionError(

View File

@ -944,3 +944,53 @@ def test_convert_from_multiple_tool_calls_no_tool_calls():
input_messages
)
assert result == input_messages
def test_convert_fncall_messages_with_cache_control():
"""Test that cache_control is properly handled in tool messages."""
# Prepare test data
messages = [
{
'role': 'tool',
'name': 'test_tool',
'content': [{'type': 'text', 'text': 'test content'}],
'cache_control': {'type': 'ephemeral'},
}
]
# Call the function
result = convert_fncall_messages_to_non_fncall_messages(messages, [])
# Verify the result
assert len(result) == 1
assert result[0]['role'] == 'user'
assert 'cache_control' in result[0]['content'][-1]
assert result[0]['content'][-1]['cache_control'] == {'type': 'ephemeral'}
assert (
result[0]['content'][0]['text']
== 'EXECUTION RESULT of [test_tool]:\ntest content'
)
def test_convert_fncall_messages_without_cache_control():
"""Test that tool messages without cache_control work as expected."""
# Prepare test data
messages = [
{
'role': 'tool',
'name': 'test_tool',
'content': [{'type': 'text', 'text': 'test content'}],
}
]
# Call the function
result = convert_fncall_messages_to_non_fncall_messages(messages, [])
# Verify the result
assert len(result) == 1
assert result[0]['role'] == 'user'
assert 'cache_control' not in result[0]['content'][-1]
assert (
result[0]['content'][0]['text']
== 'EXECUTION RESULT of [test_tool]:\ntest content'
)