
    rh                    :   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ  G d dej&                        Z	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 ddZy)z\Utilities for Commands.

Common methods for Commands such as RunCommand and CompileCommand.
    )annotations)AbstractSetAnyCallableSequence)ipython_env)model_registry)parsed_args_lib)post_process_utils)llm_function)llmfn_input_utils)llmfn_output_row)llmfn_outputs)	unique_fnc                  <     e Zd ZdZd fdZddZ	 	 	 	 ddZ xZS )_GroundTruthLLMFunctionz9LLMFunction that returns pre-generated ground truth data.c                4    t         |   d        || _        y )N)outputs_ipython_display_fn)super__init___data)selfdata	__class__s     }/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/google/generativeai/notebook/command_utils.pyr   z _GroundTruthLLMFunction.__init__%   s    D9
    c                    t        i       S N)	frozenset)r   s    r   get_placeholdersz(_GroundTruthLLMFunction.get_placeholders)   s    }r   c           	     (   t        j                  |      }t        | j                        t        |      k7  r7t	        dj                  t        | j                        t        |                  g }t        t        | j                  |            D ]  \  }\  }}t        j                  t        j                  j                  dt        j                  j                  |it              }|j                  t        j                   d|||g              |S )NzCGround truth should have same number of entries as inputs: {} vs {}r   )r   result_type)
prompt_num	input_numprompt_varsoutput_rows)r   to_normalized_inputslenr   RuntimeErrorformat	enumeratezipr   LLMFnOutputRowr   ColumnNames
RESULT_NUMTEXT_RESULTstrappendLLMFnOutputEntry)r   inputsnormalized_inputsoutputsidxvaluer%   
output_rows           r   
_call_implz"_GroundTruthLLMFunction._call_impl-   s     .BB6Jtzz?c"344U\\

OS):%;  9;)23tzzCT3U)V 	%C%%)88!--88!!--995  J NN.. ! +!+		  r   )r   zSequence[str])returnzAbstractSet[str])r4   z*llmfn_input_utils.LLMFunctionInputs | Noner;   z(Sequence[llmfn_outputs.LLMFnOutputEntry])__name__
__module____qualname____doc__r   r    r:   __classcell__)r   s   @r   r   r   "   s%    C@	1r   r   c                      fdS )Nc                B    j                  | j                               S r   )displayas_pandas_dataframe)xenvs    r   <lambda>z)_get_ipython_display_fn.<locals>.<lambda>O   s    S[[!6!6!89 r    )rF   s   `r   _get_ipython_display_fnrI   L   s     :9r   c                ,   |g}|rt        |      nd}t        j                  | j                  |j                        |j
                  ||      }|j                  r!|j                  dt        j                        }|D ]  }|j                  |      } |S )z8Creates an LLMFunction from Command.execute() arguments.N)model
model_argspromptsr   unique)namefn)
rI   r   LLMFunctionImpl	get_model
model_typerL   rN   add_post_process_reorder_fnr   add_to_llm_function)	modelsrF   parsed_argscell_contentpost_processing_fnsrM   llmfn_outputs_display_fnllm_fnrP   s	            r   create_llm_functionr\   R   s     'G?B6s;)){556))#;	F 33iFYFY3Z! 0''/0 Mr   c                &    | d   fd}| d   |fS )N   c                N     | j                         |j                               S r   )result_value)rE   y	simple_fns     r   rG   z,_convert_simple_compare_fn.<locals>.<lambda>p   s    )ANN$4ann6FG r   r   rH   )name_and_simple_fnnew_fnrb   s     @r   _convert_simple_compare_fnre   l   s$     #1%IGFa &((r   c           
         | rt        |       nd}t        j                  |j                  |j                  |j
                  D cg c]  }t        |       c}|      }|D ]  }|j                  |      } |S c c}w )?Creates an LLMCompareFunction from Command.execute() arguments.Nlhs_name_and_fnrhs_name_and_fncompare_name_and_fnsr   )rI   r   LLMCompareFunctionri   rj   
compare_fnre   rU   )rF   rW   rY   rZ   rE   
llm_cmp_fnrP   s          r   create_llm_compare_functionro   t   s     @C6s;00#33#33EPE[E[\8;\#;	J " 8++J7
8  ]s   A8c           
         |rt        |      nd}t        | ||||      }t        |j                        }t	        j
                  d|fd|f|j                  D cg c]  }t        |       c}|      }	|	S c c}w )rg   N)rV   rF   rW   rX   rY   )r   actualground_truthrh   )rI   r\   r   rr   r   rl   rm   re   )
rV   rF   rW   rX   rY   rZ   r[   ground_truth_fnrE   rn   s
             r   create_llm_eval_functionrt      s     @C6s; !!/F .;3K3KLO00!6*'9EPE[E[\8;\#;	J 	 ]s   A6N)rF   zipython_env.IPythonEnvr;   z,Callable[[llmfn_outputs.LLMFnOutputs], None])rV   zmodel_registry.ModelRegistryrF   ipython_env.IPythonEnv | NonerW   parsed_args_lib.ParsedArgsrX   r1   rY   2Sequence[post_process_utils.ParsedPostProcessExpr]r;   llm_function.LLMFunction)rc   z%tuple[str, Callable[[str, str], Any]]r;   z"tuple[str, llm_function.CompareFn])rF   ru   rW   rv   rY   rw   r;   rx   )r?   
__future__r   typingr   r   r   r   google.generativeai.notebookr   r	   r
   r    google.generativeai.notebook.libr   r   r   r   r   LLMFunctionr   rI   r\   re   ro   rt   rH   r   r   <module>r~      s   # 7 7 4 7 8 ; 9 > = : 6'l66 'T:	:1:(	& , 	
 L 4)=)')	&+ L 	((	& , 	
 L r   