mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-17 04:34:25 +00:00
fix(bedrock): keep new Converse helpers inside the type discipline rules
This commit is contained in:
parent
157881085f
commit
8a00b77644
2 changed files with 17 additions and 14 deletions
|
|
@ -21,7 +21,7 @@ from litellm.types.llms.openai import (
|
|||
)
|
||||
|
||||
JsonPath: TypeAlias = tuple[str | int, ...]
|
||||
_Node = TypeVar("_Node")
|
||||
_Node: Final = TypeVar("_Node")
|
||||
_OBJECT: Final = TypeAdapter(Mapping[str, object])
|
||||
_ITEMS: Final = TypeAdapter(Sequence[object])
|
||||
|
||||
|
|
@ -177,8 +177,8 @@ def _text_slots(path: JsonPath, blocks: Iterable[tuple[int, _ContentBlock]]) ->
|
|||
return tuple(slot for slot in slots if slot is not None)
|
||||
|
||||
|
||||
def _text_parts(slots: Sequence[TextSlot]) -> list[ChatCompletionTextObject]:
|
||||
return [ChatCompletionTextObject(type="text", text=slot.text) for slot in slots]
|
||||
def _text_parts(slots: Sequence[TextSlot]) -> tuple[ChatCompletionTextObject, ...]:
|
||||
return tuple(ChatCompletionTextObject(type="text", text=slot.text) for slot in slots)
|
||||
|
||||
|
||||
def _slot_text(slot: Slot) -> str:
|
||||
|
|
@ -217,7 +217,9 @@ def _user_group(
|
|||
if (result := block.tool_result) is not None
|
||||
)
|
||||
slots: Final = _text_slots(path, group)
|
||||
return (ConverseRow(ChatCompletionUserMessage(role="user", content=_text_parts(slots)), slots),) if slots else ()
|
||||
return (
|
||||
(ConverseRow(ChatCompletionUserMessage(role="user", content=list(_text_parts(slots))), slots),) if slots else ()
|
||||
)
|
||||
|
||||
|
||||
def _user_rows(path: JsonPath, blocks: Sequence[_ContentBlock]) -> tuple[ConverseRow, ...]:
|
||||
|
|
@ -250,7 +252,7 @@ def _assistant_rows(
|
|||
if uses:
|
||||
message: Final = ChatCompletionAssistantMessage(
|
||||
role="assistant",
|
||||
content=_text_parts(slots) or None,
|
||||
content=list(_text_parts(slots)) or None,
|
||||
tool_calls=[_tool_call(tool_use) for _, tool_use in uses],
|
||||
)
|
||||
calls: Final = tuple(
|
||||
|
|
@ -259,7 +261,7 @@ def _assistant_rows(
|
|||
return (ConverseRow(message, slots, calls),)
|
||||
if not slots:
|
||||
return ()
|
||||
return (ConverseRow(ChatCompletionAssistantMessage(role="assistant", content=_text_parts(slots)), slots),)
|
||||
return (ConverseRow(ChatCompletionAssistantMessage(role="assistant", content=list(_text_parts(slots))), slots),)
|
||||
|
||||
|
||||
def _message_rows(index: int, message: _Message, include_tool_calls: bool) -> tuple[ConverseRow, ...]:
|
||||
|
|
@ -272,13 +274,17 @@ def _message_rows(index: int, message: _Message, include_tool_calls: bool) -> tu
|
|||
def _system_rows(blocks: Sequence[_ContentBlock]) -> tuple[ConverseRow, ...]:
|
||||
slots: Final = _text_slots(("system",), enumerate(blocks))
|
||||
return (
|
||||
(ConverseRow(ChatCompletionSystemMessage(role="system", content=_text_parts(slots)), slots),) if slots else ()
|
||||
(ConverseRow(ChatCompletionSystemMessage(role="system", content=list(_text_parts(slots))), slots),)
|
||||
if slots
|
||||
else ()
|
||||
)
|
||||
|
||||
|
||||
def _request_field_rows(value: object) -> tuple[ConverseRow, ...]:
|
||||
slots: Final = _string_leaves(("additionalModelRequestFields",), value)
|
||||
return (ConverseRow(ChatCompletionUserMessage(role="user", content=_text_parts(slots)), slots),) if slots else ()
|
||||
return (
|
||||
(ConverseRow(ChatCompletionUserMessage(role="user", content=list(_text_parts(slots))), slots),) if slots else ()
|
||||
)
|
||||
|
||||
|
||||
def converse_rows(request: ConverseRequest, include_tool_calls: bool) -> tuple[ConverseRow, ...]:
|
||||
|
|
|
|||
|
|
@ -170,13 +170,10 @@ class _Scope:
|
|||
scan_only_tool_results: bool
|
||||
|
||||
|
||||
def _flat_texts(body: dict, scope: _Scope) -> tuple[list[str], list[_StringHolder]]:
|
||||
return _extract_converse_texts(body, scope.skip_system, scope.skip_tool, scope.scan_only_tool_results)
|
||||
|
||||
|
||||
def _texts_applied_rows(body: Mapping[str, object], texts: Sequence[str], scope: _Scope) -> tuple[ConverseRow, ...]:
|
||||
rewritten: Final = copy.deepcopy(dict(body))
|
||||
_write_back_texts(texts, _flat_texts(rewritten, scope)[1])
|
||||
_, holders = _extract_converse_texts(rewritten, scope.skip_system, scope.skip_tool, scope.scan_only_tool_results)
|
||||
_write_back_texts(texts, holders)
|
||||
request: Final = parse_converse_request(rewritten)
|
||||
return converse_rows(request, include_tool_calls=not scope.skip_tool) if request else ()
|
||||
|
||||
|
|
@ -530,7 +527,7 @@ class BedrockPassthroughGuardrailHandler(BaseTranslation):
|
|||
skip_tool=effective_skip_tool_message_for_guardrail(guardrail_to_apply),
|
||||
scan_only_tool_results=effective_scan_only_tool_results_for_guardrail(guardrail_to_apply),
|
||||
)
|
||||
texts, holders = _flat_texts(body, scope)
|
||||
texts, holders = _extract_converse_texts(body, scope.skip_system, scope.skip_tool, scope.scan_only_tool_results)
|
||||
request: Final = parse_converse_request(body)
|
||||
rows: Final = converse_rows(request, include_tool_calls=not scope.skip_tool) if request else ()
|
||||
scoped_indices: Final = scoped_structured_message_indices(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue