
    $hZ.                     T   S SK r S SKJrJr  S SKJrJr  S SKJr  S SKJ	r
   S SKJr  Sr\" S \ 5       5      (       d  \" S	5      eS SKJs  Jr  S
rS SKJr  \ R0                  " \5      r\(       a!   " S S\5      r " S S\R8                  5      rgg! \ a    Sr " S S5      r NUf = f)    N)datetimetimezone)Optional	TypedDict)uuid4)	run_trees)tracing)TracingProcessorTraceSpanResponseSpanDatac              #   @   #    U H  n[        [        U5      v   M     g 7fN)hasattrr	   ).0names     Y/var/www/html/shao/venv/lib/python3.13/site-packages/langsmith/wrappers/_openai_agents.py	<genexpr>r      s     ;($ww%%(s   z&The `agents` package is not installed.TFc                       \ rS rSrSrS rSrg)OpenAIAgentsTracingProcessor   a  Tracing processor for the `OpenAI Agents SDK <https://openai.github.io/openai-agents-python/>`_.

Traces all intermediate steps of your OpenAI Agent to LangSmith.

Requirements: Make sure to install ``pip install -U langsmith[openai-agents]``.

Args:
    client: An instance of langsmith.client.Client. If not provided,
        a default client is created.

Example:
    .. code-block:: python

        from agents import (
            Agent,
            FileSearchTool,
            Runner,
            WebSearchTool,
            function_tool,
            set_trace_processors,
        )

        from langsmith.wrappers import OpenAIAgentsTracingProcessor

        set_trace_processors([OpenAIAgentsTracingProcessor()])


        @function_tool
        def get_weather(city: str) -> str:
            return f"The weather in {city} is sunny"


        haiku_agent = Agent(
            name="Haiku agent",
            instructions="Always respond in haiku form",
            model="o3-mini",
            tools=[get_weather],
        )
        agent = Agent(
            name="Assistant",
            tools=[WebSearchTool()],
            instructions="speak in spanish. use Haiku agent if they ask for a haiku or for the weather",
            handoffs=[haiku_agent],
        )

        result = await Runner.run(
            agent,
            "write a haiku about the weather today and tell me a recent news story about new york",
        )
        print(result.final_output)
c                     [        S5      e)NzeThe `agents` package is not installed. Please install it with `pip install langsmith[openai-agents]`.)ImportError)selfargskwargss      r   __init__%OpenAIAgentsTracingProcessor.__init__O   s    Q      N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r    r   r   r   r      s    2	h	r   r   )clientc                   N    \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\   \S'   Srg)	RunData\   idtrace_id
start_timedotted_orderparent_run_idr    N)	r!   r"   r#   r$   str__annotations__r   r   r&   r    r   r   r)   r)   \   s"    }$r   r)   c                   .   \ rS rSrSr SSSSSS.S\\R                     S\\   S\\	\
      S\\
   S	\\
   4
S
 jjjrS\R                  SS4S jrS\R                  SS4S jrS\R                   SS4S jrS\R                   SS4S jrSS jrSS jrSrg)r   c   ay  Tracing processor for the `OpenAI Agents SDK <https://openai.github.io/openai-agents-python/>`_.

Traces all intermediate steps of your OpenAI Agent to LangSmith.

Requirements: Make sure to install ``pip install -U langsmith[openai-agents]``.

Args:
    client: An instance of langsmith.client.Client. If not provided,
        a default client is created.
    metadata: Metadata to associate with all traces.
    tags: Tags to associate with all traces.
    project_name: LangSmith project to trace to.
    name: Name of the root trace.

Example:
    .. code-block:: python

        from agents import (
            Agent,
            FileSearchTool,
            Runner,
            WebSearchTool,
            function_tool,
            set_trace_processors,
        )

        from langsmith.wrappers import OpenAIAgentsTracingProcessor

        set_trace_processors([OpenAIAgentsTracingProcessor()])


        @function_tool
        def get_weather(city: str) -> str:
            return f"The weather in {city} is sunny"


        haiku_agent = Agent(
            name="Haiku agent",
            instructions="Always respond in haiku form",
            model="o3-mini",
            tools=[get_weather],
        )
        agent = Agent(
            name="Assistant",
            tools=[WebSearchTool()],
            instructions="speak in spanish. use Haiku agent if they ask for a haiku or for the weather",
            handoffs=[haiku_agent],
        )

        result = await Runner.run(
            agent,
            "write a haiku about the weather today and tell me a recent news story about new york",
        )
        print(result.final_output)
N)metadatatagsproject_namer   r'   r4   r5   r6   r   c                    U=(       d    [         R                  " 5       U l        X l        X0l        X@l        XPl        0 U l        0 U l        0 U l	        g r   )
rtget_cached_clientr'   	_metadata_tags_project_name_name_first_response_inputs_last_response_outputs_runs)r   r'   r4   r5   r6   r   s         r   r   r      sE     !:B$8$8$:DK%NJ!-J02D'02D'-/DJr   tracereturnc                    U R                   (       a  U R                   nO UR                  (       a  UR                  nOSn[        [        5       5      n[        R
                  " [        R                  5      n[        R                  " UUS9n[        UUUUS S9U R                  UR                  '   SU R                  =(       d    0 0nUR                  5       =(       d    0 nUR                  S5      b  US   US   S'    [!        U0 SUUUUS UU R"                  U R$                  S9nU R&                  R(                  " S
0 UD6  g ! [*         a"  n	[,        R/                  S	U	 35         S n	A	g S n	A	ff = f)NzAgent workflow)r-   run_idr+   r,   r-   r.   r/   r4   group_id	thread_idchain)r   inputsrun_typer+   r,   r.   r-   revision_idextrar5   r6   zError creating trace run: r    )r=   r   r0   r   r   nowr   utcagent_utilsensure_dotted_orderr)   r@   r,   r:   exportgetdictr;   r<   r'   
create_run	Exceptionlogger	exception)
r   rA   run_nametrace_run_idr-   r.   	run_extra
trace_dictrun_dataes
             r   on_trace_start+OpenAIAgentsTracingProcessor.on_trace_start   sG   zz:: ::+uw<L!hll3J&::%#L *1%%)"*DJJu~~& $T^^%9r:I-2J~~j)55?
5K	*%k2C!%!$#)!-) $#!%!3!3" &&22 C  #=aS!ABBCs   =AE 
E-E((E-c           
      6   U R                   R                  UR                  S 5      nUR                  5       =(       d    0 n0 UR	                  S5      =(       d    0 EU R
                  =(       d    0 EnU(       as   U R                  R                  US   US   US   U R                  R                  UR                  0 5      U R                  R                  UR                  0 5      SU0S9  g g ! [         a"  n[        R                  SU 35         S nAg S nAff = f)Nr4   r+   r,   r.   )rD   r,   r.   rI   outputsrL   zError updating trace run: )r@   popr,   rQ   rR   r:   r'   
update_runr>   r?   rU   rV   rW   )r   rA   runr[   r4   r]   s         r   on_trace_end)OpenAIAgentsTracingProcessor.on_trace_end   s    **..6C-2JW:>>*5;WAUSUWH
GKK**"4y!$Z%(%8#::>>u~~rR $ ; ; ? ?PR S)84 +   ! G$$'A!%EFFGs   9A1C, ,
D6DDspanc                 :   UR                   (       a%  U R                  R                  UR                   5      O$U R                  R                  UR                  5      nUc#  [        R                  SUR                   35        g US   n[        [        5       5      nUR                  (       a   [        R                  " UR                  5      O#[        R                  " [        R                  5      n[        R                   " UUU(       a  US   OS S9n[#        UUUUUS   S9U R                  UR                  '   [        R$                  " U5      n[        R&                  " U5      n[        R(                  " U5      n	 [+        UUUUUS   UU	R                  S0 5      S9n
UR                  (       a#  [        R                  " UR                  5      U
S	'   U R,                  R.                  " S0 U
D6  g ! [0         a"  n[        R3                  S
U 35         S nAg S nAff = f)Nz(No trace info found for span, skipping: r,   r.   )r-   rD   parent_dotted_orderr+   rE   rI   )r   rJ   r+   r,   r/   r.   rI   r-   zError creating span run: r    )	parent_idr@   rR   r,   rV   warningspan_idr0   r   
started_atr   fromisoformatrM   r   rN   rO   rP   r)   get_run_nameget_run_typeextract_span_datarS   r'   rT   rU   rW   )r   rg   
parent_runr,   span_run_idspan_start_timer.   rX   rJ   	extractedr\   r]   s               r   on_span_start*OpenAIAgentsTracingProcessor.on_span_start   s    >> 

t~~.ZZ^^DMM2  !>t||nM !*-Heg,K ?? &&t7\\(,,/ 
 '::*"BLJ~$>RVL
 (/!*)(.(DJJt||$ #//5H"//5H#55d;IB!%!%"%",T"2!-$==26" ??-5-C-CDOO-TH\*&&22 B  #<QC!@AABs   ;A2G. .
H8HHc                    U R                   R                  UR                  S 5      nU(       Ga  [        R                  " U5      nUR                  S0 5      nUR                  US'   UR                  US'   UR                  US'   XCS'   UR                  S0 5      nUR                  S0 5      n[        US   US   US	   US
   UR                  (       a  [        UR                  5      OS UUUS9nUR                  (       a#  [        R                  " UR                  5      US'   [        UR                  [         R"                  5      (       a]  U R$                  R                  UR                  5      =(       d    UU R$                  UR                  '   XPR&                  UR                  '   U R(                  R*                  " S0 UD6  g g )Nr4   openai_parent_idopenai_trace_idopenai_span_idra   rI   r+   r,   r.   r/   )rD   r,   r.   r/   errorra   rI   rL   end_timer    )r@   rb   rl   rO   rq   rR   rj   r,   rS   r|   r0   ended_atr   rn   
isinstance	span_datar	   r   r>   r?   r'   rc   )r   rg   rd   ru   r4   ra   rI   r\   s           r   on_span_end(OpenAIAgentsTracingProcessor.on_span_end'  sp   **..t4C'99$?	$==R8/3~~+,.2mm*+-1\\)*(0*%#--	26"x4!%t9 _!$^!4"%o"6-1ZZ#djj/T#!#	" ==+3+A+A$--+PHZ(dnng.F.FGG3377FP& //> BI//>&&229 r   c                 8    U R                   R                  5         g r   r'   flushr   s    r   shutdown%OpenAIAgentsTracingProcessor.shutdownG      KKr   c                 8    U R                   R                  5         g r   r   r   s    r   force_flush(OpenAIAgentsTracingProcessor.force_flushJ  r   r   )r>   r?   r:   r=   r<   r@   r;   r'   r   )rB   N)r!   r"   r#   r$   r%   r   	ls_clientClientrS   listr0   r   r	   r   r^   re   r   rv   r   r   r   r&   r    r   r   r   r   c   s    6	t 26	0 (,(,*."&	0Y--.	0 tn		0
 49%	0 #3-	0 3-	0&.	C .	C$ .	C`	Ggmm 	G 	G$4	Bgll 4	Bt 4	Bl	3GLL 	3T 	3@	 	 r   )loggingr   r   typingr   r   uuidr   	langsmithr   r8   agentsr	   requiredallr   langsmith.wrappers._agent_utilswrappers_agent_utilsrO   HAVE_AGENTSr   r'   r   	getLoggerr!   rV   r)   r
   r    r   r   <module>r      s     ' &  %KH ;(;;;BCC99K@ *			8	$%) %h w'?'? h  G  <K9 9<s   /B B'&B'