
    Ng-{                        d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZ d dl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mZmZ d d
lm Z  d dl!m"Z"m#Z# dZ$dZ%dZ&dZ'dZ(de)de)fdZ*de)de)fdZ+de	e)ef         defdZ, G d d          Z- G d dee          Z. eddd           G d d ee.                      Z/dS )!    N)ABC)	AnyAsyncGeneratorAsyncIteratorDictIteratorListMappingOptionalTuple)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)GenerationChunk)get_from_dict_or_envpre_init)	BaseModel
ConfigDictField)enforce_stop_tokens)get_num_tokens_anthropicget_token_ids_anthropiczamazon-bedrock-tracez"amazon-bedrock-guardrailAssessmentz

Human:z

Assistant:zCError: Prompt must alternate between '

Human:' and '

Assistant:'.
input_textreturnc                     | }dD ]I}|                     |d|z             }t          d          D ]}|                     d|z   d|z             }J|S )N)Human:
Assistant:

   z


)replacerange)r   new_textwordis       \/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/bedrock.py_add_newlines_before_har'   *   sr    H( H H##D&4-88q 	H 	HA''4$GGHH	HO    c                    |                      d          dk    s0|                     d          |                     d          k    rd| v rt          dz   | z   } |                      d          dk    r
| t          z   } | d t	          d                   dk    rd| z   } t          |           } d}t          t	          |                     D ]}| ||t	          t                    z            t          k    r.|dz  dk    r|dz  }nt          j        t          d|  z              | ||t	          t                    z            t          k    r.|dz  dk    r|dz  }t          j        t          d|  z              |dz  dk    r
| t          z   } | S )	Nr   r   r    r   r       z
 Received )
countfindHUMAN_PROMPTASSISTANT_PROMPTlenr'   r"   warningswarnALTERNATION_ERROR)r   r,   r%   s      r&   _human_assistant_formatr4   3   s   !!Q&&!!JOOL$A$AAAJ&&!C'*4
%%**"22
/CMM/"h..j(
(44JE3z??## 
M 
Ma!c,////0L@@qyA~~
/2Kz2K2KKLLLa!c"2333348HHHqyA~~
/2Kz2K2KKLLLqyA~~"22
r(   stream_responsec           	          | d         st          d          S t          | d         d         t          |                     dd                              S )	z0Convert a stream response to a generation chunk.delta textr:   stop_reasonN)finish_reasonr:   generation_info)r   dictget)r5   s    r&   $_stream_response_to_generation_chunkrA   R   sk     7# (B''''W%f-)--mTBB
 
 
   r(   c                   t   e Zd ZdZddddddZe	 	 	 dd	ed
eeef         de	e         de	e         de	e
e                  deeef         fd            Zed	ededefd            Ze	 	 dd	edede	e
e                  dedee         f
d            Ze	 dd	edede	e
e                  dee         fd            ZdS )LLMInputOutputAdapterzAdapter class to prepare the inputs from Langchain to a format
    that LLM model expects.

    It also provides helper function to extract
    the generated text from the model response.
