
    +#h                     ^    d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
  G d de      Zy)    N)	BaseModel)	Parameter)
Prediction)ensure_signaturesignature_to_templatec                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)Predictc                     t        j                  d      j                         | _        t	        |      | _        || _        | j                          y )N   )random	randbyteshexstager   	signatureconfigreset)selfr   r   s      Q/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/predict/predict.py__init__zPredict.__init__   s9    %%a(,,.
))4

    c                 <    d | _         g | _        g | _        g | _        y N)lmtracestraindemosr   s    r   r   zPredict.reset   s    

r   c                    g d}|D ci c]  }|t        | |       }}g |d<   | j                  D ]W  }|j                         }|D ],  }t        ||   t              s||   j                         ||<   . |d   j                  |       Y | j                  j                  |d<   | j                  j                  j                         ^ }}| j                  j                  |   j                  d   |d<   |S c c}w )N)r   r   r   r   signature_instructionsprefixsignature_prefix)getattrr   copy
isinstancer   model_dump_jsonappendr   instructionsfieldskeysjson_schema_extra)r   
state_keyskstatedemofield_last_keys           r   
dump_statezPredict.dump_state   s    .
.89GD!$$99gJJ 	(D99;D @d5k95"&u+"="="?DK@ 'N!!$'	( +/..*E*E&'~~,,113H$(NN$9$9($C$U$UV^$_ !% :s   C5c                 F   |j                         D ]  \  }}t        | ||        d|v r%|d   }| j                  j                  |      | _        d|v rO|d   }| j                  j                  j                         ^ }}| j                  j                  ||      | _        y y )Nr   r!   )r    )itemssetattrr   with_instructionsr(   r)   with_updated_fields)r   r-   namevaluer'   r    r0   r1   s           r   
load_statezPredict.load_state.   s     ;;= 	'KD%D$&	' $u, !9:L!^^==lKDN&-.F>>00557LQ!^^??QW?XDN 'r   c                 &     | j                   di |S )N )forwardr   kwargss     r   __call__zPredict.__call__<   s    t||%f%%r   c                    t        j                  dd             }t        j                  d| j                              }j                  d| j                        }t	        di | j
                  j                  di       }j                  d| j                        xs t        j                  j                  }|J d       |j                  d      }||j                  d   n|}|j                  d      }|6|j                  j                  d|j                  j                  d	d
            }||dk  r
|d
kD  rd|d<   t        j                  dd|i}	||}t        fd|j                  D              sN|j                  D 
cg c]	  }
|
v s|
 }}
|j                  D 
cg c]	  }
|
vs|
 }}
t        d| d| d       t        |      }| j                  , t        j                   |fi ||	| j"                        \  }	}n_t        j                  j%                  | j                  d      5   t        j                   |fi ||	| j"                        \  }	}d d d        | j"                  |	v sJ d       g }D ]g  }|j'                  i        |j(                  D ]E  }|j*                  j-                         vs t/        ||j*                        |d   |j*                  <   G i t1        j2                  ||      }j                  dd      rJt        j                  j4                  0t        j                  j4                  }|j'                  | i |f       |S c c}
w c c}
w # 1 sw Y   xY w)Nnew_signaturer   r   r   r   zNo LM is loaded.temperaturennum_generations   g333333?gffffff?c              3   &   K   | ]  }|v  
 y wr   r<   ).0r,   r?   s     r   	<genexpr>z"Predict.forward.<locals>.<genexpr>^   s     ?11;?s   z@WARNING: Not all input fields were provided to module. Present: z. Missing: .)r   T)r   
query_onlyz4The generated (input, output) example was not stored)r   _tracer<   )r   popr   r   dictr   r   dspsettingsgetr?   Exampleallinput_fieldsprintr   generater   contextr&   r(   output_variabler)   r"   r   from_completionstrace)r   r?   rB   r   r   r   r   rC   rE   xr,   presentmissingtemplateCcompletionscr/   predr[   s    `                  r   r=   zPredict.forward?   s&   (OT)JK$VZZT^^%LM	

7DJJ/@@vzz(B'?@ ZZdgg&9#,,//~111~ jj/2=2Ebii.; **S/" iimmC?PRS1TUO;$#6Oa<O$'F=! KK.e.v.$%I?	(>(>??"+"8"8HQAKqHGH"+"8"8LQAVOqLGLTU\T]]hiphqqrst )377?33<<3F3ATZZHDAq %%T%B M7s||H77L1M zzQV VV 	Ar"! ((==D-->KOE$9$9:	 **;)L::h%#,,*<*<*HLL&&ELL$
6
D12E ILM Ms$   	M%M%)	M*3M*9,M//M9c                 .    i | j                   || _         y r   r   r>   s     r   update_configzPredict.update_config   s    ///r   c                     | j                   S r   re   r   s    r   
get_configzPredict.get_config   s    {{r   c                 N    | j                   j                   d| j                   dS )N())	__class____name__r   r   s    r   __repr__zPredict.__repr__   s%    ..))*!DNN+;1==r   N)rm   
__module____qualname__r   r   r2   r:   r@   r=   rf   rh   rn   r<   r   r   r	   r	      s2    ,Y&BH0>r   r	   )r   pydanticr   rP   dspy.predict.parameterr   dspy.primitives.predictionr   dspy.signatures.signaturer   r   r	   r<   r   r   <module>ru      s%      
 , 1 M>i >r   