
    <Qj                     P    d dl Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 de	de
fd	Zy)
    N   )LLMGenerationError)itinerary_system_prompt)get_providerget_provider_starting_with)GenerateItineraryRequestpayloadreturnc                 Z   t        | j                  r| j                  j                         nd | j                  | j                  | j
                        }| j                  | j                  | j                  | j                  d}dt        j                  |      dg}| j                  r!t        | j                  | j                        n	t               }	 |j!                  ||      }|j(                  |d<   |j*                  |d<   |S # t"        $ r}t%        dt'        |            |d }~ww xY w)	N)	trip_specpreferencesanswered_questionsnum_options)
trip_briefflight_candidatesstay_candidatesevent_candidatesuser)rolecontent)model_overridezFailed to generate itineraryprovider_usedskipped_providers)r   r   
model_dumpr   r   r   r   r   r   r   jsondumpsproviderr   modelr   complete_json	Exceptionr   str	last_usedskipped)r	   system_promptuser_contentmessagesr   resultexcs          </var/www/html/meridian/meridian-ai/app/services/itinerary.pygenerate_itineraryr*   	   s   +4;4E4E'##..04''"55''	M (($66"22#44	L  DJJ|,DEFH  	#7#3#3GMMR^ T''x@
 '00F?"*"2"2FM  T !?SJPSSTs   D 	D*D%%D*)r   
exceptionsr   promptsr   providers.factoryr   r   schemasr   dictr*        r)   <module>r2      s(     + - H ." 8 "T "r1   