completion
outputTextr:   
generationoutputs)	anthropicamazoncoheremetamistralNprovidermodel_kwargspromptsystemmessagesr   c                     i |}|dk    r:|rd|d<   ||d<   |r||d<   d|vrd|d<   |rt          |          |d<   d	|vrd|d	<   n0|d
v r||d<   n&|dk    rt                      }||d<   i ||d<   n||d<   |S )NrH   zbedrock-2023-05-31anthropic_versionrQ   rP   
max_tokensi   rO   max_tokens_to_sample)ai21rJ   rK   rL   rI   	inputTexttextGenerationConfig)r4   r?   )clsrM   rN   rO   rP   rQ   
input_bodys          r&   prepare_inputz#LLMInputOutputAdapter.prepare_inputo   s     &%
{"" 42F
./)1
:& 2+1Jx(z11/3J|, >'>v'F'F
8$);;9=J56>>>#)Jx  !!J&,J{#1AL1AJ-..&,J{#r(   responsec                    d}|dk    rt          j        |                    d                                                                                    }d|v r|                    d          }nkd|v r0|                    d          }|d                             d          }n5t          j        |                    d                                                    }|dk    rB|                    d	          d                             d
                              d          }n|dk    r/|                    d          d                             d          }n|dk    r|                    d          }nc|dk    r/|                    d          d                             d          }n.|                    d          d                             d          }|                    di                               di           }t          |                    dd                    }t          |                    dd                    }||||||z   ddS )Nr8   rH   bodyrD   contentr   r:   rV   completionsdatarJ   generationsrK   rF   rL   rG   resultsrE   ResponseMetadataHTTPHeadersz x-amzn-bedrock-input-token-countz!x-amzn-bedrock-output-token-count)prompt_tokenscompletion_tokenstotal_tokens)r:   r^   usage)jsonloadsr@   readdecodeint)	rY   rM   r\   r:   response_bodyr_   headersrf   rg   s	            r&   prepare_outputz$LLMInputOutputAdapter.prepare_output   s9   {"" Jx||F';';'@'@'B'B'I'I'K'KLLM},,$((66m++'++I66qz~~f-- Jx||F';';'@'@'B'BCCM6!!$((77:>>vFFJJ6RRX%%$((77:>>vFFV##$((66Y&&$((33A6::6BB$((33A6::<HH,,1266::="MMGKK(JANNOO,OQR S STT!!.%6 -0A A 
 
 	
r(   Fstopmessages_apic              #     K   |                     d          }|sd S |rd}n| j                             |d          }|st          d|           |D ]s}|                     d          }|st          j        |                     d                                                    }	|dk    r|	d         s|	|         d	k    r d S |d
k    r8|	                     |i g          d                              dd          dk    r d S |r|	                     d          dk    r d S |rG|	                     d          dv r0|	                     d          dk    rt          |	          }
|
V  t          |d
k    r|	|         n|	|         d         d         t          t          |	v r|	                     t                    nd i          V  ud S )Nr^   messager8   4Unknown streaming response output key for provider: chunkbytesrJ   is_finished<EOS_TOKEN>rL   r   r;   rr   typecontent_block_stop)message_startcontent_block_startcontent_block_deltar   r:   r=   )	r@   provider_to_output_key_map
ValueErrorrj   rk   rm   rA   r   GUARDRAILS_BODY_KEY)rY   rM   r\   rr   rs   stream
output_keyeventrw   	chunk_objchks              r&   prepare_output_streamz+LLMInputOutputAdapter.prepare_output_stream   sG      f%% 	F 	J"JJ7;;HbIIJ 	QxQQ    .	 .	EIIg&&E 
599W#5#5#<#<#>#>??I8##-( $,5j,A],R,R I%%MM*rd33A6::="MMQWWW 9==#8#8<P#P#P 	f 5 5 : ! !
 ==((,AAA>yIICIIII & $y00 "*--&z215f= ,2i?? &MM*=>>>!%	%      C.	 .	r(   c                b  K   |                     d          }|sd S | j                             |d           }|st          d|           |D ]}|                     d          }|st          j        |                     d                                                    }|dk    r|d         s||         dk    r d S |dk    r8|                     |i g          d	                              d
d          dk    r d S t          |dk    r||         n||         d	         d                   W V  d S )Nr^   rv   rw   rx   rJ   ry   rz   rL   r   r;   r8   rr   r:   r9   )r@   r   r   rj   rk   rm   r   )	rY   rM   r\   rr   r   r   r   rw   r   s	            r&   aprepare_output_streamz,LLMInputOutputAdapter.aprepare_output_stream   s      f%% 	F377$GG
 	QxQQ    	 	EIIg&&E 
