o
    WÊãi9  ã                   @  s’   U d dl mZ d dlmZmZmZmZmZ d dlm	Z	 er#d dl
mZ di g ddœZded	< d
dœd dd„Zd
dœd!dd„Zd
ddœd"dd„Zd
S )#é    )Úannotations)ÚAnyÚIterableÚTYPE_CHECKINGÚTypeÚUnion)ÚToolSpec)ÚPluginÚobjectT)ÚtypeÚ
propertiesÚrequiredÚadditionalPropertieszdict[str, Any]ÚDEFAULT_PLUGIN_TOOL_PARAMETERSN©Ú
parametersÚ
plugin_clsú	Type[Any]r   údict[str, Any] | NoneÚreturnr   c                C  sr   t | ddƒ}t | ddƒ}t|tƒr| ¡ st| j› dƒ‚t|tƒr&| ¡ s.t| j› dƒ‚t||t|p5tƒdS )uÖ   å°†æ’ä»¶â€œç±»â€è½¬æ¢ä¸º LLM ToolSpecã€‚

    è¯´æ˜Žï¼š
    - åªè¯»å–ç±»å±žæ€§ï¼Œä¸ä¼šå®žä¾‹åŒ–æ’ä»¶ï¼ˆé¿å…è§¦å‘æ’ä»¶çš„ä¾èµ–åˆå§‹åŒ–ï¼‰ã€‚
    - name/description éœ€è¦å·²åœ¨æ’ä»¶ç±»ä¸Šå®šä¹‰ã€‚
    ÚnameNÚdescriptionz) missing non-empty class attribute `name`z0 missing non-empty class attribute `description`©r   r   r   )	ÚgetattrÚ
isinstanceÚstrÚstripÚ
ValueErrorÚ__name__r   Údictr   )r   r   Ú	tool_nameÚ	tool_desc© r"   ú2/home/dore/onebot/Bot_Ero/core/llm/plugin_tools.pyÚplugin_class_to_tool_spec   s   
ýr$   ÚpluginúUnion[Any, Type[Any]]c                C  s   t | tƒrt| |dS t| ddƒ}t| ddƒ}t |tƒr | ¡ s*tt| ƒj› dƒ‚t |tƒr3| ¡ s=tt| ƒj› dƒ‚t||t	|pDt
ƒdS )u4   å°†æ’ä»¶ï¼ˆç±»æˆ–å®žä¾‹ï¼‰è½¬æ¢ä¸º LLM ToolSpecã€‚r   r   Nr   z# missing non-empty attribute `name`z* missing non-empty attribute `description`r   )r   r   r$   r   r   r   r   r   r   r   r   )r%   r   r    r!   r"   r"   r#   Úplugin_to_tool_spec/   s   

ýr'   )r   Údedupe_by_nameÚpluginsúIterable[Union[Any, Type[Any]]]r(   Úboolúlist[ToolSpec]c                C  sJ   t ƒ }g }| D ]}t||d}|r|j|v rq| |j¡ | |¡ q|S )u+   å°†å¤šä¸ªæ’ä»¶è½¬æ¢ä¸º ToolSpec åˆ—è¡¨ã€‚r   )Úsetr'   r   ÚaddÚappend)r)   r   r(   ÚseenÚspecsÚpÚspecr"   r"   r#   Úplugins_to_tool_specsG   s   
r4   )r   r   r   r   r   r   )r%   r&   r   r   r   r   )r)   r*   r   r   r(   r+   r   r,   )Ú
__future__r   Útypingr   r   r   r   r   Úcore.llm.llmr   Ú	core.baser	   r   Ú__annotations__r$   r'   r4   r"   r"   r"   r#   Ú<module>   s"    úýýü