o
    iX                     @   sl   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 edee	Z
de
dede
fd	d
ZdefddZdS )    )TypeVar)Request)RequestValidationError)ChatCompletionRequestChatCompletionResponseChoice"ChatCompletionResponseStreamChoice_ChatCompletionResponseChoiceTchoicerequestreturnc                 C   s`   |j r| S t| tr| jjr| jjdd | j_| S t| tr.| jjr.dd | jjD | j_| S )zAFilter to first tool call only when parallel_tool_calls is False.N   c                 S   s   g | ]	}|j d kr|qS )r   )index).0	tool_call r   S/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/entrypoints/openai/utils.py
<listcomp>$   s    z4maybe_filter_parallel_tool_calls.<locals>.<listcomp>)parallel_tool_calls
isinstancer   message
tool_callsr   delta)r	   r
   r   r   r    maybe_filter_parallel_tool_calls   s   	
r   raw_requestc                    s>   | j dd }|jdddd }|dkrtdgd	d S )
Nzcontent-type ;r   )maxsplitr   zapplication/jsonz:Unsupported Media Type: Only 'application/json' is allowed)errors)headersgetlowersplitr   )r   content_type
media_typer   r   r   validate_json_request+   s   r$   N)typingr   fastapir   fastapi.exceptionsr   0vllm.entrypoints.openai.chat_completion.protocolr   r   r   r   r   r$   r   r   r   r   <module>   s"   