599W#5#5#<#<#>#>??I8##-( $,5j,A],R,R I%%MM*rd33A6::="MMQWWW!  9,, j))":.q1&9	       %	 	r(   )NNN)NFN)__name__
__module____qualname____doc__r   classmethodstrr   r   r   r	   r[   r?   rq   boolr   r   r   r   r    r(   r&   rC   rC   `   s       3 3 "" " 
 !% $)-  38n 	
  4:& 
c3h   [@ "
c "
S "
T "
 "
 "
 ["
H 
 %)"D DD D tCy!	D
 D 
/	"D D D [DL GK' ''&)'19$s)1D'		'' ' ' [' ' 'r(   rC   c                      e Zd ZU dZ ed          Z ed          Zee	d<   dZ
ee         e	d<   	  edd	          Zee         e	d
<   	 dZee	d<   	 dZee         e	d<   	 ee	d<   	 dZee         e	d<   	 dZee         e	d<   	 dZee	d<   	 ddddddZeeef         e	d<   ddddZeeeef                  e	d<   	 ededefd            Zedeeef         fd            ZdefdZedefd            Zedefd            Zdeeef         fd Z	 	 	 	 	 d,d!ee         d"ee         d#ee e                  dee e                  d$ee!         d%ede"eeeef         f         fd&Z#d'e$de$fd(Z%d'e$defd)Z&	 	 	 	 	 d,d!ee         d"ee         d#ee e                  dee e                  d$ee!         d%ede'e(         fd*Z)	 	 d-d!edee e                  d$ee*         d%ede+e(         f
d+Z,dS ).BedrockBasezBase class for Bedrock models.r   )protected_namespacesT)excludeclientNregion_name)defaultr   credentials_profile_nameconfigrM   model_idrN   endpoint_urlF	streamingstop_sequencesstopSequencesrr   )rH   rI   rV   rJ   rL   #provider_stop_sequence_key_name_map)idversiontrace
guardrailsvaluesr   c                 6   |                     d          |S 	 ddl}|d         |                    |d                   }n|                                }t          |dd|j                  |d<   i }|d         r|d         |d<   |d	         r|d	         |d	<   |d
         r|d
         |d
<    |j        di ||d<   n\# t          $ r t          d          t          $ r}t          d|           d}~wt          $ r}t          d|           |d}~ww xY w|S )zJValidate that AWS credentials to and python package exists in environment.r   Nr   r   )profile_namer   AWS_DEFAULT_REGION)r   r   r   bedrock-runtimezRCould not import boto3 python package. Please install it with `pip install boto3`.!Error raised by bedrock service: zCould not load credentials to authenticate with AWS client. Please check that credentials in the specified profile name are valid. Bedrock error: )r   )	r@   boto3Sessionr   r   r   ImportErrorr   	Exception)rY   r   r   sessionclient_paramses         r&   validate_environmentz BedrockBase.validate_environment  s   
 ::h+M&	LLL01=--V<V5W-XX  --//$8$+	% % %F=! Mm$ E/5m/Dm,n% G06~0Fn-h ;*0*:h'-w~QQ=QQF8 	 	 	>    	F 	F 	FDDDEEE 	 	 	>:;> >  		 s$   B#B= ="DC11D>DDc                      | j         pi }i d|iS )zGet the identifying parameters.rN   )rN   )self_model_kwargss     r&   _identifying_paramszBedrockBase._identifying_params  s(     )/R
}-
 	
r(   c                     | j         r| j         S | j                            d          rt          d          | j                            d          d         S )NarnzFModel provider should be supplied when passing a model ARN as model_id.r   )rM   r   
startswithr   splitr   s    r&   _get_providerzBedrockBase._get_provider  s`    = 	!= =##E** 	  
 }""3''**r(   c                 2    |                                  dk    S )NrH   )r   r   s    r&   _model_is_anthropiczBedrockBase._model_is_anthropic  s    !!##{22r(   c                     	 t          | j        t                    o3t          | j        d                   ot          | j        d                   S # t          $ r}t          d          |d}~ww xY w)a  
        Determines if guardrails are enabled and correctly configured.
        Checks if 'guardrails' is a dictionary with non-empty 'id' and 'version' keys.
        Checks if 'guardrails.trace' is true.

        Returns:
            bool: True if guardrails are correctly configured, False otherwise.
        Raises:
            TypeError: If 'guardrails' lacks 'id' or 'version' keys.
        r   r   z=Guardrails must be a dictionary with 'id' and 'version' keys.N)
isinstancer   r?   r   KeyError	TypeError)r   r   s     r&   _guardrails_enabledzBedrockBase._guardrails_enabled  s    
	4?D11 5.//5344  	 	 	O 	s   AA 
A/A**A/c                 p    d| j                             d          | j                             d          diS )z
        The canonical way to pass in guardrails to the bedrock service
        adheres to the following format:

        "amazon-bedrock-guardrailDetails": {
            "guardrailId": "string",
            "guardrailVersion": "string"
        }
        zamazon-bedrock-guardrailDetailsr   r   )guardrailIdguardrailVersion)r   r@   r   s    r&   _get_guardrails_canonicalz%BedrockBase._get_guardrails_canonical  sA     .#22488$(O$7$7	$B$B0 0
 	
