o
    -i!                     @   sx   d dl mZ d dlmZ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 d dlmZ G dd	 d	ejd
d
dZdS )    deepcopy)	AnnotatedAnyOptionalN)ModelConfigPoolerConfig)get_use_activation)RequestOutputKind)PoolingTaskc                   @   s  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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ede"d ddfddZ#	d.de"d ddfddZ$d d!d"ee 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 )0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.
        dimensions: Reduce the dimensions of embeddings
            if model support matryoshka representation.
        normalize: Deprecated, please use use_activation instead.
        softmax: Deprecated, please use use_activation instead.
        activation: Deprecated, please use use_activation instead.
        use_activation: Whether to apply activation function to
            the classification outputs.
    N)getruncate_prompt_tokens
dimensions	normalizesoftmax
activationuse_activation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   P/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/pooling_params.pyall_parameters@      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_parametersD   s   zPoolingParams.valid_parametersc                 C   s   t | S )z2Returns a deep copy of the PoolingParams instance.r   r   r   r   r    cloneN   r"   zPoolingParams.clonemodel_configr   c                 C   s   | j d u r	|| _ n| j |krd| j d|d}t|t| | _| j dkr0| jd u r.d| _d S | | | | |   d S )NzYou cannot overwrite self.task=z with task=!pluginT)r   
ValueErrorr	   r   r   _merge_default_parameters_set_default_parameters_verify_valid_parameters)r   r   r*   msgr   r   r    verifyR   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 | 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*   r4   r(   kr   r   r    r.   l   s$   

z'PoolingParams._merge_default_parametersr4   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_typer5   appendr-   r   r6   )r   r4   r(   step_pooling_parametersinvalid_parametersr8   r   r   r    r7      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" 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   is_matryoshkar-   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 )Nr3   r:   r;   r<   r=   )r   r(   r!   r5   r?   r-   )r   r(   rA   r8   r   r   r    r0      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   )N)r   N)*__name__
__module____qualname____doc__r   r   intmsgspecMeta__annotations__r   r   boolr   r   r   r   r   listr   r   r   r   r   dictrF   r   r
   rJ   r   propertyr!   r(   r)   r   r2   r.   r7   r/   r0   rI   rK   r   r   r   r    r      sV   
  

	


r   T)omit_defaults
array_like)copyr   typingr   r   r   rQ   vllm.configr   r   vllm.config.poolerr	   vllm.sampling_paramsr
   
vllm.tasksr   Structr   r   r   r   r    <module>   s   

