Ë
    µŒj`  ã                   ó‚   — 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y)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© ó    úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/callbacks/context_callback.pyÚimport_contextr      su   € ô 	�\Ð,<Ô=ÜÐ'Ð2BÔC×NÑNÜØ)Ð4Dô	
ç
‰,ÜÐ2Ð=MÔN×VÑVÜØ)Ð4Dô	
ç
‰+ÜÐ2Ð=MÔN×UÑ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y)Ú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_community.llms 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.chains import LLMChain
        >>> from langchain_community.chat_models 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")
    ÚtokenÚverboseÚkwargsr   Nc                 óH  — t        «       \  | _        | _        | _        | _        | _        | _        |xs# t        j                  j                  d«      xs d}| j                  j                  | j                  |«      ¬«      | _        d | _        d | _        g | _        i | _        y )NÚCONTEXT_TOKENÚ )Ú
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Ò>¸Bˆà—l‘l×-Ñ-¸¿¹ÈÓ9OÐ-ÓPˆŒà ˆÔàˆŒà#%ˆŒØ(*ˆ�r   Ú
serializedr-   Úrun_idc                ó  — |j                  di «      j                  dd«      }|�|| j                  d<   t        |«      dk(  ry|d   D ]¿  }| j                  j                  }|j
                  dk(  r| j                  j                  }nK|j
                  dk(  r| j                  j                  }n%|j
                  dk(  r| j                  j                  }| j                  j                  | j                  |j                  |¬«      «       ŒÁ y)	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×;Ñ;¸GÀTÓJˆ	ØÐ Ø%.ˆD�M‰M˜'Ñ"äˆx‹=˜AÒØà ”{ˆGØ×*Ñ*×1Ñ1ˆDØ�|‰|˜wÒ&Ø×.Ñ.×3Ñ3‘Ø—‘ Ò)Ø×.Ñ.×5Ñ5‘Ø—‘ Ò%Ø×.Ñ.×8Ñ8�à�M‰M× Ñ Ø×"Ñ"Ø#ŸO™OØð #ó õñ #r   Úresponsec                 ó^  — t        |j                  «      dk(  st        |j                  d   «      dk(  ry| j                  sm|j                  d   d   }| j                  j	                  | j                  |j                  | j                  j                  ¬«      «       | j                  «        yy)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Ñ1EÀaÑ1HÓ-IÈQÒ-NØà× Ò Ø!×-Ñ-¨aÑ0°Ñ3ˆJØ�M‰M× Ñ Ø×"Ñ"Ø&ŸO™OØ×0Ñ0×:Ñ:ð #ó ôð ×"Ñ"Õ$ð !r   Úinputsc                 ó2   — |j                  dd«      | _        y)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ˆÕr   Úoutputsc                 ó¸   — | j                   j                  | j                  |d   | j                  j                  ¬«      «       | j                  «        d| _        y)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¤   sS   € à�‰×ÑØ×ÑØ ™Ø×,Ñ,×6Ñ6ð ó ô	
ð 	×ÑÔ à ˆÕr   c                 óì   — t        | j                  «      dk(  ry| j                  j                  j	                  d| j                  | j                  | j                  ¬«      i¬«       g | _        i | _        y)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±   si   € äˆt�}‰}Ó Ò"Øà�‰�‰×+Ñ+à × 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ñv+˜cð +°ð +Èð +ÐQUó +ð*à˜˜c˜‘Nðð �t˜KÑ(Ñ)ðð
 ðð ðð 
óð@% 9ð %¸ð %Àó %ð 7Ø˜s C˜x™.ð7Ø26°s¸C°x±.ð7ØLOð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Ý /Ý ,Ý -ð˜ó ô cÐ0õ cr   