r(   rO   rP   rQ   run_managerkwargsc                 8   | j         pi }|                                 }i ||}	| j        r'|	                    |                                            t
                              ||	|||          }
t          j        |
          }d}d}|| j	        ||d}| j        r$d|d<   | j
                            d          rd|d<   	  | j        j        d
i |}t
                              ||                                          \  }}}n$# t           $ r}t#          d|           d }~ww xY w|t%          ||          }|                     |          }|                    d          r3|1 |j        t!          d|                    d	                     fi | ||fS )N)rM   rN   rO   rP   rQ   application/jsonr^   modelIdacceptcontentTypeENABLED	guardrailr   r   signalreasonr   )rN   r   r   updater   rC   r[   rj   dumpsr   r   r@   r   invoke_modelrq   r   r   r   r   _get_bedrock_services_signalon_llm_error)r   rO   rP   rQ   rr   r   r   r   rM   paramsrZ   r^   r   r   request_optionsr\   r:   
usage_infor   services_traces                       r&   _prepare_input_and_invokez%BedrockBase._prepare_input_and_invoke  s    )/R%%'',M,V,# 	<MM$88::;;;*88 9 
 

 z*%%#( }&	
 
 # 	5+4OK(""7++ 5+4(	F/t{/BB/BBH%:%I%I(& &fhh #D$

  	F 	F 	FDDDEEE	F &tT22D
 ::4@@h'' 	K,C$K$V8J8J88T8TVV   !	   Zs   AD 
D&D!!D&r^   c                     | j         rM| j                            d          r3|                     |          rdd|                    t                    dS ddddS )ak  
        This function checks the response body for an interrupt flag or message that indicates
        whether any of the Bedrock services have intervened in the processing flow. It is
        primarily used to identify modifications or interruptions imposed by these services
        during the request-response cycle with a Large Language Model (LLM).
        r   TGUARDRAIL_INTERVENED)r   r   r   FN)r   r   r@   _is_guardrails_interventionAMAZON_BEDROCK_TRACE_KEYr   r^   s     r&   r   z(BedrockBase._get_bedrock_services_signal>  s     $		##G,,		 0066		 0":;;   
 
 	
r(   c                 >    |                     t                    dk    S )Nr   )r@   r   r   s     r&   r   z'BedrockBase._is_guardrails_interventionW  s    xx+,,0FFFr(   c              +   <  K   | j         pi }|                                 }|r9|| j        vrt          d| d          ||| j                            |          <   |dk    rd|d<   i ||}	| j        r'|	                    |                                            t          	                    |||||	          }
t          j        |
          }|| j        ddd}| j        r$d	|d
<   | j                            d          rd	|d<   	  | j        j        di |}n$# t           $ r}t          d|           d }~ww xY wt                              ||||rdnd          D ]>}|                     |j                   ||                    |j        |           |V  ?d S )NStop sequence key name for  is not supported.rJ   Tr   )rM   rO   rP   rQ   rN   r   r   r   r   r   r   Frw   r   )rN   r   r   r   r@   r   r   r   rC   r[   rj   r   r   r   r   !invoke_model_with_response_streamr   r   r   r>   on_llm_new_tokenr:   )r   rO   rP   rQ   rr   r   r   r   rM   r   rZ   r^   r   r\   r   rw   s                   r&    _prepare_input_and_invoke_streamz,BedrockBase._prepare_input_and_invoke_streamZ  s6      )/R%%'' 	YtGGG N(NNN   UYM$BFFxPPQx&*M(#,M,V,# 	<MM$88::;;;*88 9 
 

 z*%% }(-	
 
 # 	5+4OK(""7++ 5+4(	FDt{DWWWWHH 	F 	F 	FDDDEEE	F +@@hh&AddE
 
 	 	E --e.CDDD&,,UZu,EEEKKKK	 	s   D 
D9"D44D9c                   K    j         pi }                                 }|r9| j        vrt          d| d          || j                            |          <   |dk    rd|d<   i ||}t
                              |||          }t          j        |          t          j
                                        d  fd           d {V }	t
                              ||	|          2 3 d {V }
