o
    
۾ia                     @   sh   d dl mZ d dlmZmZ d dlZd dlmZmZ d dl	m
Z
 d dlmZ G dd dejd	d	d
ZdS )    deepcopy)	AnnotatedAnyN)ModelConfigPoolerConfig)RequestOutputKind)PoolingTaskc                   @   sR  e Zd ZU dZdZeeejddf dB e	d< dZ
edB e	d< dZedB e	d< dZedB e	d< dZee dB e	d	< dZedB e	d
< dZee	d< dZedB e	d< dZeeef dB 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dZ	d-			d.ddZ ddd ee fd!d"Z!d/d#d$Z"d%d& Z#defd'd(Z$d0d)d*Z%dS )1PoolingParamsa=  API parameters for pooling models.

    Attributes:
        truncate_prompt_tokens: Controls prompt truncation.
            Set to -1 to use the model's default truncation size.
            Set to k to keep only the last k tokens (left truncation).
            Set to None to disable truncation.
        use_activation: Whether to apply activation function to the pooler outputs.
            `None` uses the pooler's default, which is `True` in most cases.
        dimensions: Reduce the dimensions of embeddings
            if model support matryoshka representation.
    N)getruncate_prompt_tokensuse_activation
dimensionsstep_tag_idreturned_token_idstaskFrequires_token_idsskip_reading_prefix_cacheextra_kwargsoutput_kindreturnc                 C   s   ddgS )Nr   r    selfr   r   G/home/ubuntu/.local/lib/python3.10/site-packages/vllm/pooling_params.pyall_parameters9      zPoolingParams.all_parametersc                 C   s   ddgdgdgddgdgdS )Nr   r   )embedclassifyscoretoken_embedtoken_classifyr   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   cloneG   r   zPoolingParams.clonemodel_configr   c                 C   s>   | j dkr| jd u rd| _d S | | | | |   d S )NpluginT)r   r   _merge_default_parameters_set_default_parameters_verify_valid_parameters)r   r%   r   r   r   verifyK   s   



zPoolingParams.verifyModelConfig | Nonec                 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 | jd u rN| jdv rKd| _nd| _| || d S )Ntask must be set)r!   r"   TF)pooler_configr   r#   getattrsetattrr   _verify_step_pooling)r   r%   r-   r#   kr   r   r   r'   Z   s$   

z'PoolingParams._merge_default_parametersr-   r   r#   c                 C   s   ddg}|j dkr0g }|D ]}t| |d d ur|| q|r.td| j d| d| dd S |D ]}t||d d u r=q2t| |d d u rNt| |t|| q2d S )Nr   r   STEPTask  only supports  parameters, does not support  parameters)tok_pooling_typer.   append
ValueErrorr   r/   )r   r-   r#   step_pooling_parametersinvalid_parametersr1   r   r   r   r0   y   s*   

z"PoolingParams._verify_step_poolingc                 C   s   | j dv 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 td| j )N)r   r!   TzModel "zc" does not support matryoshka representation, changing output dimensions will lead to poor results.zModel r4   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   is_matryoshkar9   served_model_namematryoshka_dimensionsstr)r   r%   mdsr   r   r   r(      s4   







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,   r3   r4   r5   r6   )r   r#   r   r.   r8   r9   )r   r#   r;   r1   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, dimensions=z, use_activation=z, step_tag_id=z, returned_token_ids=z, requires_token_ids=z, skip_reading_prefix_cache=z, truncate_prompt_tokens=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
   )r%   r   r   N)N)r%   r+   r   N)r%   r+   )r   N)&__name__
__module____qualname____doc__r   r   intmsgspecMeta__annotations__r   boolr   r   r   listr   r	   r   r   r   dictr@   r   r   rD   r   propertyr   r#   r$   r*   r'   r0   r(   r)   rC   rE   r   r   r   r   r
      sB   
  

	



r
   T)omit_defaults
array_like)copyr   typingr   r   rK   vllm.configr   r   vllm.sampling_paramsr   
vllm.tasksr	   Structr
   r   r   r   r   <module>   s   

