o
    :/i.                      @   s|   d dl mZ d dl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G dd dejd	d	d
ZdS )    deepcopy)AnyN)ModelConfigPoolerConfig)RequestOutputKind)PoolingTaskc                   @   s2   e Zd ZU dZeed< eed< dZedB ed< dS )LateInteractionParamsa]  Metadata for worker-side late-interaction scoring.

    Attributes:
        mode:
            - "cache_query": cache query token embeddings
            - "score_doc": score a document against a cached query.
        query_key: stable key used for both DP routing and worker cache lookup.
        query_uses: expected number of document requests
    mode	query_keyN
query_uses)__name__
__module____qualname____doc__str__annotations__r   int r   r   `/lsinfo/ai/hellotax_ai/llm_service/venv_vllm/lib/python3.10/site-packages/vllm/pooling_params.pyr	      s
   
 
r	   T)omit_defaults
array_likec                   @   sL  e Zd ZU dZ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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eddfddZdeddfddZde dee fddZ!defddZ"d d! Z#defd"d#Z$d'd$d%Z%dS )(PoolingParamsaI  API parameters for pooling models.

    Attributes:
        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use_activation
dimensionsstep_tag_idreturned_token_idstaskFrequires_token_idsskip_reading_prefix_cachelate_interaction_paramsextra_kwargsoutput_kindreturnc                 C   s   ddgS )Nr   r   r   selfr   r   r   all_parametersI      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_parametersM   s   zPoolingParams.valid_parametersc                 C   s   t | S )z2Returns a deep copy of the PoolingParams instance.r   r$   r   r   r   cloneW   r'   zPoolingParams.clonemodel_configc                 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   verify[   s   



zPoolingParams.verifyc                 C   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 r6t| |t|| q| jd u rH| jdv rEd| _nd| _| || d S )Ntask must be set)r+   r,   TF)pooler_configr   r-   getattrsetattrr   _verify_step_pooling)r%   r/   r6   r-   kr   r   r   r1   j   s    

z'PoolingParams._merge_default_parametersr6   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_typer7   append
ValueErrorr   r8   )r%   r6   r-   step_pooling_parametersinvalid_parametersr:   r   r   r   r9      s*   

z"PoolingParams._verify_step_poolingc                 C   s   | j dv rG| jd u rd| _| jd urC|jstd|j d|j}|d ur:| j|vr8td|jdt| dd S | jdk rEtd	d S d S | j d
v rX| jd u rVd| _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 r=   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_matryoshkarB   served_model_namematryoshka_dimensionsr   )r%   r/   mdsr   r   r   r2      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 )Nr5   r<   r=   r>   r?   )r   r-   r&   r7   rA   rB   )r%   r-   rD   r:   r   r   r   r3      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, late_interaction_params=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#   N)&r   r   r   r   r   boolr   r   r   r   r   listr   r   r   r   r    r	   r!   dictr   r   r   rL   r"   propertyr&   r-   r.   r   r4   r1   r   r9   r2   r3   rK   rM   r   r   r   r   r   "   s8   
 


	
r   )copyr   typingr   msgspecvllm.configr   r   vllm.sampling_paramsr   
vllm.tasksr   Structr	   r   r   r   r   r   <module>   s    