|<t          j        |j                  r#|                    |
j        |
           d {V  n||                    |
j        |
           |
W V  i6 d S )	Nr   r   rJ   Tr   )rM   rO   rN   c                  J    j                              j        dd          S )Nr   r   )r   r   r   )r^   r   s   r&   <lambda>z?BedrockBase._aprepare_input_and_invoke_stream.<locals>.<lambda>  s-    DKAA).	 B   r(   r   )rN   r   r   r   r@   rC   r[   rj   r   asyncioget_running_looprun_in_executorr   iscoroutinefunctionr   r:   )r   rO   rr   r   r   r   rM   r   rZ   r\   rw   r^   s   `          @r&   !_aprepare_input_and_invoke_streamz-BedrockBase._aprepare_input_and_invoke_stream  s      )/R%%'' 	YtGGG N(NNN   UYM$BFFxPPQx&*M(#,M,V,*88f6 9 
 

 z*%% 133CC    
 
 
 
 
 
 
 
 1GGh
 
 		 		 		 		 		 		 		% &7+F,, ,& "225:U2KKKKKKKKKK(,,UZu,EEEKKKKK
 
 
s   ,E)NNNNNNN)-r   r   r   r   r   model_configr   r   r   __annotations__r   r   r   r   r   rM   rN   r   r   r   r   r   r
   r   r   r   propertyr   r   r   r   r   r	   r   r   r   r?   r   r   r   r   r   r   r   r   r   r(   r&   r   r   '  sk        ((:2666L%%%%FC%%%!%K#%%% /4eD$.O.O.OhsmOOO FCL"Hhsm""" MMM5 $(L(4.'''1"&L(3-&&&CIt( &! "> >'c):    / /Jc*+   
(T /$ /4 / / / X/b 
WS#X%6 
 
 
 X
	+s 	+ 	+ 	+ 	+ 3T 3 3 3 X3 T    X.
4S> 
 
 
 
& !% $)-$(:>@  @ @  @  4:&	@ 
 tCy!@  67@  @  
sDcN"	#@  @  @  @ D
 
$ 
 
 
 
2G G G G G G
 !% $)-$(:>A AA A 4:&	A
 tCy!A 67A A 
/	"A A A AL %)?C	- -- tCy!- ;<	-
 - 
	'- - - - - -r(   r   z0.0.34z1.0zlangchain_aws.BedrockLLM)sinceremovalalternative_importc                   J    e Zd ZdZ	 ededef fd            Zedefd            Z	e
defd            Ze
dee         fd            Zedeeef         fd            Z ed	
          Z	 	 ddedeee                  dee         dedee         f
dZ	 	 ddedeee                  dee         dedef
dZ	 	 ddedeee                  dee         dedeedf         f
dZ	 	 ddedeee                  dee         dedef
dZdedef fdZdedee         f fdZ xZ S )Bedrocka  Bedrock models.

    To authenticate, the AWS client uses the following methods to
    automatically load credentials:
    https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html

    If a specific credential profile should be used, you must pass
    the name of the profile from the ~/.aws/credentials file that is to be used.

    Make sure the credentials / roles used have the required policies to
    access the Bedrock service.
    r   r   c                     |d         }|                     d          rt          d          t                                          |          S )Nr   zanthropic.claude-3z|Claude v3 models are not supported by this LLM.Please use `from langchain_community.chat_models import BedrockChat` instead.)r   r   superr   )rY   r   r   	__class__s      r&   r   zBedrock.validate_environment  sU    *%344 	  
 ww++F333r(   c                     dS )zReturn type of llm.amazon_bedrockr   r   s    r&   	_llm_typezBedrock._llm_type  s
      r(   c                     dS )z9Return whether this model can be serialized by Langchain.Tr   rY   s    r&   is_lc_serializablezBedrock.is_lc_serializable  s	     tr(   c                 
    g dS )z*Get the namespace of the langchain object.)	langchainllmsbedrockr   r  s    r&   get_lc_namespacezBedrock.get_lc_namespace  s     0///r(   c                 ,    i }| j         r
| j         |d<   |S )Nr   )r   )r   
attributess     r&   lc_attributeszBedrock.lc_attributes  s%    %'
 	9(,(8J}%r(   forbid)extraNrO   rr   r   r   c                 $     | j         d|||d|S )a  Call out to Bedrock service with streaming.

        Args:
            prompt (str): The prompt to pass into the model
            stop (Optional[List[str]], optional): Stop sequences. These will
                override any stop sequences in the `model_kwargs` attribute.
                Defaults to None.
            run_manager (Optional[CallbackManagerForLLMRun], optional): Callback
                run managers used to process the output. Defaults to None.

        Returns:
            Iterator[GenerationChunk]: Generator that yields the streamed responses.

        Yields:
            Iterator[GenerationChunk]: Responses from the model.
        rO   rr   r   r   )r   )r   rO   rr   r   r   s        r&   _streamzBedrock._stream  s4    . 5t4 
+
 
AG
 
 	
r(   c                     | j         r"d} | j        d|||d|D ]}||j        z  }|S  | j        d|||d|\  }}|S )ag  Call out to Bedrock service model.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = llm.invoke("Tell me a joke.")
        r8   r  r   )r   r  r:   r   )	r   rO   rr   r   r   rD   rw   r:   _s	            r&   _callzBedrock._call.  s    , > 	J% Dk EK  ) ) ej(

0$0 
+
 
AG
 
a r(   c                H   K    | j         d|||d|2 3 d{V }|W V  6 dS )ad  Call out to Bedrock service with streaming.

        Args:
            prompt (str): The prompt to pass into the model
            stop (Optional[List[str]], optional): Stop sequences. These will
                override any stop sequences in the `model_kwargs` attribute.
                Defaults to None.
            run_manager (Optional[CallbackManagerForLLMRun], optional): Callback
                run managers used to process the output. Defaults to None.

        Yields:
            AsyncGenerator[GenerationChunk, None]: Generator that asynchronously yields
            the streamed responses.
        r  Nr   )r   )r   rO   rr   r   r   rw   s         r&   _astreamzBedrock._astreamQ  sw      * B4A 
+
 
AG
 
 	 	 	 	 	 	 	% KKKKK
 
 
s   !c                    K   | j         st          d          d  | j        d|||d|2              d{V }d                    |          S )am  Call out to Bedrock service model.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = await llm._acall("Tell me a joke.")
        z4Streaming must be set to True for async operations. c                 .   K   g | 3 d {V 	 }|j         6 S r   r9   ).0rw   s     r&   
<listcomp>z"Bedrock._acall.<locals>.<listcomp>  sQ       
 
 
 
 
 
 
 
 
 J
 
 
 
s   r  Nr8   r   )r   r   r  join)r   rO   rr   r   r   chunkss         r&   _acallzBedrock._acallk  s      , ~ 	USTTT
 
,t}  Dk   EK   
 
 
 
 
 
 
 
 
 wwvr(   r:   c                 r    | j         rt          |          S t                                          |          S r   )r   r   r   get_num_tokensr   r:   r  s     r&   r"  zBedrock.get_num_tokens  s4    # 	0+D11177))$///r(   c                 r    | j         rt          |          S t                                          |          S r   )r   r   r   get_token_idsr#  s     r&   r%  zBedrock.get_token_ids  s4    # 	/*400077((...r(   r   )!r   r   r   r   r   r   r   r   r   r  r   r   r  r	   r  r   r  r   r   r   r   r   r   r  r  r   r   r  r   rn   r"  r%  __classcell__)r  s   @r&   r   r     s         4$ 44 4 4 4 4 4 X4  3       X  4    [ 0c 0 0 0 [0 tCH~    X :  L %):>	
 

 tCy!
 67	

 
 
/	"
 
 
 
< %):>	! !! tCy!! 67	!
 ! 
! ! ! !L %)?C	  tCy! ;<	
  
-	.   : %)?C	  tCy! ;<	
  
   B03 03 0 0 0 0 0 0/# /$s) / / / / / / / / / /r(   r   )0r   rj   r1   abcr   typingr   r   r   r   r   r	   r
   r   r   langchain_core._api.deprecationr   langchain_core.callbacksr   r   #langchain_core.language_models.llmsr   langchain_core.outputsr   langchain_core.utilsr   r   pydanticr   r   r   langchain_community.llms.utilsr   'langchain_community.utilities.anthropicr   r   r   r   r.   r/   r3   r   r'   r4   rA   rC   r   r   r   r(   r&   <module>r1     s           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7 6 6 6 6 6        4 3 3 3 3 3 2 2 2 2 2 2 ? ? ? ? ? ? ? ? 1 1 1 1 1 1 1 1 1 1 > > > > > >       
 2 : # M 
          >#s(^   D D D D D D D DNc c c c c)S c c cL 
E6P  F/ F/ F/ F/ F/c; F/ F/ F/ F/ F/r(   