§
    šŠtjQ  ã                   óŠ   — d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ d	efd
„Z G d„ de	¦  «        ZdS )zCallback handler for Context AIé    N)ÚAnyÚDictÚList)ÚUUID)ÚBaseCallbackHandler)ÚBaseMessage)Ú	LLMResult)Úguard_importÚreturnc            	      óø   — t          dd¬¦  «        t          dd¬¦  «        j        t          dd¬¦  «        j        t          dd¬¦  «        j        t          dd¬¦  «        j        t          dd¬¦  «        j        fS )z Import the `getcontext` package.Ú
getcontextzpython-context)Úpip_namezgetcontext.tokenzgetcontext.generated.models)r
   Ú
CredentialÚConversationÚMessageÚMessageRoleÚRating© ó    úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/callbacks/context_callback.pyÚimport_contextr      s”   € õ 	�\Ð,<Ð=Ñ=Ô=ÝÐ'Ð2BÐCÑCÔCÔNÝØ)Ð4Dð	
ñ 	
ô 	
ä
ÝÐ2Ð=MÐNÑNÔNÔVÝØ)Ð4Dð	
ñ 	
ô 	
ä
ÝÐ2Ð=MÐNÑNÔNÔUðð r   c            
       óè   — e Zd ZdZddedededdfd	„Zd
eeef         de	e	e
                  dededef
d„Zdededdfd„Zd
eeef         deeef         deddfd„Zdeeef         deddfd„Zdd„ZdS )ÚContextCallbackHandleraô  Callback Handler that records transcripts to the Context service.

     (https://context.ai).

    Keyword Args:
        token (optional): The token with which to authenticate requests to Context.
            Visit https://with.context.ai/settings to generate a token.
            If not provided, the value of the `CONTEXT_TOKEN` environment
            variable will be used.

    Raises:
        ImportError: if the `context-python` package is not installed.

    Chat Example:
        >>> from langchain_openai import ChatOpenAI
        >>> from langchain_community.callbacks import ContextCallbackHandler
        >>> context_callback = ContextCallbackHandler(
        ...     token="<CONTEXT_TOKEN_HERE>",
        ... )
        >>> chat = ChatOpenAI(
        ...     temperature=0,
        ...     headers={"user_id": "123"},
        ...     callbacks=[context_callback],
        ...     openai_api_key="API_KEY_HERE",
        ... )
        >>> messages = [
        ...     SystemMessage(content="You translate English to French."),
        ...     HumanMessage(content="I love programming with LangChain."),
        ... ]
        >>> chat.invoke(messages)

    Chain Example:
        >>> from langchain_classic.chains import LLMChain
        >>> from langchain_openai import ChatOpenAI
        >>> from langchain_community.callbacks import ContextCallbackHandler
        >>> context_callback = ContextCallbackHandler(
        ...     token="<CONTEXT_TOKEN_HERE>",
        ... )
        >>> human_message_prompt = HumanMessagePromptTemplate(
        ...     prompt=PromptTemplate(
        ...         template="What is a good name for a company that makes {product}?",
        ...         input_variables=["product"],
        ...    ),
        ... )
        >>> chat_prompt_template = ChatPromptTemplate.from_messages(
        ...   [human_message_prompt]
        ... )
        >>> callback = ContextCallbackHandler(token)
        >>> # Note: the same callback object must be shared between the
        ...   LLM and the chain.
        >>> chat = ChatOpenAI(temperature=0.9, callbacks=[callback])
        >>> chain = LLMChain(
        ...   llm=chat,
        ...   prompt=chat_prompt_template,
        ...   callbacks=[callback]
        ... )
        >>> chain.run("colorful socks")
    Ú FÚtokenÚverboseÚkwargsr   Nc                 óP  — t          ¦   «         \  | _        | _        | _        | _        | _        | _        |p t          j         	                    d¦  «        pd}| j         
                    |                      |¦  «        ¬¦  «        | _        d | _        d | _        g | _        i | _        d S )NÚCONTEXT_TOKENr   )Ú
credential)r   Úcontextr    Úconversation_modelÚmessage_modelÚmessage_role_modelÚrating_modelÚosÚenvironÚgetÚ
ContextAPIÚclientÚchain_run_idÚ	llm_modelÚmessagesÚmetadata)Úselfr   r   r   s       r   Ú__init__zContextCallbackHandler.__init__Y   sš   € õ ÑÔñ	
ØŒLØŒOØÔ#ØÔØÔ#ØÔð Ð>�œŸš¨Ñ8Ô8Ð>¸Bˆà”l×-Ò-¸¿ºÈÑ9OÔ9OÐ-ÑPÔPˆŒà ˆÔàˆŒà#%ˆŒØ(*ˆŒˆˆr   Ú
serializedr-   Úrun_idc                óÀ  — |                      di ¦  «                              dd¦  «        }|�
|| j        d<   t          |¦  «        dk    rdS |d         D ]‰}| j        j        }|j        dk    r| j        j        }n/|j        dk    r| j        j        }n|j        dk    r| j        j        }| j         	                    |  
                    |j        |¬¦  «        ¦  «         ŒŠdS )	z#Run when the chat model is started.Úinvocation_paramsÚmodelNr   ÚhumanÚsystemÚai©ÚmessageÚrole)r(   r.   Úlenr$   ÚSYSTEMÚtypeÚUSERÚ	ASSISTANTr-   Úappendr#   Úcontent)r/   r1   r-   r2   r   r,   r:   r;   s           r   Úon_chat_model_startz*ContextCallbackHandler.on_chat_model_startn   s  € ð —J’JÐ2°BÑ7Ô7×;Ò;¸GÀTÑJÔJˆ	ØÐ Ø%.ˆDŒM˜'Ñ"åˆx‰=Œ=˜AÒÐØˆFà ”{ð 	ð 	ˆGØÔ*Ô1ˆDØŒ|˜wÒ&Ð&ØÔ.Ô3��Ø” Ò)Ð)ØÔ.Ô5��Ø” Ò%Ð%ØÔ.Ô8�àŒM× Ò Ø×"Ò"Ø#œOØð #ñ ô ñô ð ð ð	ð 	r   Úresponsec                 óR  — t          |j        ¦  «        dk    st          |j        d         ¦  «        dk    rdS | j        sg|j        d         d         }| j                             |                      |j        | j        j        ¬¦  «        ¦  «         |  	                    ¦   «          dS dS )zRun when LLM ends.r   Nr9   )
r<   Úgenerationsr+   r-   rA   r#   Útextr$   r@   Ú_log_conversation)r/   rD   r   Ú
generations       r   Ú
on_llm_endz!ContextCallbackHandler.on_llm_endŽ   s¸   € åˆxÔ#Ñ$Ô$¨Ò)Ð)­S°Ô1EÀaÔ1HÑ-IÔ-IÈQÒ-NÐ-NØˆFàÔ ð 		%Ø!Ô-¨aÔ0°Ô3ˆJØŒM× Ò Ø×"Ò"Ø&œOØÔ0Ô:ð #ñ ô ñô ð ð ×"Ò"Ñ$Ô$Ð$Ð$Ð$ð		%ð 		%r   Úinputsc                 ó<   — |                      dd¦  «        | _        dS )zRun when chain starts.r2   N)r(   r+   )r/   r1   rK   r   s       r   Úon_chain_startz%ContextCallbackHandler.on_chain_startž   s    € ð #ŸJšJ x°Ñ6Ô6ˆÔÐÐr   Úoutputsc                 óº   — | j                              |                      |d         | j        j        ¬¦  «        ¦  «         |                      ¦   «          d| _        dS )zRun when chain ends.rG   r9   N)r-   rA   r#   r$   r@   rH   r+   )r/   rN   r   s      r   Úon_chain_endz#ContextCallbackHandler.on_chain_end¤   sf   € àŒ×ÒØ×ÒØ œØÔ,Ô6ð ñ ô ñ	
ô 	
ð 	
ð 	×ÒÑ Ô Ð à ˆÔÐÐr   c                 óØ   — t          | j        ¦  «        dk    rdS | j        j                             d|                      | j        | j        ¬¦  «        i¬¦  «         g | _        i | _        dS )z(Log the conversation to the context API.r   NÚconversation)r-   r.   )Úbody)r<   r-   r*   ÚlogÚconversation_upsertr"   r.   )r/   s    r   rH   z(ContextCallbackHandler._log_conversation±   sz   € åˆtŒ}ÑÔ Ò"Ð"ØˆFàŒŒ×+Ò+à × 7Ò 7Ø!œ]Ø!œ]ð !8ñ !ô !ðð 	,ñ 	
ô 	
ð 	
ð ˆŒØˆŒˆˆr   )r   F)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚboolr   r0   r   r   r   r   rC   r	   rJ   rM   rP   rH   r   r   r   r   r      s^  € € € € € ð9ð 9ðv+ð +˜cð +°ð +Èð +ÐQUð +ð +ð +ð +ð*à˜˜c˜”Nðð �t˜KÔ(Ô)ðð
 ðð ðð 
ðð ð ð ð@% 9ð %¸ð %Àð %ð %ð %ð %ð 7Ø˜s C˜xœ.ð7Ø26°s¸C°x´.ð7ØLOð7à	ð7ð 7ð 7ð 7ð! D¨¨c¨¤Nð !¸cð !Àdð !ð !ð !ð !ðð ð ð ð ð r   r   )rY   r&   Útypingr   r   r   Úuuidr   Úlangchain_core.callbacksr   Úlangchain_core.messagesr   Úlangchain_core.outputsr	   Úlangchain_core.utilsr
   r   r   r   r   r   ú<module>rb      sæ   ðØ %Ð %à 	€	€	€	Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø -Ð -Ð -Ð -Ð -Ð -ð˜ð ð ð ð ð cð cð cð cð cÐ0ñ cô cð cð cð cr   