Skip to content

Commit 51755ef

Browse files
authored
Set ToolCallPartDelta.tool_call_id when known from previous delta (#1694)
1 parent 6d130b6 commit 51755ef

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

pydantic_ai_slim/pydantic_ai/_parts_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from __future__ import annotations as _annotations
1515

1616
from collections.abc import Hashable
17-
from dataclasses import dataclass, field
17+
from dataclasses import dataclass, field, replace
1818
from typing import Any, Union
1919

2020
from pydantic_ai.exceptions import UnexpectedModelBehavior
@@ -198,6 +198,8 @@ def handle_tool_call_delta(
198198
return PartStartEvent(index=part_index, part=updated_part)
199199
else:
200200
# We updated an existing part, so emit a PartDeltaEvent
201+
if updated_part.tool_call_id and not delta.tool_call_id:
202+
delta = replace(delta, tool_call_id=updated_part.tool_call_id)
201203
return PartDeltaEvent(index=part_index, delta=delta)
202204

203205
def handle_tool_call_part(

tests/test_parts_manager.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def test_handle_tool_call_deltas():
104104
PartDeltaEvent(
105105
index=0,
106106
delta=ToolCallPartDelta(
107-
tool_name_delta='1', args_delta=None, tool_call_id=None, part_delta_kind='tool_call'
107+
tool_name_delta='1', args_delta=None, tool_call_id=IsStr(), part_delta_kind='tool_call'
108108
),
109109
event_kind='part_delta',
110110
)
@@ -118,7 +118,7 @@ def test_handle_tool_call_deltas():
118118
PartDeltaEvent(
119119
index=0,
120120
delta=ToolCallPartDelta(
121-
tool_name_delta=None, args_delta='"value1"}', tool_call_id=None, part_delta_kind='tool_call'
121+
tool_name_delta=None, args_delta='"value1"}', tool_call_id=IsStr(), part_delta_kind='tool_call'
122122
),
123123
event_kind='part_delta',
124124
)
@@ -196,7 +196,7 @@ def test_handle_tool_call_part():
196196
PartDeltaEvent(
197197
index=0,
198198
delta=ToolCallPartDelta(
199-
tool_name_delta=None, args_delta='"value1"}', tool_call_id=None, part_delta_kind='tool_call'
199+
tool_name_delta=None, args_delta='"value1"}', tool_call_id=IsStr(), part_delta_kind='tool_call'
200200
),
201201
event_kind='part_delta',
202202
)

0 commit comments

Comments
 (0)