
    +#hO                     0    d dl Z d dlmZ 	  G d de      Zy)    N)Teleprompterc                   "    e Zd ZdddddZd Zy)EnsembleNF	reduce_fnsizedeterministicc                D    |du sJ d       || _         || _        || _        y)z$A common reduce_fn is dspy.majority.Fz;TODO: Implement example hashing for deterministic ensemble.Nr   )selfr   r   r	   s       U/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/teleprompt/ensemble.py__init__zEnsemble.__init__   s.     %d'dd%"	*    c                     | j                   | j                  dd l} G fdd|j                        } |       S )Nr   c                   .     e Zd Z fdZfdZ xZS )*Ensemble.compile.<locals>.EnsembledProgramc                 0    t         |           | _        y N)superr   programs)r   	__class__r   s    r   r   z3Ensemble.compile.<locals>.EnsembledProgram.__init__   s     " (r   c                     r t        j                  | j                        n| j                  }|D cg c]
  } ||i | }}r |      S |S c c}w r   )randomsampler   )r   argskwargsr   progoutputsr   r   s         r   forwardz2Ensemble.compile.<locals>.EnsembledProgram.forward   sU    AE6===4===EFT400FF$W-- Gs   A)__name__
__module____qualname__r   r   __classcell__)r   r   r   r   s   @r   EnsembledProgramr      s    ) r   r#   )r   r   dspyModule)r   r   r$   r#   r   r   s    `  @@r   compilezEnsemble.compile   s8    yyNN		 	t{{ 	  !!r   )r   r    r!   r   r&    r   r   r   r   
   s    $(t5 +"r   r   )r   dspy.teleprompt.telepromptr   r   r'   r   r   <module>r)      s     3
"| "r   