
    dh                         S r SSKJr  SSKJrJrJrJrJrJ	r	  SSK
r
SSKJr  SSKJr  SSKJrJrJrJr  SSKJrJr  SS	KJr  SS
KJr  S\\   SS4S jr SS\\   S\	\\      S\4S jjr " S S\5      rg)z<ChatModel wrapper which returns user input as the response..    )StringIO)AnyCallableDictListMappingOptionalN)CallbackManagerForLLMRun)BaseChatModel)BaseMessageHumanMessage_message_from_dictmessages_to_dict)ChatGeneration
ChatResult)Field)enforce_stop_tokensmessagesreturnc           
          [        U 5      nU H@  n[        R                  " USSSSS S9n[        SSS5        [        U5        [        SS5        MB     g )	NFTi'  )default_flow_style	sort_keysallow_unicodewidth
line_break
z ======= start of message =======z

z======= end of message =======)r   yamldumpprint)r   dict_messagesmessageyaml_strings       ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_models/human.py_display_messagesr$      sX    $X.M ii$
 	d6?k.7 !    stopc                 N  ^ / n [        5       mTR                  5       (       d  O5U(       a  [        U4S jU 5       5      (       a  OUR                  T5        MU  SR	                  U5      n [        [        R                  " [        U5      5      5      nUc	  [        SS9$ U(       aG  [        UR                  [        5      (       a  [        UR                  U5      Ul        U$ [        S5      eU$ ! [        R                   a    [        S5      e[         a    [        S5      ef = f)z3Collects and returns user input as a single string.c              3   *   >#    U H	  oT;   v   M     g 7fN ).0seqlines     r#   	<genexpr>&_collect_yaml_input.<locals>.<genexpr>0   s     4ttts   r    )contentz'Cannot use when output is not a string.zInvalid YAML string entered.zInvalid message entered.)inputstripanyappendjoinr   r   	safe_loadr   r   
isinstancer1   strr   
ValueError	YAMLError)r   r&   linesr"   r!   r-   s        @r#   _collect_yaml_inputr=   '   s     E
wzz||C4t444T  ))E"K5$T^^H[4I%JK?++'//3//"5goot"L  !!JKK>> 9788 53445s   ,3C0  AC0 #C0 04D$c                       \ rS rSr% Sr\" S S9r\\S'   \" S S9r	\\S'   Sr
\\S	'   0 r\\\4   \S
'   0 r\\\4   \S'   \S\\\4   4S j5       r\S\4S j5       r  SS\\   S\\\      S\\   S\S\4
S jjrSrg)HumanInputChatModelF   z3ChatModel which returns user input as the response.c                      [         $ r)   )r=   r*   r%   r#   <lambda>HumanInputChatModel.<lambda>I   s    9Lr%   )default_factory
input_funcc                      [         $ r)   )r$   r*   r%   r#   rB   rC   J   s    ;Lr%   message_funcr   	separatorinput_kwargsmessage_kwargsr   c                 \    U R                   R                  U R                  R                  S.$ )N)rE   rG   )rE   __name__rG   selfs    r#   _identifying_params'HumanInputChatModel._identifying_paramsO   s*     //22 --66
 	
r%   c                     g)zReturns the type of LLM.zhuman-input-chat-modelr*   rM   s    r#   	_llm_typeHumanInputChatModel._llm_typeV   s     (r%   Nr   r&   run_managerkwargsc                     U R                   " U40 U R                  D6  U R                  " U4SU0U R                  D6n[	        [        US9/S9$ )aY  
Displays the messages to the user and returns their input as a response.

Args:
    messages (List[BaseMessage]): The messages to be displayed to the user.
    stop (Optional[List[str]]): A list of stop strings.
    run_manager (Optional[CallbackManagerForLLMRun]): Currently not used.

Returns:
    ChatResult: The user's input as a response.
r&   )r!   )generations)rG   rJ   rE   rI   r   r   )rN   r   r&   rT   rU   
user_inputs         r#   	_generateHumanInputChatModel._generate[   sN    $ 	(:d&9&9:__XNDND<M<MN
~j'I&JKKr%   r*   )NN)rL   
__module____qualname____firstlineno____doc__r   rE   r   __annotations__rG   rH   r9   rI   r   r   rJ   propertyr   rO   rR   r   r   r	   r
   r   rY   __static_attributes__r*   r%   r#   r?   r?   F   s    = 1LMJM"3LML(MIs&(L'#s(#((*NGCH%*
T#s(^ 
 
 (3 ( ( %):>	L{#L tCy!L 67	L
 L 
L Lr%   r?   r)   )r^   ior   typingr   r   r   r   r   r	   r   langchain_core.callbacksr
   *langchain_core.language_models.chat_modelsr   langchain_core.messagesr   r   r   r   langchain_core.outputsr   r   pydanticr   langchain_community.llms.utilsr   r$   r9   r=   r?   r*   r%   r#   <module>rj      s    B  ? ?  E  >  >8[ 1 8d 8" >B5;5'/S	':55>)L- )Lr%   