
    TRgF                         d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d Zd Zd Zd Zd Zdd	Zd
 Zy)    N)OpenAI)Mistralc                 Z   | }t                t        d       t        |       t        d       |j                  dd      }|j                  dd      }|j                  d      }|dk\  rZ||dz   d  }|j                  d	      }|dkD  r|d | }|j                  d
      }|j                  d      }|}||k  r|}|dkD  r||d  }n|j                  d      }|j                  d
      }|j                  d|dz         }d}|dk\  r||k  r||k  rd}|dk(  r^t        |      }d}	d}
d}d}d}|
|k  r;||
   }|d
k(  r|	dz  }	|dk(  r|
}d}n
|dk(  r|	dz  }	|	dk(  r|dk(  r|
}n|
dz  }
|
|k  r;|||dz    }n*|j	                  d      }|j	                  d      }|||dz    }|j                  dd      }|j                  dd      }d}|dk(  rKd}|j                  d      }|dkD  r-|j                  d|      }|dkD  rd}|d| ||t        |       z   }|dk(  rKi }	 t        j                  |      }|sg }nQt        |t              sAd}d}|D ]	  }|}|dz  } |dk(  r|dk7  r|dk(  r|g}n||   }nt        d       t        |       t                t        d       t        j                  |d      }t        |       t        d       |S #  t                t        d       t        d       t        d       t        |        t                t        d|z          t        d       t        d       Y |S xY w) Nz6----------------- Make it compliant ------------------z6------------------------------------------------------zfood: z	activity:z```jsonr      z```{[]   FT}
Nonenullz//intentsnamez#ERROR: wrong object representation:zF------------------------ After simplification ------------------------   )indentzF----------------------------------------------------------------------zT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z ERROR: impossible to parse [II]:zThe extracted string is )
printreplacefindlenrfindjsonloads
isinstancelistdumps)originalResprespidx1idx2idx31idx32idx3isArraynbcnbpidstarti1i2sirdx1irdx2foundjfrespidxattraajjjs                          >E:\xampp\htdocs\apps\calme\nutritwin\resources\KCALLMEngine.pymakeTextJSONCompliantr7      s    D	G	
BC	$K	
BC <<$D<<R(D 99YDqyDFG}yy!8;DIIcNEIIcNEDu}axDE{ yy~yy~yydQh'19G ed)CCAFBBS&G81HCRx!F#X!GC!8$BQ S& 2a4=D
 JJsOEJJsOEU1W%D <<b!D<<'D E
4-yy!899T4(DaxAd|d4D	&:: 4- F'fD! FFD)CDq  axDI-6>$XF#D\F;<f 	VWjj*c
VW M	fdede01l(4/0dedeMs   B-K A&L*c                    g }| j                  d      }|dk\  r| |d  } nd| z   } | j                  d      }|dk\  r	| d|dz    } n| dz   } | j                  d      dk(  r| j                  dd      } | j                  d	d
      } | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd
      } t        j                  |       }	 |D ]  }|d   }	 	 |S #  |cY S xY w)Nr	   r   r
   r   zun demir   z'demiz'un demir   z""r   r   zAnswer:.r   r   )r   r   r   r   r   )r    jDefRespr!   r"   jrespjjr   s          r6   setJSONFormatr=      s	    H 99S>DqyDE{Tz::c?DqyAd1f~czyyr!||GZ0<<%D<<b!D<<	2&D<<R D<<'DJJtEBf:D 
 Ls   C- -C3c                     i }t        j                  |       }t        |d|      }	 |d   j                         }|S #  Y |S xY w)Nr   response)KCALLMPromptgetSplitPromptsrunLLMcopy)promptmodelpromptssplitPromptr;   s        r6   rG   rG      sY     G ..v6K ;E*E
#((* NNs	   ; A c                     t         j                  } t        j                  |       }d}ddd|z   d}t        j                  ||      }t        j                  |j                        }|d   }g }|D ]  }|j                  |d           |S )Nz https://api.mistral.ai/v1/modelsapplication/jsonBearer Content-TypeAcceptAuthorization)headersdataid)	
KCALLMCoreMODEL_MISTRAL_ONLINEgetKeyrequestsgetr   r   textappend)	rE   keyurlrO   r    r;   rP   	modelListds	            r6   getMistralModelListr]      s    ++E


E
"C
,C1,!*SG <<W-DJJtyy!E=DI4!      c                     g }|dk7  r!|j                  t        j                         |S t        j                  ||       }t        |d|      }	 |d   d   j                         }|S #  Y |S xY w)Nr   r?   r   )rX   KCALLMConstINTENT_IMAGE_TO_FOODr@   getIntentDetectionPromptrB   rC   )
intentListrD   image64rE   r   intentPromptr;   s          r6   getIntentsFromPromptrf      s     G "}{778  88LL <U+E
#I.335 NNs   A% %A*c                 D	   i }d}|}|dk7  rJ|t         j                  k(  rt         j                  }t        d       t        d|z   dz          t        d       t        j                  |      }|t
        _        d}d}	t                t        d       t        |        t        d       t                d}
