a
    bg
                     @  s~   d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ eeZG dd de	ZG d	d
 d
eZdS )    )annotationsN)OptionalType)CallbackManagerForToolRun)	BaseModelFieldHttpUrl)
EdenaiToolc                   @  s    e Zd ZU eddZded< dS )ObjectDetectionInputzurl of the image to analyze)descriptionr   queryN)__name__
__module____qualname__r   r   __annotations__ r   r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/tools/edenai/image_objectdetection.pyr
      s   
r
   c                   @  s   e Zd ZU dZdZded< dZded< eZded< d	Z	d
ed< dZ
ded< dZded< dddddZdddddZdddddddZdS )EdenAiObjectDetectionToolaf  Tool that queries the Eden AI Object detection API.

    for api reference check edenai documentation:
    https://docs.edenai.co/reference/image_object_detection_create.

    To use, you should have
    the environment variable ``EDENAI_API_KEY`` set with your API token.
    You can find your token here: https://app.edenai.run/admin/account/settings

    Zedenai_object_detectionstrnamezA wrapper around edenai Services Object Detection . Useful for when you have to do an  to identify and locate
        (with bounding boxes) objects in an image Input should be the string url of the image to identify.r   zType[BaseModel]args_schemaFboolshow_positionsimagefeatureZobject_detection
subfeaturedict)	json_datareturnc           
   
   C  s   g }g }|d D ]}|d  d|d  }| d}| d}| d}| d}	| jrt||||	gr|d	| d
| d| d|	 7 }|| q|d| d|S )Nitemslabelz - Confidence 
confidencex_minx_maxy_miny_maxz,at the position x_min: z	, x_max: z, 
                y_min: z	, y_max: 
z

)getr   allappendjoin)
selfr   resultZ
label_infoZ	found_objZ	label_strr"   r#   r$   r%   r   r   r   _parse_json-   s&    




z%EdenAiObjectDetectionTool._parse_jsonlist)responser   c                 C  sB   t |dkr| |d }n"|D ]}|ddkr | |}q |S )N   r   providerzeden-ai)lenr-   r'   )r+   r/   r,   entryr   r   r   _parse_responseA   s    z)EdenAiObjectDetectionTool._parse_responseNz#Optional[CallbackManagerForToolRun])r   run_managerr   c                 C  s   |dd}|  |S )zUse the tool.F)file_urlZattributes_as_list)Z_call_eden_ai)r+   r   r5   Zquery_paramsr   r   r   _runK   s    
zEdenAiObjectDetectionTool._run)N)r   r   r   __doc__r   r   r   r
   r   r   r   r   r-   r4   r7   r   r   r   r   r      s   

 r   )
__future__r   loggingtypingr   r   Zlangchain_core.callbacksr   Zpydanticr   r   r   Z1langchain_community.tools.edenai.edenai_base_toolr	   	getLoggerr   loggerr
   r   r   r   r   r   <module>   s   
