§
    J»4fæ  ã                   ó@  — d dl m 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d	lmZ d d
l mZ d dlmZmZ d dlm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 m!Z!  ej"        ¦   «         Z"de" #                    d¦  «        z   dz   Z$ G d„ d¦  «        Z%dS )é    )Údatetime)ÚUnionÚListÚLiteral)ÚBookRoomSchema)ÚShowRoomSchema)Úsettings)ÚChatResponseé   )ÚSearchRoomSchema)Úcreate_agent_prompt)Údate)ÚAgentExecutorÚcreate_openai_functions_agent)Ú
ChatOpenAI)ÚSystemMessageÚ	AIMessageÚHumanMessage)ÚStrOutputParser)ÚChatPromptTemplate)Úcollect_runsÚatrace_as_chain_groupaU  You are a helpful AI hotel manager at the "Bay View Hotel". Your responsibilities include answering user queries about searching/checking room availability, booking rooms, canceling room bookings, and providing information on the cheapest available rooms. Provide concise answers, not exceeding 10 words unless more detail is required. Feel free to use any necessary tools like "SEARCH_ROOM", "BOOK_ROOM", "CANCEL_ROOM", and "SHOW_SUITES" to assist with queries. Transfer the conversation flow to the previous tool when needed. Answer in the same language as the conversation.
The current date is ú%d%t %B, %Yaá   and never provide room availability for past dates. Include relevant images or URLs only if they were in the previous conversation.
Always promote our hotel by highlighting facilities, nearby popular locations, and other attractions. Catch users' attention and encourage them to visit our hotel including the cheapest available rooms.. Provide concise answers following the law of least action. Deafult members are 2 adults and 0 child and default check in date is today and checkout date is tommorow and at Lastly, confirm all the details for booking or checkout.
<HOTEL INFORMATION>
Name: Bay View Hotel,
Address: 4321 Gulf Bivd St Pete Beach, FL 33706,
Email: frontoffice@plazabeach.com,
phone: +1 (800) 257-8998
</HOTEL INFORMATION>c                   ó’   — e Zd Zdg d¢dfdedeeez  ez           deed                  de	d	df
d
„Z
d	efd„Zd	efd„Zdd„Zd	efd„ZdS )Ú
HotelAgentN)ÚSHOW_SUITESÚSEARCH_ROOMÚ	BOOK_ROOMÚCANCEL_ROOMÚmissing_parametersFÚquestionÚchat_historyÚ
tools_used)r   r   r   r   r    ÚstreamÚreturnc                 ór   — t          t          j        dg ¬¦  «        | _        || _        || _        || _        d S )Nzgpt-4-turbo-preview)Úopenai_api_keyÚ
model_nameÚ	callbacks)r   r	   Ú
OPENAI_KEYÚllmr!   r#   r"   )Úselfr!   r"   r#   r$   s        ú3/var/www/html/ls-bot-apis/app/agents/hotel_agent.pyÚ__init__zHotelAgent.__init__   sD   € õ Ý#Ô.Ø,Øð
ñ 
ô 
ˆŒð !ˆŒØ$ˆŒØ(ˆÔÐÐó    c              ƒ   óh  K  — t          j        ¦   «         }|                     d¦  «        }t          |¦  «         |                      ¦   «         }t          ¦   «         5 }t          dd| j        i¬¦  «        4 ƒd {V —†}|                     | j        |dœ|ddœ¬¦  «        ƒ d {V —†}| 	                    d	|i¦  «        ƒ d {V —† |j
        d
         j                             ¦   «         }d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        S )Nr   ÚHotelBotr!   )Úinputs)r!   Ú
