
    љi                     z    S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  \" \
5      r " S S5      r " S S	\	5      rg
)    )	getLogger)Callable)genai)types)Toolc                   x    \ rS rSrSSSSSSSSSS.	S	\S
\S\S\S\S\S\\/\4   S\S\S\4S jjr	S\4S jr
Srg)GeminiWebSearch
   gemini-2.5-flashN        0u  F)	modelsystem_prompttemperaturethinking_budgetlanguage
make_queryyield_start_messagetimeoutdebuggemini_api_keyr   r   r   r   r   r   r   r   r   c       
         (   [         R                  " U[        R                  " U	S9S9U l        X l        U=(       d    SU l        X@l        XPl        X`l	        Xpl
        Xl        Xl        [        R                  " [        R                  " 5       S9U l        g )N)r   )api_keyhttp_optionszSearch the web to answer the user's query. Base your response strictly on the search results, and do not include your own opinions.)google_search)r   Clientr   HttpOptionsgemini_clientr   r   r   r   r   r   r   r   r   GoogleSearchsearch_tool)selfr   r   r   r   r   r   r   r   r   r   s              a/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/sts/llm/tools/gemini_websearch.py__init__GeminiWebSearch.__init__   s|     #\\"**7;
 
*  t  /t&. $#6 
 ::E4F4F4HI    queryc                t  #    S nU R                   S:  a  [        R                  " U R                   S9nU R                  (       a  U R                  U5      nU R                  (       a  [
        R                  SU 35        U R                  (       a  SS07v   U R                  7v   U R                  R                  R                  R                  U R                  [        R                  " U R                  (       a  U R                  SU R                   3-   OSU R                   U R"                  /[        R$                  " SS	9US
9SU 3S9I S h  vN nUR&                  S   R(                  R*                  S   R,                  nU R                  (       a  [
        R                  SU 35        SU0S47v   g  Ng7f)Nr   )r   zGemini Search Query: progressstartz
Output language code:  T)disable)system_instructionr   toolsautomatic_function_callingthinking_configzSearch: )r   configcontentszGemini Search Result: search_result)r   r   ThinkingConfigr   r   loggerinfor   r   aiomodelsgenerate_contentr   GenerateContentConfigr   r   r   r!   AutomaticFunctionCallingConfig
candidatescontentpartstext)r"   r'   r0   respr3   s        r#   searchGeminiWebSearch.search&   sx    1$#22 $ 4 4O ??OOE*E::KK/w78##w''***''++22CC**00fjfsfs4#5#5:RSWS`S`Ra8b#by{ ,,''(+0+O+OX\+] /  w' D 

 

 *2288;@@::KK0@A.44#

s   EF8F6A(F8)
r   r   r   r   r   r!   r   r   r   r   )__name__
__module____qualname____firstlineno__strfloatintr   boolr$   rA   __static_attributes__ r&   r#   r	   r	   
   s     (! !+/#'JJ J 	J
 J J J cUCZ(J !J J J6"5# "5r&   r	   c                   z   ^  \ rS rSrSSSSSSSSSSSSS.S	\S
\S\S\S\S\S\\/\4   S\S\4U 4S jjjr	Sr
U =r$ )GeminiWebSearchToolK   r   Nr   r   r   F)r   r   r   r   r   r   r   namespecinstruction
is_dynamicr   r   r   r   r   r   r   r   r   r   c                   > [        UUUUUUUUUS9	U l        [        TU ]  U	=(       d    SU
=(       d    SU	=(       d    SSSSSS00S/S	.S
.S.U R                  R                  UU5        g )N)	r   r   r   r   r   r   r   r   r   r   functionzSearch the web using Googleobjectr'   typestring)rW   
propertiesrequired)rP   description
parameters)rW   rU   )r	   gemini_web_searchsuperr$   rA   )r"   r   r   r   r   r   r   r   r   rP   rQ   rR   rS   r   	__class__s                 r#   r$   GeminiWebSearchTool.__init__L   s    " "1)'#+!
"
 	#O " 3O#@ (#fh%7' &-I#
 ""))%	
r&   )r]   )rC   rD   rE   rF   rG   rH   rI   r   rJ   r$   rK   __classcell__)r_   s   @r#   rN   rN   K   s    
 (! !+//
 /
 	/

 /
 /
 /
 /
 cUCZ(/
 /
 /
 /
r&   rN   N)loggingr   typingr   googler   google.genair   aiavatar.sts.llmr   rC   r5   r	   rN   rL   r&   r#   <module>rg      s5        !	8	>5 >5B0
$ 0
r&   