o
    j6h                     @  s   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 dejZd+ddZd,dd Zd-d$d%Zd.d&d'Zd,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                      s6   e Zd ZdZd fddZddd	ZdddZ  ZS )_GroundTruthLLMFunctionz9LLMFunction that returns pre-generated ground truth data.dataSequence[str]c                   s   t  jd d || _d S )N)outputs_ipython_display_fn)super__init___data)selfr   	__class__ y/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/google/generativeai/notebook/command_utils.pyr   %   s   
z _GroundTruthLLMFunction.__init__returnAbstractSet[str]c                 C  s   t i S N)	frozenset)r   r   r   r   get_placeholders)   s   z(_GroundTruthLLMFunction.get_placeholdersinputs*llmfn_input_utils.LLMFunctionInputs | None(Sequence[llmfn_outputs.LLMFnOutputEntry]c              	   C  s   t |}t| jt|krtdt| jt|g }tt| j|D ]"\}\}}tj	t
jjdt
jj|itd}|t
jd|||gd q%|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_rowr   r   r   
_call_impl-   s0   
z"_GroundTruthLLMFunction._call_impl)r   r   )r   r   )r!   r"   r   r#   )__name__
__module____qualname____doc__r   r    r;   __classcell__r   r   r   r   r   "   s
    
r   envipython_env.IPythonEnvr   ,Callable[[llmfn_outputs.LLMFnOutputs], None]c                   s    fddS )Nc                   s     |  S r   )displayas_pandas_dataframe)xrA   r   r   <lambda>O   s    z)_get_ipython_display_fn.<locals>.<lambda>r   rG   r   rG   r   _get_ipython_display_fnL   s   rI   modelsmodel_registry.ModelRegistryipython_env.IPythonEnv | Noneparsed_argsparsed_args_lib.ParsedArgscell_contentr3   post_processing_fns2Sequence[post_process_utils.ParsedPostProcessExpr]llm_function.LLMFunctionc           	      C  s`   |g}|r	t |nd}tj| |j|j||d}|jr$|jdtjd}|D ]}|	|}q&|S )z8Creates an LLMFunction from Command.execute() arguments.N)model
model_argspromptsr   unique)namefn)
rI   r   LLMFunctionImpl	get_model
model_typerT   rV   add_post_process_reorder_fnr   add_to_llm_function)	rJ   rA   rM   rO   rP   rU   llmfn_outputs_display_fnllm_fnrX   r   r   r   create_llm_functionR   s   
r`   name_and_simple_fn%tuple[str, Callable[[str, str], Any]]"tuple[str, llm_function.CompareFn]c                   s    | d   fdd}| d |fS )N   c                   s    |   |  S r   )result_value)rF   y	simple_fnr   r   rH   p   s    z,_convert_simple_compare_fn.<locals>.<lambda>r   r   )ra   new_fnr   rg   r   _convert_simple_compare_fnl   s   rj   c                 C  sJ   | rt | nd}tj|j|jdd |jD |d}|D ]}||}q|S )?Creates an LLMCompareFunction from Command.execute() arguments.Nc                 S     g | ]}t |qS r   rj   .0rF   r   r   r   
<listcomp>       z/create_llm_compare_function.<locals>.<listcomp>lhs_name_and_fnrhs_name_and_fncompare_name_and_fnsr   )rI   r   LLMCompareFunctionrs   rt   
compare_fnr]   )rA   rM   rP   r^   
llm_cmp_fnrX   r   r   r   create_llm_compare_functiont   s   ry   c           	      C  sX   |rt |nd}t| ||||d}t|jd}tjd|fd|fdd |jD |d}|S )	rk   N)rJ   rA   rM   rO   rP   )r   actualground_truthc                 S  rl   r   rm   rn   r   r   r   rp      rq   z,create_llm_eval_function.<locals>.<listcomp>rr   )rI   r`   r   r{   r   rv   rw   )	rJ   rA   rM   rO   rP   r^   r_   ground_truth_fnrx   r   r   r   create_llm_eval_function   s    	r}   N)rA   rB   r   rC   )rJ   rK   rA   rL   rM   rN   rO   r3   rP   rQ   r   rR   )ra   rb   r   rc   )rA   rL   rM   rN   rP   rQ   r   rR   )r?   
__future__r   typingr   r   r   r   google.generativeai.notebookr   r   r	   r
    google.generativeai.notebook.libr   r   r   r   r   LLMFunctionr   rI   r`   rj   ry   r}   r   r   r   r   <module>   s$   
*


