
    XgG                         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dS )    N)OpenAI)Mistralc                    | }t                       t          d           t          |           t          d           |                    dd          }|                    dd          }|                    d          }|dk    rx||dz   d          }|                    d	          }|dk    rN|d |         }|                    d
          }|                    d          }|}||k     r|}|dk    r
||d          }n|                    d          }|                    d
          }|                    d|dz             }d}|dk    r||k     r||k     rd}|dk    rpt          |          }d}	d}
d}d}d}|
|k     rC||
         }|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     C|||dz            }n7|                    d          }|                    d          }|||dz            }|                    dd          }|                    dd          }d}|dk    rcd}|                    d          }|dk    r@|                    d|          }|dk    r$d}|d|         ||t          |                   z   }|dk    ci }	 t          j        |          }|sg }nbt          |t                    sMd}d}|D ]	}|}|dz  }
|dk    r|dk    r|dk    r|g}n'||         }nt          d           t          |           t                       t          d           t          j	        |d          }t          |           t          d           n#  t                       t          d           t          d           t          d           t          |            t                       t          d|z              t          d           t          d           Y nxY w|S ) 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                          5/home/debian/html/nutritwin/resources/KCALLMEngine.pymakeTextJSONCompliantr7      s|    D	GGG	
BCCC	$KKK	
BCCC <<$$D<<R((D 99YDqyyDFGG}yy!88;DIIcNNEIIcNNEDu}}axxDEE{ yy~~yy~~yydQh''199G ed))CCAFBBS&&G881HCRxx!FF#XX!GC!88$BQ S&& 2a4=DD
 JJsOOEJJsOOEU1W%D <<b!!D<<''D E
4--yy!8899T4((DaxxAdF|d4D		>&:: 4-- F'fD!!  	FFFD)) 	CD  qaxxDI--6>>$XFF#D\FF;<<<f 	VWWWj***c


VWWWW	fdeeedeee0111l(4/000deeedeeeeeMs   CM* *B
O6c                 N   g }|                      d          }|dk    r| |d          } nd| z   } |                     d          }|dk    r| d|dz            } n| dz   } |                      d          dk    r|                     dd          } |                     d	d
          } |                     dd          } |                     dd          } |                     dd          } |                     dd
          } t          j        |           }	 |D ]
}|d         }n	#  |cY S xY w|S )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=      sB    H 99S>>DqyyDEE{Tz::c??DqyyAd1fH~czyyr!!||GZ00<<%%D<<b!!D<<	2&&D<<R  D<<''DJtE 	 	Bf:DD	Ls   D D"c                     i }t          j        |           }t          |d|          }	 |d                                         }n#  Y nxY w|S )Nr   response)KCALLMPromptgetSplitPromptsrunLLMcopy)promptmodelpromptssplitPromptr;   s        r6   rG   rG      s^     G .v66K ;E**E
#((**Ns   A Ac                     t           j        } t          j        |           }d}ddd|z   d}t          j        ||          }t          j        |j                  }|d         }g }|D ]}|                    |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Jty!!E=DI " "4!!!!    c                     g }|dk    r!|                     t          j                   |S t          j        ||           }t          |d|          }	 |d         d                                         }n#  Y nxY w|S )Nr   r?   r   )rX   KCALLMConstINTENT_IMAGE_TO_FOODr@   getIntentDetectionPromptrB   rC   )
intentListrD   image64rE   r   intentPromptr;   s          r6   getIntentsFromPromptrf      s     G "}}{7888  8LLL <U++E
#I.3355Ns    A2 2A6Tc                 	   i }d}|}|dk    rO|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    rSd	| d
g}t          |          }|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||          }|                                }|d         d         d          d!         }
n|t           j        k    rVd	| d
g}t          d"|#          }|j	        j
                            ||ddid$d%          }|j        d         j        j        }
n|t           j        k    s|t           j        k    r
t          j        |          }|dk    rdt'          |          }|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#          j        |          *          }t#          j        |j                  }|d         d         d          d!         }
nw|t           j        k    ret          j        |          }t9          j        |          }d	d| dgd
g}|j                            |ddd|+          }|j        d         j        }
nd S 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/<   n#  Y nxY wn#  Y nxY wtE          j#        |          |d1<   d2}d3}||z  |	|z  z   |d4<   |S )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   	  s    ELE "}}J3333Enooo*U2_DEEEnooo 
E
"
"CFNM	GGG	
efff	&MMM	
efff	GGGH
%%%&&
 b==%6::;Hc***F ;*11!) 2  D |A.6HH )***0. G  !' )/(. 
 )4$)+NW+N+N.& $ $ M$ "- G2 =!MW^elmmmDIIKKEY'*95i@HH 
**	*	*!v667!HRUVVV {&--$m5 .   <?*2 
*1	1	1Uj>]5]5]&&b== S)))F"K00"(- 9 !'#)  1 	 	M& %,Q/7?H - 3 E)/=M@ !3!03 G # %+$* 
 %0 %'J'J'J*"   H$ ?C'90%._ G
 $#% ((.'> D =gDJt<L<LMMMDJty))EY'*95i@HHJ 
*)	)	)&& $S111!661R1R/STTU%% & 
 
 <?' tN2NbcccN8Nbccc DDt(22DDD	Aww2%%#,Q 	D d++E* ((!$77:KNb:bbE&MLs$   Q 6Q Q QQ Q c                 n   t          j        d          }t          j        |          }t          j        |          }t	          |          }d }|dk    r|j                            | |          }n|j                            | ||          }g }|j        D ]}|                    |j	                   |S )Nchatgpt4rk   r   )inputrE   )r   
dimensionsrE   )
rR   getModelFromFamilyrT   getModelForEmbeddingr   
embeddingsr   rP   rX   	embedding)	rW   dimr   rY   embMdlr   r?   allEmbsr\   s	            r6   generateEmbeddingr   H  s    

'

3
3C

C
 
 C,S11FC   FH
axx$++ , 
 

 $++ , 
 
 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      s<   				                                        A A AH% % %P  *  &  2| | | |~	    r^   