|t         j                  k(  rt        j                  |      }|dk(  rad	| d
g}t        |      }|j                  j                  j                  ||d|d      }|j                  d   j                  j                  }
nt        d       dd| d}|d	d| dddd| idgd
gddidd}t        j                   d||      }|j#                         }|d   d   d    d!   }
nD|t         j$                  k(  rdd	| d
g}t        d"|#      }|j                  j                  j                  ||ddid$d%      }|j                  d   j                  j                  }
n|t         j                  k(  s|t         j                  k(  r#t        j                  |      }|dk(  rt'        |      }|j                  j)                  |ddid	| d
g&      }|j                  d   j                  j                  }
|j*                  j,                  }	|j*                  j.                  }ndd| d}d	d| dddd| idgd
g}d'}ddd|z   d(}|d|ddid)}t        j                   ||t#        j0                  |      *      }t#        j2                  |j4                        }|d   d   d    d!   }
n|t         j6                  k(  rot        j                  |      }t9        j:                  |      }d	d| dgd
g}|j<                  j                  |ddd|+      }|j                  d   j4                  }
ny t?        j@                  d       t?        j@                  d,       t?        j@                  |
       t?        j@                  d-       g }d}	 |d.k(  rtC        |
      }n|
}	 |d   d/   dk(  rd0|d   d/<   tE        jF                  |      |d1<   d2}d3}||z  |	|z  z   |d4<   |S #  Y 0xY w#  Y 7xY w)5Ni  r   z^##############################################################################################z#   For image extraction, z is used    #r   zY==================================== Prompt =============================================zY=========================================================================================user)rolecontentapi_keyFg        )rE   messagesstream
max_tokenstemperaturezImage recognition....rI   rJ   )rL   rN   rW   )typerW   	image_urlrZ   zdata:image/jpeg;base64,)rq   rr   rq   json_objecti,  )rE   rm   response_formatro   z*https://api.openai.com/v1/chat/completions)rO   r   choicesmessagerj   z%http://px101.prod.exalead.com:8110/v1)base_urlrl   i  )rE   rm   rt   ro   rp   )rE   rt   rm   z*https://api.mistral.ai/v1/chat/completionsrK   )rE   rp   rm   rt   )rO   rP   )rE   ro   rp   systemrm   zM------------------------------ LLM Raw response -----------------------------zM-----------------------------------------------------------------------------Teventunknownr?   ghUMu?ghUMu?cost)$rR   rS   MODEL_PIXTRAL_ONLINEr   rT   openairl   
MODEL_GPT4r   chatcompletionscreateru   rv   rj   rU   postr   MODEL_MISTRALr   completeusagecompletion_tokensprompt_tokensr   r   rW   MODEL_ANTHRO	anthropic	Anthropicrm   KCATraceTRACEr7   rC   deepcopy)rD   rd   mdlisItJsonrjsontokenMaxSizerE   rY   r   r   r?   rm   clientr    rO   payloadr;   chat_responserZ   rP   messinput_token_pricingoutput_token_pricings                          r6   rB   rB   	  sI    ELE "}J33333Eno*U2_DEno 

E
"CFNM	G	
ef	&M	
ef	GH
%%%&
 b=%6:;Hc*F ;;**11!) 2 D ||A..66H )*0!(G  !' )/(.
 )4$)-DWI+N.&$$ M$ "-G2 ==!MW^elmDIIKEY'*95i@H 
***	*!v67!HRUV {{&&--$m5 .  <<?**22 
*11	1Uj>]>]5]&b= S)F"KK00"(- 9 !'#) 1 	M& %,,Q/77??H - 3 3 E E)//==M@ !3#*3%G # %+$*
 %0 %)@	'J*" H$ ?C'90%._G
 $#% ((.'>D ==gDJJt<LMDJJtyy)EY'*95i@HJ 
*))	)& $$S1!661R/STU%% & 
 <<?'' NN2NNbcNN8NNbc DDt(2DD	Aww2%#,Q  d+E* ((!$77:KNb:bbE&ML	s   R R RR Rc                 4   t        j                  d      }t        j                  |      }t        j                  |      }t	        |      }|j
                  j                  | ||      }g }|j                  D ]  }|j                  |j                          |S )Nchatgpt4rk   )input
dimensionsrE   )
rR   getModelFromFamilyrT   getModelForEmbeddingr   
embeddingsr   rP   rX   	embedding)	rW   dimr   rY   embMdlr   r?   allEmbsr\   s	            r6   generateEmbeddingr   H  s    

'
'

3C


C
 C,,S1FC F  '' ( H G]]q{{#  Nr^   )T)osr}   r   rC   r   argparserU   timeuuidbase64r   r@   r`   rR   KCALLMTracer   	mistralair   r7   r=   rG   r]   rf   rB   r    r^   r6   <module>r      sa    	               AH%P*&2|~	r^   