
    љi                     z    S SK Jr  S SKJr  S SKJrJr  S SKrS SKJ	r	  \" \
5      r " S S5      r " S S	\	5      rg)
    )	getLogger)Callable)urlparseparse_qsN)Toolc                   ~    \ 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S jjr	S\4S jr
Srg)OpenAIWebSearch
   Nzgpt-5-search-api      ?medium0u  F)
system_promptbase_urlmodeltemperaturesearch_context_sizecountrylanguage
make_querytimeoutdebugopenai_api_keyr   r   r   r   r   r   r   r   r   r   c                V   SU;   aO  [        [        U5      R                  5      R                  SS /5      S   n[        R
                  " UUUU
S9U l        O[        R                  " XU
S9U l        U=(       d    SU l        X@l	        XPl
        X`l        Xpl        Xl        Xl        Xl        g )Nazurezapi-versionr   )api_keyapi_versionr   r   )r   r   r   zSearch the web to answer the user's query. Base your response strictly on the search results, and do not include your own opinions.)r   r   querygetopenaiAsyncAzureOpenAIopenai_clientAsyncClientr   r   r   r   r   r   r   r   )selfr   r   r   r   r   r   r   r   r   r   r   r   s                a/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/sts/llm/tools/openai_websearch.py__init__OpenAIWebSearch.__init__   s     e"8H#5#;#;<@@QUPVWXYZK!'!8!8&'!	"D "(!3!3Ngn!oD*  t  /t
&#6  $
    r   c                   #    SU R                   0nU R                  (       a  SSU R                  0S.US'   U R                  (       a  U R                  U5      nU R                  (       a  [        R                  SU 35        U R                  R                  R                  R                  U R                  USU R                  (       a  U R                  SU R                   3-   OS	S
.SSU 3S
./S9I S h  vN nUR                  S   R                  R                  nU R                  (       a  [        R                  SU 35        SU0$  NT7f)Nr   approximater   )typer)   user_locationzOpenAI WebSearch Query: systemz
Output language code:  )rolecontentuserzSearch: )r   web_search_optionsmessagesr   zOpenAI WebSearch Result: search_result)r   r   r   r   loggerinfor!   chatcompletionscreater   r   r   choicesmessager/   )r#   r   r1   responser3   s        r$   searchOpenAIWebSearch.search-   s;    !4#;#;
 <<%t|| 3/ ??OOE*E::KK25':;++00<<CC**1!quq~q~d.@.@E]^b^k^k]lCm.m  EG  Hhug,>? D 
 
 !((+33;;::KK3M?CD//
s   C3E5E
6AE)	r   r   r   r   r   r!   r   r   r   )__name__
__module____qualname____firstlineno__strfloatr   intboolr%   r<   __static_attributes__ r'   r$   r	   r	   
   s     "' #++/     	 
     !      cUCZ(     D0# 0r'   r	   c                      ^  \ 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\S\S\S\S\\/\4   S\S\4U 4S jjjr	Sr
U =r$ )OpenAIWebSearchToolO   Nzgpt-4o-search-previewr   r   JPr   F)r   r   r   r   r   r   r   r   r   namespecinstruction
is_dynamicr   r   r   r   r   r   r   r   r   r   r   r   c                   > [        UU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   r   
web_searchfunctionz%Search the web using OpenAI WebSearchobjectr   r*   string)r*   
propertiesrequired)rL   description
parameters)r*   rR   )r	   openai_web_searchsuperr%   r<   )r#   r   r   r   r   r   r   r   r   r   r   rL   rM   rN   rO   r   	__class__s                   r$   r%   OpenAIWebSearchTool.__init__P   s    & "1)'# 3#"
 	 L " 0L#J (#fh%7' &-I#
 ""))%	
r'   )rY   )r>   r?   r@   rA   rB   rC   r   rD   rE   r%   rF   __classcell__)r[   s   @r$   rI   rI   O   s    
 ", #++/#3
 3
 	3

 3
 3
 3
 !3
 3
 3
 cUCZ(3
 3
" #3
 3
r'   rI   )loggingr   typingr   urllib.parser   r   r   aiavatar.sts.llmr   r>   r4   r	   rI   rG   r'   r$   <module>rb      s7      +  !	8	B0 B0J4
$ 4
r'   