
    ; i                        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d%S )*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                  4     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.dataSequence[str]c                Z    t                                          d            || _        d S )N)outputs_ipython_display_fn)super__init___data)selfr   	__class__s     /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/google/generativeai/notebook/command_utils.pyr   z _GroundTruthLLMFunction.__init__%   s)    D999


    returnAbstractSet[str]c                     t          i           S N)	frozenset)r   s    r   get_placeholdersz(_GroundTruthLLMFunction.get_placeholders)   s    }}r   inputs*llmfn_input_utils.LLMFunctionInputs | None(Sequence[llmfn_outputs.LLMFnOutputEntry]c           	     (   t          j        |          }t          | j                  t          |          k    rBt	          d                    t          | j                  t          |                              g }t          t          | j        |                    D ]q\  }\  }}t          j	        t          j        j        dt          j        j        |it                    }|                    t          j        d|||g                     r|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   r$   normalized_inputsoutputsidxvaluer+   
output_rows           r   
_call_implz"_GroundTruthLLMFunction._call_impl-   s    .B6JJtz??c"34444U\\
OOS):%;%;    9;)23tzCT3U3U)V)V 	 	%C%%)8!-8!!-95    J NN. ! +!+	      r   )r   r   )r   r   )r$   r%   r   r&   )__name__
__module____qualname____doc__r   r#   r?   __classcell__)r   s   @r   r   r   "   sk        CC               r   r   envipython_env.IPythonEnvr   ,Callable[[llmfn_outputs.LLMFnOutputs], None]c                      fdS )Nc                R                         |                                           S r!   )displayas_pandas_dataframe)xrE   s    r   <lambda>z)_get_ipython_display_fn.<locals>.<lambda>O   s    S[[!6!6!8!899 r    )rE   s   `r   _get_ipython_display_fnrO   L   s     :9999r   modelsmodel_registry.ModelRegistryipython_env.IPythonEnv | Noneparsed_argsparsed_args_lib.ParsedArgscell_contentr7   post_processing_fns2Sequence[post_process_utils.ParsedPostProcessExpr]llm_function.LLMFunctionc                    |g}|rt          |          nd}t          j        |                     |j                  |j        ||          }|j        r!|                    dt          j                  }|D ]}|	                    |          }|S )z8Creates an LLMFunction from Command.execute() arguments.N)model
model_argspromptsr   unique)namefn)
rO   r   LLMFunctionImpl	get_model
model_typer[   r]   add_post_process_reorder_fnr   add_to_llm_function)	rP   rE   rS   rU   rV   r\   llmfn_outputs_display_fnllm_fnr_   s	            r   create_llm_functionrg   R   s     'G?BL6s;;;){566)#;	  F  [33iFY3ZZ! 0 0''//Mr   name_and_simple_fn%tuple[str, Callable[[str, str], Any]]"tuple[str, llm_function.CompareFn]c                2    | d         fd}| d         |fS )N   c                d     |                                  |                                           S r!   )result_value)rL   y	simple_fns     r   rM   z,_convert_simple_compare_fn.<locals>.<lambda>p   s'    ))ANN$4$4ann6F6FGG r   r   rN   )rh   new_fnrp   s     @r   _convert_simple_compare_fnrr   l   s-     #1%IGGGGFa &((r   c                    | rt          |           nd}t          j        |j        |j        d |j        D             |          }|D ]}|                    |          }|S )?Creates an LLMCompareFunction from Command.execute() arguments.Nc                ,    g | ]}t          |          S rN   rr   .0rL   s     r   
<listcomp>z/create_llm_compare_function.<locals>.<listcomp>   !    \\\8;;\\\r   lhs_name_and_fnrhs_name_and_fncompare_name_and_fnsr   )rO   r   LLMCompareFunctionr|   r}   
compare_fnrd   )rE   rS   rV   re   
llm_cmp_fnr_   s         r   create_llm_compare_functionr   t   s     @CL6s;;;0#3#3\\[E[\\\#;	  J " 8 8++J77

r   c                    |rt          |          nd}t          | ||||          }t          |j                  }t	          j        d|fd|fd |j        D             |          }|S )rt   N)rP   rE   rS   rU   rV   )r   actualground_truthc                ,    g | ]}t          |          S rN   rv   rw   s     r   ry   z,create_llm_eval_function.<locals>.<listcomp>   rz   r   r{   )rO   rg   r   r   r   r   r   )	rP   rE   rS   rU   rV   re   rf   ground_truth_fnr   s	            r   create_llm_eval_functionr      s     @CL6s;;; !!/  F .;3KLLLO0!6*'9\\[E[\\\#;	  J r   N)rE   rF   r   rG   )rP   rQ   rE   rR   rS   rT   rU   r7   rV   rW   r   rX   )rh   ri   r   rj   )rE   rR   rS   rT   rV   rW   r   rX   )rC   
__future__r   typingr   r   r   r   google.generativeai.notebookr   r	   r
   r    google.generativeai.notebook.libr   r   r   r   r   LLMFunctionr   rO   rg   rr   r   r   rN   r   r   <module>r      s    # " " " " " 7 7 7 7 7 7 7 7 7 7 7 7 4 4 4 4 4 4 7 7 7 7 7 7 8 8 8 8 8 8 ; ; ; ; ; ; 9 9 9 9 9 9 > > > > > > = = = = = = : : : : : : 6 6 6 6 6 6' ' ' ' 'l6 ' ' 'T: : : :   4) ) ) )   (     r   