o
    پi                     @   s   d dl Z d dlmZmZmZmZmZ d dlmZm	Z	m
Z
mZ e eZ				dddZdeeef dee	e
f dee fd	d
Zdeeef dee	e
f dee fddZdeeef dee	e
f dee fddZdS )    N)AnyDictListOptionalUnion)CachedTokensDetailsChatCompletionRequestCompletionRequestLogProbsc                    sb   t    fdd} fdd}| d ur||  |d ur|| |d ur'|| |d ur/||  S )Nc                    s8   | D ]\}}} j |  j|  jd qd S )N)tokensappendtoken_logprobstext_offset)r   logprob_
token_textret_logprobs W/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/entrypoints/openai/utils.pyappend_token_logprobs   s
   z7to_openai_style_logprobs.<locals>.append_token_logprobsc                    s:   | D ]}|d ur j dd |D  q j d  qd S )Nc                 S   s   i | ]	}|d  |d qS )   r   r   ).0tokenr   r   r   
<dictcomp>"   s    zIto_openai_style_logprobs.<locals>.append_top_logprobs.<locals>.<dictcomp>)top_logprobsr   )r   r   r   r   r   append_top_logprobs   s   z5to_openai_style_logprobs.<locals>.append_top_logprobs)r
   )input_token_logprobsoutput_token_logprobsinput_top_logprobsoutput_top_logprobsr   r   r   r   r   to_openai_style_logprobs   s   	r"   ret_itemrequestreturnc                 C   s>   |j sdS | d dd}|durt|dkr|d ng }|S )zProcess hidden states from a ret item in non-streaming response.

    Args:
        ret_item: Response item containing meta_info
        request: The original request object

    Returns:
        Processed hidden states for the last token, or None
    N	meta_infohidden_states   r   )return_hidden_statesgetlen)r#   r$   r'   r   r   r   process_hidden_states_from_ret3   s   r,   c                 C   s    t |ddsdS | d ddS )zAProcess routed experts from a ret item in non-streaming response.return_routed_expertsFNr&   routed_experts)getattrr*   )r#   r$   r   r   r   process_routed_experts_from_retL   s   r0   c                 C   s~   t |ddsdS | d dd}|du rdS d|v r1t|dd|d	d|dd|d
dS t|dd|d	ddS )zHProcess cached tokens details from a ret item in non-streaming response.return_cached_tokens_detailsFNr&   cached_tokens_detailsstoragedevicer   hoststorage_backend)r4   r5   r3   r6   )r4   r5   )r/   r*   r   )r#   r$   detailsr   r   r   &process_cached_tokens_details_from_retY   s    




r8   )NNNN)loggingtypingr   r   r   r   r   &sglang.srt.entrypoints.openai.protocolr   r   r	   r
   	getLogger__name__loggerr"   strr,   r0   r8   r   r   r   r   <module>   sT    

%




