Fix missing tool call id if tool call index >0 in streaming tool call output. (#7049)
Signed-off-by: 许文卿 <xwq391974@alibaba-inc.com>
This commit is contained in:
@@ -1479,7 +1479,7 @@ async def v1_chat_completions(
|
|||||||
reasoning_parser_dict = {}
|
reasoning_parser_dict = {}
|
||||||
|
|
||||||
async def generate_stream_resp():
|
async def generate_stream_resp():
|
||||||
tool_call_first = True
|
tool_index_previous = -1
|
||||||
is_firsts = {}
|
is_firsts = {}
|
||||||
stream_buffers = {}
|
stream_buffers = {}
|
||||||
n_prev_tokens = {}
|
n_prev_tokens = {}
|
||||||
@@ -1645,6 +1645,7 @@ async def v1_chat_completions(
|
|||||||
|
|
||||||
# 2) if we found calls, we output them as separate chunk(s)
|
# 2) if we found calls, we output them as separate chunk(s)
|
||||||
for call_item in calls:
|
for call_item in calls:
|
||||||
|
tool_index_current = call_item.tool_index
|
||||||
# transform call_item -> FunctionResponse + ToolCall
|
# transform call_item -> FunctionResponse + ToolCall
|
||||||
if finish_reason_type == "stop":
|
if finish_reason_type == "stop":
|
||||||
latest_delta_len = 0
|
latest_delta_len = 0
|
||||||
@@ -1671,7 +1672,7 @@ async def v1_chat_completions(
|
|||||||
tool_call = ToolCall(
|
tool_call = ToolCall(
|
||||||
id=(
|
id=(
|
||||||
f"call_{base64.urlsafe_b64encode(uuid.uuid4().bytes).rstrip(b'=').decode()}"
|
f"call_{base64.urlsafe_b64encode(uuid.uuid4().bytes).rstrip(b'=').decode()}"
|
||||||
if tool_call_first
|
if tool_index_previous != tool_index_current
|
||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
index=call_item.tool_index,
|
index=call_item.tool_index,
|
||||||
@@ -1680,7 +1681,7 @@ async def v1_chat_completions(
|
|||||||
arguments=call_item.parameters,
|
arguments=call_item.parameters,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
tool_call_first = False
|
tool_index_previous = tool_index_current
|
||||||
choice_data = ChatCompletionResponseStreamChoice(
|
choice_data = ChatCompletionResponseStreamChoice(
|
||||||
index=index,
|
index=index,
|
||||||
delta=DeltaMessage(tool_calls=[tool_call]),
|
delta=DeltaMessage(tool_calls=[tool_call]),
|
||||||
|
|||||||
Reference in New Issue
Block a user