
     j                        d Z ddlZddlmZmZmZmZmZmZ deee	ef                  dedee	         fdZ
	 dde	deee	ef                  d	e	d
ee	         dee	         f
dZd	e	de	dee	         fdZde	deee	ef                  dee	ef         dee	         ded         dee	         fdZdeee	ef                  dedee	         ded         dee	         f
dZdS )z@private    N)AnyDictListLiteralOptionalcast
serializedkwargsreturnc                    dddgdfdddgdfdddgdfdddgdfd	d
dgdfdd
dgdfdd
dgdfdd
dgdfdd
dgdfdd
dgdfdddgdfdddgdfdddgdfdddgdfdd
dgdfdd
dgdfg}|D ]8\  }}}t          || ||t          t          d         |                    }|r|c S 9| r|                     d          }|rt	          |t
                    r{t          |          dk    rg|d         dk    rZ|                    d
          }|rt	          |t                    rn|                    d          r"t          |                    d                    S |                    d          r"t          |                    d                    S d}	d}
|                     d          }|rit	          |t                    rT|                    d          r|                    d          }
|                    d          r|                    d          }	t	          |	t                    sdS t	          |
t                    s|	S |
|	vr|	d z   |
z   n|	S g d!}|D ]\  }}}t          || ||          }|r|c S ddgddgd
dgd
dgg}d"D ]G}|D ]B}t          | ||t          t          d         |                    }|rt          |          c c S CHdS )#zoExtracts the model name from the serialized or kwargs object. This is used to get the model names for Langfuse.ChatGoogleGenerativeAIr
   modelr	   ChatMistralAIChatVertexAi
model_nameChatVertexAIOpenAIinvocation_params
ChatOpenAIAzureChatOpenAIazure_deploymentHuggingFacePipelinemodel_idBedrockChatBedrock
BedrockLLMChatBedrockLlamaCpp
model_path
WatsonxLLMr	   r
   idr   AzureOpenAINopenai_api_versiondeployment_versiondeployment_name-))	Anthropicr   	anthropic)ChatAnthropicr   N)
ChatTongyir   N)
ChatCoherer   N)Coherer   N)HuggingFaceHubr   N)ChatAnyscaler   N)TextGenr   ztext-gen)Ollamar   N)	OllamaLLMr   N)
ChatOllamar   N)ChatFireworksr   N)ChatPerplexityr   N)VLLMr   N)
Xinference	model_uidN)ChatOCIGenAIr   N)	DeepInfrar   N)r
   r	   )_extract_model_by_path_for_idr   r   get
isinstancelistlendictstr#_extract_model_from_repr_by_pattern_extract_model_by_path)r	   r
   models_by_idr   keysselect_fromr   serialized_idr   r'   r&   serialized_kwargsmodels_by_patternpatterndefaultrandom_pathsselectpaths                     b/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/langfuse/langchain/utils.py_extract_model_namerQ      s;    
"Hg#6E	8W-|<	(L1<@	(L1<@	'6A	+\:HE	0':HE	0,?J	02DExP	!4j A8L	:.=	Xz*L9	*-|<	:.=	)<8(C	+Z8(C!L& *6 	 	%
D+-/0+>>
 
  	LLL	  %"t,,#	=$//#	 M""Q&&b!]22 &

+> ? ?  DZ0A4%H%H D$((11 ?044W==>>>$((66 D044\BBCCC"O!% *x 8 8  OZ0A4%H%H O$(()=>> U):)>)>?S)T)T&$(():;; O&7&;&;<M&N&NOos33 t0#66 '&& &_<<  #%(:::$  ( ):  $
GW3
GW
 
  	LLL	
 
< 	7	l+	g&	L + " "  	" 	"D*FD$w7M/NPV*W*W E  "5zz!!!!!"		" 4    r"   rK   rL   c                 0   |d S |                     d          }|rzt          |t                    ret          |          dk    rR|d         | k    rF|                     d          }|r/t          |t                    rt          ||          }|r|n|r|nd S d S )Nr"   r   r#   repr)r=   r>   r?   r@   rB   _extract_model_with_regex)r"   r	   rK   rL   rH   repr_str	extracteds          rP   rC   rC      s     tNN4((M	L}d++	L """##>>&)) 	L
8S11 	L1'8DDI )K99'/KwwtK4rR   textc                 d    t          j        |  d|          }|r|                    d          S d S )Nz='(.*?)'   )researchgroup)rK   rX   matchs      rP   rU   rU      s9    I'+++T22E {{1~~4rR   rF   rG   r!   c                     ||dk    rd S |rp|                     d          }|rYt          |t                    rDt          |          dk    r1|d         | k    r%t	          ||||          }|t          |          nd S d S )Nr	   r"   r   r#   )r=   r>   r?   r@   rD   rB   )r"   r	   r
   rF   rG   rH   results          rP   r<   r<      s     k\99t 	?"t,,	?=$//	? M""Q&&b!R''+JkRRF"("43v;;;$>4rR   c                     | |dk    rd S |dk    r|n| }|D ]7}|r+t          |t                    r|                    |          }n d S |s d S 8|rt          |          nd S )Nr	   r
   )r>   rA   r=   rB   )r	   r
   rF   rG   current_objkeys         rP   rD   rD      s     k\99t'833&&K   	:k488 	%//#..KK44 	44	  +43{4rR   )N)__doc__r[   typingr   r   r   r   r   r   rB   rQ   rC   rU   r<   rA   rD    rR   rP   <module>rg      s    				 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;{c3h({{ c]{ { { {D "	 c3h(  c]	
 c]   0s # (3-    c3h( cN s)	
 /0 c]   05c3h(55 s)5 /0	5
 c]5 5 5 5 5 5rR   