mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 11:43:54 +00:00
Litellm dev bedrock anthropic 3 7 v2 (#8843)
* feat(bedrock/converse/transformation.py): support claude-3-7-sonnet reasoning_Content transformation Closes https://github.com/BerriAI/litellm/issues/8777 * fix(bedrock/): support returning `reasoning_content` on streaming for claude-3-7 Resolves https://github.com/BerriAI/litellm/issues/8777 * feat(bedrock/): unify converse reasoning content blocks for consistency across anthropic and bedrock * fix(anthropic/chat/transformation.py): handle deepseek-style 'reasoning_content' extraction within transformation.py simpler logic * feat(bedrock/): fix streaming to return blocks in consistent format * fix: fix linting error * test: fix test * feat(factory.py): fix bedrock thinking block translation on tool calling allows passing the thinking blocks back to bedrock for tool calling * fix(types/utils.py): don't exclude provider_specific_fields on model dump ensures consistent responses * fix: fix linting errors * fix(convert_dict_to_response.py): pass reasoning_content on root * fix: test * fix(streaming_handler.py): add helper util for setting model id * fix(streaming_handler.py): fix setting model id on model response stream chunk * fix(streaming_handler.py): fix linting error * fix(streaming_handler.py): fix linting error * fix(types/utils.py): add provider_specific_fields to model stream response * fix(streaming_handler.py): copy provider specific fields and add them to the root of the streaming response * fix(streaming_handler.py): fix check * fix: fix test * fix(types/utils.py): ensure messages content is always openai compatible * fix(types/utils.py): fix delta object to always be openai compatible only introduce new params if variable exists * test: fix bedrock nova tests * test: skip flaky test * test: skip flaky test in ci/cd
This commit is contained in:
parent
f3ef6c92a3
commit
05a973bf19
20 changed files with 447 additions and 149 deletions
|
@ -108,10 +108,10 @@ def test_nova_invoke_streaming_chunk_parsing():
|
|||
}
|
||||
}
|
||||
result = decoder._chunk_parser(nova_text_chunk)
|
||||
assert result["text"] == "Hello, how can I help?"
|
||||
assert result["index"] == 0
|
||||
assert not result["is_finished"]
|
||||
assert result["tool_use"] is None
|
||||
assert result.choices[0].delta.content == "Hello, how can I help?"
|
||||
assert result.choices[0].index == 0
|
||||
assert not result.choices[0].finish_reason
|
||||
assert result.choices[0].delta.tool_calls is None
|
||||
|
||||
# Test case 2: Tool use start in contentBlockDelta
|
||||
nova_tool_start_chunk = {
|
||||
|
@ -121,12 +121,12 @@ def test_nova_invoke_streaming_chunk_parsing():
|
|||
}
|
||||
}
|
||||
result = decoder._chunk_parser(nova_tool_start_chunk)
|
||||
assert result["text"] == ""
|
||||
assert result["index"] == 1
|
||||
assert result["tool_use"] is not None
|
||||
assert result["tool_use"]["type"] == "function"
|
||||
assert result["tool_use"]["function"]["name"] == "get_weather"
|
||||
assert result["tool_use"]["id"] == "tool_1"
|
||||
assert result.choices[0].delta.content == ""
|
||||
assert result.choices[0].index == 1
|
||||
assert result.choices[0].delta.tool_calls is not None
|
||||
assert result.choices[0].delta.tool_calls[0].type == "function"
|
||||
assert result.choices[0].delta.tool_calls[0].function.name == "get_weather"
|
||||
assert result.choices[0].delta.tool_calls[0].id == "tool_1"
|
||||
|
||||
# Test case 3: Tool use arguments in contentBlockDelta
|
||||
nova_tool_args_chunk = {
|
||||
|
@ -136,10 +136,13 @@ def test_nova_invoke_streaming_chunk_parsing():
|
|||
}
|
||||
}
|
||||
result = decoder._chunk_parser(nova_tool_args_chunk)
|
||||
assert result["text"] == ""
|
||||
assert result["index"] == 2
|
||||
assert result["tool_use"] is not None
|
||||
assert result["tool_use"]["function"]["arguments"] == '{"location": "New York"}'
|
||||
assert result.choices[0].delta.content == ""
|
||||
assert result.choices[0].index == 2
|
||||
assert result.choices[0].delta.tool_calls is not None
|
||||
assert (
|
||||
result.choices[0].delta.tool_calls[0].function.arguments
|
||||
== '{"location": "New York"}'
|
||||
)
|
||||
|
||||
# Test case 4: Stop reason in contentBlockDelta
|
||||
nova_stop_chunk = {
|
||||
|
@ -149,5 +152,4 @@ def test_nova_invoke_streaming_chunk_parsing():
|
|||
}
|
||||
result = decoder._chunk_parser(nova_stop_chunk)
|
||||
print(result)
|
||||
assert result["is_finished"] is True
|
||||
assert result["finish_reason"] == "tool_calls"
|
||||
assert result.choices[0].finish_reason == "tool_calls"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue