
    Sg                     *   d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d d	lmZ d d
lm Z  d dl!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-  G d de          Z. G d de          Z/dS )    )OpenAIN)
ChatOpenAI)get_llm_cache)BaseLanguageModelLangSmithParamsLanguageModelInput)dumpddumps)	AIMessageSystemMessage
AnyMessageBaseMessageBaseMessageChunkHumanMessageconvert_to_messagesmessage_chunk_to_message)ChatGenerationChatGenerationChunk
ChatResult	LLMResultRunInfo)
ChatOllama)OutputParserLike)RunnableRunnableConfig)BaseTool)TYPE_CHECKINGAnyCallableLiteralOptionalUnioncastc                        e Zd Zdededdf fdZ	 ddddedee         d	eee	                  dede
f
d
Z	 ddddedee         d	eee	                  dede
f
dZ xZS )DeepSeekR1ChatOpenAIargskwargsreturnNc                      t                      j        |i | t          |                    d          |                    d                    | _        d S )Nbase_urlapi_key)r*   r+   )super__init__r   getclient)selfr&   r'   	__class__s      =/Users/kosar/src/browser-use-projects/web-ui/src/utils/llm.pyr-   zDeepSeekR1ChatOpenAI.__init__-   sW    $)&)))ZZ
++JJy))
 
 
    stopinputconfigr5   c                  K   g }|D ]}t          |t                    r|                    d|j        d           5t          |t                    r|                    d|j        d           h|                    d|j        d           | j        j        j                            | j	        |          }|j
        d         j        j        }|j
        d         j        j        }	t	          |	|          S Nsystem)rolecontent	assistantuser)modelmessagesr   r<   reasoning_content
isinstancer   appendr<   r   r/   chatcompletionscreate
model_namechoicesmessagerB   
r0   r6   r7   r5   r'   message_historyinput_responserB   r<   s
             r2   ainvokezDeepSeekR1ChatOpenAI.ainvoke4   s       	T 	TF&-00 T&&V^'T'TUUUUFI.. T&&'W'WXXXX&&6>'R'RSSSS;#/66/$ 7 
 

 %,Q/7I"1%-5<MNNNNr3   c                   g }|D ]}t          |t                    r|                    d|j        d           5t          |t                    r|                    d|j        d           h|                    d|j        d           | j        j        j                            | j	        |          }|j
        d         j        j        }|j
        d         j        j        }	t	          |	|          S r9   rC   rL   s
             r2   invokezDeepSeekR1ChatOpenAI.invokeN   s
     	T 	TF&-00 T&&V^'T'TUUUUFI.. T&&'W'WXXXX&&6>'R'RSSSS;#/66/$ 7 
 

 %,Q/7I"1%-5<MNNNNr3   N)__name__
__module____qualname__r   r-   r   r!   r   liststrr   rP   rR   __classcell__r1   s   @r2   r%   r%   +   sD       
c 
S 
T 
 
 
 
 
 
 ,0O
 %)O O O!O (O
 tCy!O O 
O O O O: ,0O
 %)O O O!O (O
 tCy!O O 
O O O O O O O Or3   r%   c                        e Zd Z	 d
dddedee         deee                  dede	f
 fdZ
	 d
dddedee         deee                  dede	f
 fd	Z xZS )DeepSeekR1ChatOllamaNr4   r6   r7   r5   r'   r(   c                Z  K   t                                          |           d {V }|j        }|                    d          d                             dd          }|                    d          d         }d|v r|                    d          d         }t          ||	          S 
N)r6   z</think>r   z<think>    z**JSON Response:**rA   )r,   rP   r<   splitreplacer   
r0   r6   r7   r5   r'   org_ai_messageorg_contentrB   r<   r1   s
            r2   rP   zDeepSeekR1ChatOllama.ainvokej   s        %wwU;;;;;;;;$,'--j99!<DDYPRSS##J//27**mm$899"=G<MNNNNr3   c                J   t                                          |          }|j        }|                    d          d                             dd          }|                    d          d         }d|v r|                    d          d         }t          ||	          S r^   )r,   rR   r<   rb   rc   r   rd   s
            r2   rR   zDeepSeekR1ChatOllama.invokez   s     e44$,'--j99!<DDYPRSS##J//27**mm$899"=G<MNNNNr3   rS   )rT   rU   rV   r   r!   r   rW   rX   r   r   rP   rR   rY   rZ   s   @r2   r\   r\   h   s)       
 ,0O
 %)O O O!O (O
 tCy!O O 
O O O O O O& ,0O
 %)O O O!O (O
 tCy!O O 
O O O O O O O O O Or3   r\   )0openair   pdblangchain_openair   langchain_core.globalsr   #langchain_core.language_models.baser   r   r   langchain_core.loadr	   r
   langchain_core.messagesr   r   r   r   r   r   r   r   langchain_core.outputsr   r   r   r   r   langchain_ollamar   "langchain_core.output_parsers.baser   langchain_core.runnablesr   r   langchain_core.toolsr   typingr   r   r   r    r!   r"   r#   r%   r\    r3   r2   <module>rv      sU         



 ' ' ' ' ' ' 0 0 0 0 0 0         
 - , , , , , , ,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	              ( ' ' ' ' ' ? ? ? ? ? ? = = = = = = = = ) ) ) ) ) )                 ;O ;O ;O ;O ;O: ;O ;O ;Oz O  O  O  O  O:  O  O  O  O  Or3   