a
    bg                     @  s   d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZ ddlmZ er|dd	lmZ d
d
d
eed
d
d
ddd
fdddddddddddddddddZd
S )zPower BI agent.    )annotations)TYPE_CHECKINGAnyDictListOptional)BaseCallbackManager)BaseLanguageModel)POWERBI_PREFIXPOWERBI_SUFFIX)PowerBIToolkit)PowerBIDatasetAgentExecutorN
   Fr	   zOptional[PowerBIToolkit]zOptional[PowerBIDataset]zOptional[BaseCallbackManager]strzOptional[str]zOptional[List[str]]intboolzOptional[Dict[str, Any]]r   r   )llmtoolkitpowerbicallback_managerprefixsuffixformat_instructionsexamplesinput_variablestop_kverboseagent_executor_kwargskwargsreturnc              
   K  s   ddl m} ddlm} ddlm} |du rJ|du r<tdt|| |d}| }|r\|j	n|j
j	}|durtd|ini }|f || |j|f|j|	d	j|d
||d|||
ddd |D d|}|jf ||||
d|pi S )a(  Construct a Power BI agent from an LLM and tools.

    Args:
        llm: The language model to use.
        toolkit: Optional. The Power BI toolkit. Default is None.
        powerbi: Optional. The Power BI dataset. Default is None.
        callback_manager: Optional. The callback manager. Default is None.
        prefix: Optional. The prefix for the prompt. Default is POWERBI_PREFIX.
        suffix: Optional. The suffix for the prompt. Default is POWERBI_SUFFIX.
        format_instructions: Optional. The format instructions for the prompt.
            Default is None.
        examples: Optional. The examples for the prompt. Default is None.
        input_variables: Optional. The input variables for the prompt. Default is None.
        top_k: Optional. The top k for the prompt. Default is 10.
        verbose: Optional. Whether to print verbose output. Default is False.
        agent_executor_kwargs: Optional. The agent executor kwargs. Default is None.
        kwargs: Any. Additional keyword arguments.

    Returns:
        The agent executor.
    r   r   )ZeroShotAgent)LLMChainNz0Must provide either a toolkit or powerbi dataset)r   r   r   r   )r   )tables)r   r   r   )r   promptr   r   c                 S  s   g | ]
}|j qS  )name).0Ztoolr&   r&   }/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/agent_toolkits/powerbi/base.py
<listcomp>U       z$create_pbi_agent.<locals>.<listcomp>)Z	llm_chainZallowed_tools)agenttoolsr   r   )langchain.agentsr   Zlangchain.agents.mrkl.baser"   Zlangchain.chains.llmr#   
ValueErrorr   Z	get_toolsZtable_namesr   Zcreate_promptformatZfrom_agent_and_tools)r   r   r   r   r   r   r   r   r   r   r   r   r    r   r"   r#   r-   r$   Zprompt_paramsr,   r&   r&   r)   create_pbi_agent   sP    $
r1   )__doc__
__future__r   typingr   r   r   r   r   Zlangchain_core.callbacksr   Zlangchain_core.language_modelsr	   Z1langchain_community.agent_toolkits.powerbi.promptr
   r   Z2langchain_community.agent_toolkits.powerbi.toolkitr   Z%langchain_community.utilities.powerbir   r.   r   r1   r&   r&   r&   r)   <module>   s*   