46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
|
|
from openai.types.chat import (
|
|
ChatCompletionAssistantMessageParam,
|
|
ChatCompletionMessageToolCallParam,
|
|
ChatCompletionToolMessageParam,
|
|
)
|
|
from openai.types.chat.chat_completion_message_tool_call_param import (
|
|
Function as FunctionCallTool,
|
|
)
|
|
from openai.types.responses import ResponseFunctionToolCall
|
|
|
|
from vllm.entrypoints.openai.protocol import (
|
|
ChatCompletionMessageParam,
|
|
ResponseInputOutputItem,
|
|
)
|
|
|
|
|
|
def construct_chat_message_with_tool_call(
|
|
item: ResponseInputOutputItem,
|
|
) -> ChatCompletionMessageParam:
|
|
if isinstance(item, ResponseFunctionToolCall):
|
|
# Append the function call as a tool call.
|
|
return ChatCompletionAssistantMessageParam(
|
|
role="assistant",
|
|
tool_calls=[
|
|
ChatCompletionMessageToolCallParam(
|
|
id=item.call_id,
|
|
function=FunctionCallTool(
|
|
name=item.name,
|
|
arguments=item.arguments,
|
|
),
|
|
type="function",
|
|
)
|
|
],
|
|
)
|
|
elif item.get("type") == "function_call_output":
|
|
# Append the function call output as a tool message.
|
|
return ChatCompletionToolMessageParam(
|
|
role="tool",
|
|
content=item.get("output"),
|
|
tool_call_id=item.get("call_id"),
|
|
)
|
|
return item # type: ignore
|