
    +#h                     F    d dl Z d dlmZ d dlmZ ddlmZ  G d de      Zy)    N)Evaluate)Teleprompter   )BootstrapFewShotc                   4    e Zd Zi dddddfdZd Zdddd	Zy)
BootstrapFewShotWithOptuna      r      c                     || _         || _        || _        || _        d| _        || _        || _        || _        t        d| j                  d| j
                  d       t        d| j                  d       y )Nr   zGoing to sample betweenandztraces per predictor.zWill attempt to trainzcandidate sets.)	metricteacher_settings
max_roundsnum_threadsmin_num_samplesmax_num_samplesnum_candidate_setsmax_labeled_demosprint)selfr   r   max_bootstrapped_demosr   r   num_candidate_programsr   s           ^/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/teleprompt/teleprompt_optuna.py__init__z#BootstrapFewShotWithOptuna.__init__
   sv      0$& 5"8
 "3')=)=udFZFZ\st%t'>'>@QR    c                    | j                   j                         }t        | j                  j	                         |j	                               D ]O  \  \  }}\  }}|j
                  }|j                  d| dt        |      dz
        }t        ||         }	|	g|_        Q t        | j                  | j                  | j                  dd      }
 |
|d      \  }}|j                  d|       |S )	Ndemo_index_for_r   r   FT)devsetr   r   display_tabledisplay_progress)return_all_scoresprogram)student
reset_copyzipcompiled_teleprompternamed_predictorsdemossuggest_intlendictr   valsetr   r   set_user_attr)r   trialprogram2namecompiled_predictor_program2_predictor	all_demos
demo_indexselected_demoevaluatescores               r   	objectivez$BootstrapFewShotWithOptuna.objective'   s    <<**,CF&&7798;T;T;VD
 	7?&T%(?,> +00I**_TF+CQIYZHZ[J :!67M(5$	7 ;;;;((!
 H=qIx0r   N)teacherr-   c                   || _         |xs || _        |j                         | _        ||j	                         n|j                         | _        t        | j                  || j                  | j                  | j                        }|j                  | j                  | j
                  | j                         | _        t        j                  d      }|j                  | j                   | j"                         |j$                  |j&                  j(                     j*                  d   }t-        d|j.                         t-        d|       |S )	N)r   r   r   r   r   )r;   trainsetmaximize)	direction)n_trialsr#   zBest score:zBest program:)r=   r-   r%   r$   deepcopyr;   r   r   r   r   r   compiler'   optunacreate_studyoptimizer:   r   trials
best_trialnumber
user_attrsr   
best_value)	r   r$   r;   	max_demosr=   r-   teleprompter_optimizestudybest_programs	            r   rB   z"BootstrapFewShotWithOptuna.compile;   s    ())+-4-@w'')gFXFXFZ 0;;#,"44!22!
 &;%B%BLL$,, &C &
" ##j9t~~0G0GH||E$4$4$;$;<GG	RmU--.o|,r   )__name__
__module____qualname__r   r:   rB    r   r   r   r   	   s-      !S:( +/D r   r   )rC   dspy.evaluate.evaluater   dspy.teleprompt.telepromptr   	bootstrapr   r   rR   r   r   <module>rV      s     + 3 'F Fr   