
    Q
i                         d dl mZmZmZm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mZ d dlmZmZ d dlmZ d dlmZmZmZ  G d de          Z G d	 d
e          Z G d de          ZdS )    )AnyDictListOptional)	BaseModel
ConfigDictFieldfield_validatormodel_validator)CACHE_VECTOR_FIELD_NAMEINSERTED_AT_FIELD_NAMEPROMPT_FIELD_NAMERESPONSE_FIELD_NAMEUPDATED_AT_FIELD_NAME)array_to_bufferhashify)IndexSchema)current_timestampdeserialize	serializec                      e Zd ZU dZ ed          Zee         ed<   	 eed<   	 eed<   	 e	e
         ed<   	  ee          Ze
ed	<   	  ee          Ze
ed
<   	  ed          Zeeeef                  ed<   	  ed          Zeeeef                  ed<   	  ed          ed                         Z ed          ed                         ZdedefdZdS )
CacheEntryzA single cache entry in RedisNdefaultentry_idpromptresponseprompt_vector)default_factoryinserted_at
updated_atmetadatafiltersbeforemodec                     |                     d          s,t          |d         |                     d                    |d<   |S )Nr   r   r#   )getr   )clsvaluess     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\redisvl/extensions/cache/llm/schema.pygenerate_idzCacheEntry.generate_id%   sC     zz*%% 	R!()96::i;P;P!Q!QF:    c                 R    |$t          |t                    st          d          |S )NzMetadata must be a dictionary.)
isinstancedict	TypeError)r)   vs     r+   non_empty_metadatazCacheEntry.non_empty_metadata-   s+     =At!4!4=<===r-   dtypereturnc                     |                      d          }t          | j        |          |d<   | j        t	          | j                  |d<   | j        |                    | j                   |d= |S )NTexclude_noner   r"   r#   )
model_dumpr   r   r"   r   r#   update)selfr4   datas      r+   to_dictzCacheEntry.to_dict4   sp    D11 /0BE J J_=$(77D<#KK%%%Yr-   )__name__
__module____qualname____doc__r	   r   r   str__annotations__r   floatr   r    r!   r"   r   r   r#   r   classmethodr,   r
   r3   r=    r-   r+   r   r      s        ''#eD111Hhsm111 KKK2MMM=;5/@AAAKAAA<.?@@@J@@@>).t)<)<)<HhtCH~&<<<5(-d(;(;(;GXd38n%;;;R_(###  [ $# _Z    [ ! 
S T      r-   r   c                   t   e Zd ZU dZeed<   	 eed<   	 eed<   	 eed<   	 eed<   	 eed<   	  ed	          Ze	e
eef                  ed
<   	  ed	          Ze	e
eef                  ed<   	  ed          Z ed          ede
eef         de
eef         fd                        Zde
eef         fdZdS )CacheHitz%A cache hit based on some input queryr   r   r   vector_distancer    r!   Nr   r"   r#   allow)extrar$   r%   r*   r5   c                 8   d|v r3t          |d         t                    rt          |d                   |d<   |                    di           pi }|rH|                    d          pi }t          |t
                    si }|                    |           ||d<   |S )Nr"   __pydantic_extra__r#   )r/   rB   r   popr(   r0   r:   )r)   r*   
extra_datacurrent_filterss       r+   validate_cache_hitzCacheHit.validate_cache_hitV   s     Jvj/A3$G$G!,VJ-?!@!@F: ZZ 4b99?R
 	0$jj339rOot44 %"$"":... /F9r-   c                     |                      d          }|                    d          r|                    |d                    |d= |S )zDConvert this model to a dictionary, merging filters into the result.Tr7   r#   )r9   r(   r:   )r;   r<   s     r+   r=   zCacheHit.to_dicth   sK    D1188I 	 KKY(((Yr-   )r>   r?   r@   rA   rB   rC   rD   r	   r"   r   r   r   r#   r   model_configr   rE   rQ   r=   rF   r-   r+   rH   rH   ?   sR        //MMM KKK2MMM=U<>).t)<)<)<HhtCH~&<<<5(-d(;(;(;GXd38n%;;;R :G,,,L_(###S#X 4S>    [ $# c3h      r-   rH   c            	       6    e Zd Zededededefd            ZdS )SemanticCacheIndexSchemanameprefixvector_dimsr4   c                      | ||dt           ddt          ddt          ddt          ddt          d||dddd	g
          S )N)rV   rW   text)rV   typenumericvectorcosineflat)dimsdatatypedistance_metric	algorithm)rV   r[   attrs)indexfields)r   r   r   r   r   )r)   rV   rW   rX   r4   s        r+   from_paramsz$SemanticCacheIndexSchema.from_paramss   s}    s622*F;;,f==/CC.	BB3$ +$)+3%+	 	 	
 
 
 	
r-   N)r>   r?   r@   rE   rB   intrg   rF   r-   r+   rU   rU   q   sN        
s 
C 
c 
# 
 
 
 [
 
 
r-   rU   N)typingr   r   r   r   pydanticr   r   r	   r
   r   redisvl.extensions.constantsr   r   r   r   r   redisvl.redis.utilsr   r   redisvl.schemar   redisvl.utils.utilsr   r   r   r   rH   rU   rF   r-   r+   <module>ro      sm   , , , , , , , , , , , , S S S S S S S S S S S S S S              9 8 8 8 8 8 8 8 & & & & & & I I I I I I I I I I+ + + + + + + +\/ / / / /y / / /d
 
 
 
 
{ 
 
 
 
 
r-   