o
    )im                     @   sl   d dl mZ d dlmZmZmZ d dlZd dlmZ d dl	m
Z
 er(d dlmZ G dd dejd	d	d
ZdS )    deepcopy)TYPE_CHECKINGAnyOptionalN)RequestOutputKind)PoolingTask)ModelConfigc                   @   sT  e Zd ZU dZdZee ed< dZee	 ed< dZ
ee	 ed< dZee	 ed< dZee ed< dZeee  ed< dZee ed	< 	 d
Ze	ed< 	 dZeeeef  ed< 	 ejZeed< edee fddZedd Zd#ddZ	d$d	eded ddfddZ	d$ded ddfddZded fddZdd Z defdd Z!d%d!d"Z"dS )&PoolingParamsa  API parameters for pooling models.

    Attributes:
        normalize: Whether to normalize the embeddings outputs.
        dimensions: Reduce the dimensions of embeddings
                    if model support matryoshka representation.
        activation: Whether to apply activation function to
                    the classification outputs.
        softmax: Whether to apply softmax to the reward outputs.
    N
dimensions	normalize
activationsoftmaxstep_tag_idreturned_token_idstaskFrequires_token_idsextra_kwargsoutput_kindreturnc                 C   s   g dS )N)r   r   r   r   r   r    selfr   r   _/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/pooling_params.pyall_parameters6      zPoolingParams.all_parametersc                 C   s   ddgdgdgg ddS )Nr   r   r   )r   r   r   )embedclassifyscoreencoder   r   r   r   r   valid_parameters=   s
   zPoolingParams.valid_parametersc                 C   s   t | S )z2Returns a deep copy of the PoolingParams instance.r   r   r   r   r   cloneF   r   zPoolingParams.clonemodel_configr	   c                 C   sX   | j d u r	|| _ n| j |krd| j d|d}t|| | | | |   d S )NzYou cannot overwrite self.task=z with task=!)r   
ValueError_merge_default_parameters_set_default_parameters_verify_valid_parameters)r   r   r"   msgr   r   r   verifyJ   s   



zPoolingParams.verifyc                 C   s~   |d u rd S |j }|d u rd S | jd usJ d| j| j }|D ]}t||d d u r+q t| |d d u r<t| |t|| q d S )Ntask must be set)pooler_configr   r    getattrsetattr)r   r"   r+   r    kr   r   r   r%   \   s   z'PoolingParams._merge_default_parametersc                 C   s   | j dkrM| jd u rd| _| jd urG|d urI|js"td|j d|j}|d ur>| j|vr<td|j dt| dd S | jdk rKtdd S d S d S | j d	v r^| jd u r\d| _d S d S | j d
kro| j	d u rmd| _	d S d S td| j  )Nr   TzModel "zc" does not support matryoshka representation, changing output dimensions will lead to poor results.z" only supports zN matryoshka dimensions, use other output dimensions will lead to poor results.   z!Dimensions must be greater than 0)r   r   r   zUnknown pooling task: )
r   r   r   Zis_matryoshkar$   Zserved_model_nameZmatryoshka_dimensionsstrr   r   )r   r"   Zmdsr   r   r   r&   q   s<   










z%PoolingParams._set_default_parametersc                 C   sx   | j d us	J d| j| j  }g }| jD ]}||v rqt| |d d ur(|| q|r:td| j  d| d| dd S )Nr*   zTask z only supports z parameters, does not support z parameters)r   r    r   r,   appendr$   )r   r    Zinvalid_parametersr.   r   r   r   r'      s    

z&PoolingParams._verify_valid_parametersc                 C   sN   d| j  d| j d| j d| j d| j d| j d| j d| j d	| j d
S )NzPoolingParams(task=z, normalize=z, dimensions=z, activation=z
, softmax=z, step_tag_id=z, returned_token_ids=z, requires_token_ids=z, extra_kwargs=))	r   r   r   r   r   r   r   r   r   r   r   r   r   __repr__   s&   	zPoolingParams.__repr__c                 C   s   | j tjks
J dd S )Nz,For pooling output_kind has to be FINAL_ONLY)r   r   
FINAL_ONLYr   r   r   r   __post_init__   s   zPoolingParams.__post_init__)r   r
   )N)r   N)#__name__
__module____qualname____doc__r   r   int__annotations__r   boolr   r   r   r   listr   r   r   r   dictr0   r   r   r4   r   propertyr   r    r!   r)   r%   r&   r'   r3   r5   r   r   r   r   r
      sL   
 



"r
   T)Zomit_defaultsZ
array_like)copyr   typingr   r   r   ZmsgspecZvllm.sampling_paramsr   Z
vllm.tasksr   Zvllm.configr	   Structr
   r   r   r   r   <module>   s   

