Ë
    µŒj…  ã                   ób   — d Z ddlmZmZmZ ddlZddlmZ ddlm	Z	m
Z
mZmZ dZ G d„ de	«      Zy)	zUtil that calls Bing Search.é    )ÚAnyÚDictÚListN)Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validatorz*https://api.bing.microsoft.com/v7.0/searchc                   óÚ   — e Zd ZU dZeed<   eed<   dZeed<    ee	¬«      Z
e	ed<   	  ed¬	«      Zd
ededee	   fd„Z ed¬«      ededefd„«       «       Zdedefd„Zdededee   fd„Zy)ÚBingSearchAPIWrapperz Wrapper for Bing Web Search API.Úbing_subscription_keyÚbing_search_urlé
   Úk)Údefault_factoryÚsearch_kwargsÚforbid)ÚextraÚsearch_termÚcountÚreturnc                 óä   — d| j                   i}||dddœ| j                  ¥}t        j                  | j                  ||¬«      }|j                  «        |j                  «       }d|v r|d   d   S g S )NzOcp-Apim-Subscription-KeyTÚHTML)Úqr   ÚtextDecorationsÚ
textFormat)ÚheadersÚparamsÚwebPagesÚvalue)r   r   ÚrequestsÚgetr   Úraise_for_statusÚjson)Úselfr   r   r   r   ÚresponseÚsearch_resultss          ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/bing_search.pyÚ_bing_search_resultsz)BingSearchAPIWrapper._bing_search_results)   sŠ   € Ø.°×0JÑ0JÐKˆàØØ#Ø ñ	
ð
 × Ñ ð
ˆô —<‘<Ø× Ñ ØØô
ˆð
 	×!Ñ!Ô#Ø!Ÿ™›ˆØ˜Ñ'Ø! *Ñ-¨gÑ6Ð6Øˆ	ó    Úbefore)ÚmodeÚvaluesc                 óZ   — t        |dd«      }||d<   t        |ddt        ¬«      }||d<   |S )z9Validate that api key and endpoint exists in environment.r   ÚBING_SUBSCRIPTION_KEYr   ÚBING_SEARCH_URL)Údefault)r   ÚDEFAULT_BING_SEARCH_ENDPOINT)Úclsr-   r   r   s       r(   Úvalidate_environmentz)BingSearchAPIWrapper.validate_environment=   sN   € ô !5ØÐ+Ð-Dó!
Ðð +@ˆÐ&Ñ'ä.ØØØÜ0ô	
ˆð %4ˆÐ Ñ!àˆr*   Úqueryc                 ó¶   — g }| j                  || j                  ¬«      }t        |«      dk(  ry|D ]  }|j                  |d   «       Œ dj	                  |«      S )z.Run query through BingSearch and parse result.©r   r   ú$No good Bing Search Result was foundÚsnippetÚ )r)   r   ÚlenÚappendÚjoin)r%   r5   ÚsnippetsÚresultsÚresults        r(   ÚrunzBingSearchAPIWrapper.runQ   s[   € àˆØ×+Ñ+¨E¸¿¹Ð+Ó@ˆÜˆw‹<˜1ÒØ9ÛˆFØ�O‰O˜F 9Ñ-Õ.ð ð �x‰x˜Ó!Ð!r*   Únum_resultsc                 ó¤   — g }| j                  ||¬«      }t        |«      dk(  rddigS |D ]"  }|d   |d   |d   dœ}|j                  |«       Œ$ |S )	a–  Run query through BingSearch and return metadata.

        Args:
            query: The query to search for.
            num_results: The number of results to return.

        Returns:
            A list of dictionaries with the following keys:
                snippet - The description of the result.
                title - The title of the result.
                link - The link to the result.
        r7   r   ÚResultr8   r9   ÚnameÚurl)r9   ÚtitleÚlink)r)   r;   r<   )r%   r5   rB   Úmetadata_resultsr?   r@   Úmetadata_results          r(   r?   zBingSearchAPIWrapper.results\   sy   € ð ÐØ×+Ñ+¨E¸Ð+ÓEˆÜˆw‹<˜1ÒØÐEÐFÐGÐGÛˆFà! )Ñ,Ø ™Ø˜u™ñˆOð
 ×#Ñ# OÕ4ð ð  Ðr*   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   Úintr	   Údictr   r   Úmodel_configr   r)   r
   Úclassmethodr   r   r4   rA   r?   © r*   r(   r   r      s·   … Ù*àÓØÓØ€A€sƒKÙ°Ô5€M�4Ó5ØEáØô€Lð°ð ¸Cð ÀDÈÁJó ñ( ˜(Ô#Øð¨$ð °3ò ó ó $ðð$	"˜ð 	" ó 	"ð ˜Sð  ¨sð  °t¸D±zô  r*   r   )rN   Útypingr   r   r   r!   Úlangchain_core.utilsr   Úpydanticr   r   r	   r
   r2   r   rU   r*   r(   Ú<module>rY      s1   ðÙ "ç "Ñ "ã Ý 5ß BÓ Bð$  LÐ ôY ˜9õ Y r*   