§
    ¦ìNg•  ã                   ój   — 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dS )	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dS )Ú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        ||¬¦  «        }|                     ¦   «          |                     ¦   «         }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          úe/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/bing_search.pyÚ_bing_search_resultsz)BingSearchAPIWrapper._bing_search_results)   s™   € Ø.°Ô0JÐKˆàØØ#Ø ð	
ð 
ð
 Ô ð
ˆõ ”<ØÔ ØØð
ñ 
ô 
ˆð
 	×!Ò!Ñ#Ô#Ð#Ø!Ÿš™œˆØ˜Ð'Ð'Ø! *Ô-¨gÔ6Ð6Øˆ	ó    Úbefore)ÚmodeÚvaluesc                 ól   — 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=   s]   € õ !5ØÐ+Ð-Dñ!
ô !
Ðð +@ˆÐ&Ñ'å.ØØØÝ0ð	
ñ 
ô 
ˆð %4ˆÐ Ñ!àˆr*   Úqueryc                 óÒ   — g }|                       || j        ¬¦  «        }t          |¦  «        dk    rdS |D ]}|                     |d         ¦  «         Œd                     |¦  «        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   ss   € àˆØ×+Ò+¨E¸¼Ð+Ñ@Ô@ˆÝˆw‰<Œ<˜1ÒÐØ9Ð9Øð 	/ð 	/ˆFØOŠO˜F 9Ô-Ñ.Ô.Ð.Ð.àxŠx˜Ñ!Ô!Ð!r*   Únum_resultsc                 óÌ   — g }|                       ||¬¦  «        }t          |¦  «        dk    rddigS |D ]/}|d         |d         |d         dœ}|                     |¦  «         Œ0|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\   s’   € ð ÐØ×+Ò+¨E¸Ð+ÑEÔEˆÝˆw‰<Œ<˜1ÒÐØÐEÐFÐGÐGØð 	5ð 	5ˆFà! )Ô,Ø œØ˜uœðð ˆOð
 ×#Ò# OÑ4Ô4Ð4Ð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€KKØ˜%°Ð5Ñ5Ô5€M4Ð5Ð5Ñ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      s¯   ðØ "Ð "à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð$  LÐ ðY ð Y ð Y ð Y ð Y ˜9ñ Y ô Y ð Y ð Y ð Y r*   