today_dater   )r)   Úrun_name)ÚinputÚconfigÚoutputr   )r   ÚtodayÚstrftimeÚprintÚ_create_agentr   r   r!   ÚainvokeÚon_chain_endÚtraced_runsÚidÚ__str__Ú_HotelAgent__parse_results)r,   r8   Úformatted_dateÚagent_executorÚruns_cbÚgroup_managerÚresultÚrun_ids           r-   r<   zHotelAgent.ainvoke/   s"  è è € Ý”
‘”ˆØŸš¨Ñ6Ô6ˆÝˆnÑÔÐØ×+Ò+Ñ-Ô-ˆÝ‰^Œ^ð 		=˜wÝ,¨ZÀÈTÌ]Ð@[Ð\Ñ\Ô\ð =ð =ð =ð =ð =ð =ð =Ð`mØ-×5Ò5à $¤Ø"0ðð ð %2¸_ÐMÐMð  6ñ  Oô  Oð Oð Oð Oð Oð Oð O�ð $×0Ò0°(¸FÐ1CÑDÔDÐDÐDÐDÐDÐDÐDÐDØ Ô,¨QÔ/Ô2×:Ò:Ñ<Ô<�ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð		=ð 		=ð 		=ñ 		=ô 		=ð 		=ð 		=ð 		=ð 		=ð 		=ð 		=øøøð 		=ð 		=ð 		=ð 		=ð ×#Ò# FÑ+Ô+Ð+s7   ÁDÁ;A*C7Ã%DÃ7
D	ÄDÄD	ÄDÄDÄDc           	      óÎ   — |                       ¦   «         }t          | j        |t          t	          t
          ¬¦  «        | j        ¬¦  «        ¬¦  «        }t          ||d¬¦  «        }|S )N)Úcontent)Úsystem_messageÚextra_prompt_messages)r+   ÚtoolsÚpromptT)ÚagentrL   Úreturn_intermediate_steps)Ú_setup_agent_toolsr   r+   r   r   ÚHOTEL_AGENT_PROMPTr"   r   )r,   rL   rN   ÚagentExecutors       r-   r;   zHotelAgent._create_agentB   sƒ   € Ø×'Ò'Ñ)Ô)ˆÝ+Ø”HØÝ*½-ÕPbÐ:cÑ:cÔ:cÐ{ô  |Mð  Nñ  Nô  Nð
ñ 
ô 
ˆõ &ØØØ&*ð
ñ 
ô 
ˆð
 Ðr/   c                 óN  — g }d| j         v r@ddlm}  || j        | j        | j        ¬¦  «        }|                      |¦   «         ¦  «         d| j         v r@ddlm}  || j        | j        | j        ¬¦  «        }|                      |¦   «         ¦  «         d| j         v r@ddl	m
}  || j        | j        | j        ¬¦  «        }|                      |¦   «         ¦  «         d	| j         v r4dd
lm}  || j        ¬¦  «        }	|                      |	¦   «         ¦  «         d| j         v r	 |S )Nr   r   )ÚShowRoomTool)r!   r+   Úhistoryr   )ÚSearchRoomToolr   )ÚBookRoomToolr    )ÚAgentAnswerTool)r!   r   )r#   Útools.show_suitesrT   r!   r+   r"   ÚappendÚtools.search_roomsrV   Útools.book_roomrW   Útools.agent_toolrX   )
r,   rL   rT   Úshow_room_toolrV   Úsearch_room_toolrW   Úbook_room_toolrX   Úmissing_param_tools
             r-   rP   zHotelAgent._setup_agent_toolsQ   st  € ØˆØ˜DœOÐ+Ð+Ø7Ð7Ð7Ð7Ð7Ð7Ø)˜\°4´=ÀtÄxÐY]ÔYjÐkÑkÔkˆNØ�LŠL˜˜Ñ)Ô)Ñ*Ô*Ð*à˜DœOÐ+Ð+Ø:Ð:Ð:Ð:Ð:Ð:Ø-˜~°t´}È4Ì8Ð]aÔ]nÐoÑoÔoÐØ�LŠLÐ)Ð)Ñ+Ô+Ñ,Ô,Ð,à˜$œ/Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5Ø)˜\°4´=ÀtÄxÐY]ÔYjÐkÑkÔkˆNØ�LŠL˜˜Ñ)Ô)Ñ*Ô*Ð*à 4¤?Ð2Ð2Ø9Ð9Ð9Ð9Ð9Ð9Ø!0 ¸$¼-Ð!HÑ!HÔ!HÐØ�LŠLÐ+Ð+Ñ-Ô-Ñ.Ô.Ð.à˜DœOÐ+Ð+ØØˆr/   c                 ó–  — |d         }t          t          |¦  «        ¦  «         t          d¬¦  «        }t          |t          ¦  «        r+t          t          j        d¬¦  «        }t          |¬¦  «        }t          |t          ¦  «        r!t          |j	        |j
        |j        ¬¦  «        }t          |t          ¦  «        r!t          |j	        |j
        |j        ¬¦  «        }t          |t          ¦  «        r!t          |j	        |j
        |j        ¬¦  «        }t          |t          ¦  «        rt          |d         |d         ¬	¦  «        }|S )
Nr7   z0Something went wrong can you ask question again.)Úanswerzgpt-3.5-turbo-0125)r'   r(   )rc   ÚfollowUpQuestionsÚ
additionalrc   ÚfollowUpResponses)rc   rd   )r:   Útyper
   Ú
isinstanceÚstrr   r	   r*   r   rc   rd   re   r   r   Údict)r,   rF   Úfinal_resultÚ	openAILLMs       r-   Ú__parse_resultszHotelAgent.__parse_resultsk   s]  € Ø˜Ô!ˆÝ�d�6‰lŒlÑÔÐÝ#Ð+]Ð^Ñ^Ô^ˆÝ�f�cÑ"Ô"ð 	7Ý#Ý#Ô.Ø+ð
ñ 
ô 
ˆIõ (¨vÐ6Ñ6Ô6ˆLå�fÕ.Ñ/Ô/ð 	Ý'Ø”}Ø"(Ô":Ø!Ô,ðñ ô ˆLõ
 �f�nÑ-Ô-ð 	Ý'Ø”}Ø"(Ô":Ø!Ô,ðñ ô ˆLõ
 �f�nÑ-Ô-ð 	Ý'Ø”}Ø"(Ô":Ø!Ô,ðñ ô ˆLõ
 �f�dÑ#Ô#ð 	Ý'Ø˜hÔ'Ø"(Ð)<Ô"=ðñ ô ˆLð Ðr/   )r%   N)Ú__name__Ú
__module__Ú__qualname__ri   r   r   r   r   r   Úboolr.   r
   r<   r   r;   rP   rA   © r/   r-   r   r      sû   € € € € € ð LPð yIð  yIð  yIØ ð)ð )àð)ð ˜|¨iÑ7¸-ÑGÔHð)ð ˜WÐ%sÔtÔuð	)ð
 ð)ð ð)ð )ð )ð )ð",˜|ð ,ð ,ð ,ð ,ð&˜}ð ð ð ð ðð ð ð ð4)¨ð )ð )ð )ð )ð )ð )r/   r   N)&r   Útypingr   r   r   Úapp.agents.tools.book_roomr   Úapp.agents.tools.show_suitesr   Úapp.configs.settingsr	   Úapp.schemas.chatr
   r[   r   Ú r   r   Úlangchain.agentsr   r   Úlangchain_openai.chat_modelsr   Úlangchain.schemar   r   r   Úlangchain_core.output_parsersr   Úlangchain_core.promptsr   Úlangchain.callbacks.managerr   r   r8   r9   rQ   r   rr   r/   r-   ú<module>r      s¨  ðØ Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø )Ð )Ð )Ð )Ð )Ð )Ø )Ð )Ð )Ð )Ð )Ð )Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kð 	ˆŒ
‰Œ€ðØŸš }Ñ5Ô5ñ6ð7ñÐ ðwð wð wð wð wñ wô wð wð wð wr/   