
    i(&                        S SK Jr  S SK7  S SKJr  S SKJr  S SKJr  SSK	7  SSK
7  S SKJr  S SKJr  \" \S	9rS
r " S S\R"                  5      r " S S5      r " S S\\\R*                  5      r " S S\\R.                  5      r " S S\R*                  5      r " S S\R.                  5      r " S S\\\R*                  5      r " S S\\R8                  5      r " S S\R*                  5      r " S S\R.                  5      r " S S \\R*                  5      r  " S! S"\\R.                  5      r! " S# S$\R*                  5      r" " S% S&\R.                  5      r#g')(    )render)*)generics)JsonResponse)OpenAI   )DjangoFilterBackend)OPENAI_API_KEY)api_keya  
You are Mama Care AI, a warm, supportive, and trustworthy assistant
for mothers and caregivers.

You support:
- Pregnancy and prenatal care
- Postpartum recovery after birth
- Newborn, infant, toddler, and child care
- Child development and well-being up to 10 years old

Important:
The information provided is for educational and informational purposes only.
It is not medical advice, diagnosis, or treatment.

When discussing health-related or medical topics,
gently remind the user that the information provided is general guidance
and not a substitute for professional medical advice.
Do not repeat this reminder unnecessarily.

You are strictly limited to pregnancy, postpartum care,
newborn care, child development, and parenting topics
for children up to 10 years old.

If a user asks about topics unrelated to motherhood,
pregnancy, child care, health, or parenting,
politely refuse and redirect the conversation back
to Mama Care topics.

Do not answer unrelated questions.

Rules:
- Provide general educational guidance and emotional support only
- Do NOT diagnose medical conditions
- Do NOT prescribe medications or provide dosages
- For serious, urgent, or worsening symptoms, clearly recommend consulting
  a licensed healthcare professional
- If a situation appears life-threatening, recommend immediate medical care
- Use calm, reassuring, and non-alarming language
- Be empathetic, respectful, and culturally sensitive
- Keep answers clear, simple, and practical
- Avoid fear-based or judgmental language
c                   "    \ rS rSr\\/rS rSrg)SendMessage9   c                 ~    UR                   R                  SS5      nUR                   R                  S/ 5      n[        R                  R	                  US9nSnUR                  5       S:  a  US   nUb  UR                  S:w  aa  U(       d  [        SS0S	S
9$ [        R                  R                  UR                  S[        S./UQS	S9nUR                  n	[        UUU	S.5      $ [        UUSS.5      $ [        UUSS.S	S
9$ ! [         a/  n
[        S[        U
5       35        [        WWSS.SS
9s Sn
A
$ Sn
A
ff = f)zy
Expected request body:
{
    "messages": [
        {"role": "user", "content": "I feel tired during pregnancy"}
    ]
}
subscriptionPlanIdNmessages)idr    errorzMessages are required.i  )statussystem)rolecontent)modelinputmax_output_tokens)r   r   replyzNo Model in basic PlanzModel is requiredzOpenAI error: z:I'm sorry, something went wrong. Please try again shortly.i  )datagetSubscriptionPlanobjectsfilter__len__aiAssistModelr   client	responsescreateSYSTEM_PROMPToutput_text	Exceptionprintstr)selfrequestargskwargsr   r   dataListselectedresponse
reply_textes              b/Users/waleedhassanin/Documents/GitHub/snow_flake_back_end_deploy/mama_care_api/ai_assist/views.pypostSendMessage.post<   s   ;	!(!1!12F!M||''
B7H(0077=O7PHH!A%#A;#))R/#+$&>?#&    &//66 '44%--H% +.  7 	 H "*!5!5J'-?#+!+)   (-?#+!9)   $);'0% 	     	N3q6(+,  %7#U! 	 		s1   BD AD &D 5D 
D<$D71D<7D< N)	__name__
__module____qualname____firstlineno__APIKeyAuthenticationMobileTokenAuthenticationauthentication_classesr6   __static_attributes__r8       r5   r   r   9   s    23LMErA   r   c                   L   ^  \ rS rSrU 4S jrU 4S jrU 4S jrU 4S jrSrU =r	$ )CheckAIAssist   c                     > [         TU ]  5       $ N)superget_queryset)r,   	__class__s    r5   rH   CheckAIAssist.get_queryset   s    w#%%rA   c                 "   > [         TU ]  U5      $ rF   )rG   perform_creater,   
serializerrI   s     r5   rL   CheckAIAssist.perform_create       w%j11rA   c                 "   > [         TU ]  U5      $ rF   )rG   perform_updaterM   s     r5   rR   CheckAIAssist.perform_update   rP   rA   c                 "   > [         TU ]  U5      $ rF   )rG   perform_destroy)r,   r   rI   s     r5   rU   CheckAIAssist.perform_destroy   s    w&u--rA   r8   )
r9   r:   r;   r<   rH   rL   rR   rU   r@   __classcell__)rI   s   @r5   rC   rC      s    &22. .rA   rC   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)AIAssistSettingsListMobileView   parentIdcreatedDater8   N)r9   r:   r;   r<   r=   r>   r?   StandardSetPaginationpagination_classr	   filter_backendsfilterset_fieldsAIAssistSettingsr    allorder_byquerysetAIAssistSettingsSerializerserializer_classr@   r8   rA   r5   rY   rY      sI    24MN,*+O"|''++-66}EH1rA   rY   c                       \ rS rSr\\/r\r\	/r
S/rSr\R                  R                  5       R!                  S5      r\rSrg) AIAssistSettingsDetailMobileView   r[   r\   r8   N)r9   r:   r;   r<   r=   r>   r?   r]   r^   r	   r_   r`   lookup_fieldra   r    rb   rc   rd   re   rf   r@   r8   rA   r5   rh   rh      sN    24MN,*+O"|L''++-66}EH1rA   rh   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)!AIAssistSettingsListDashboardView   r[   r\   r8   N)r9   r:   r;   r<   r=   DashboardTokenAuthenticationr?   r]   r^   r	   r_   r`   ra   r    rb   rc   rd   re   rf   r@   r8   rA   r5   rl   rl      sI    24PQ,*+O"|''++-66}EH1rA   rl   c                       \ rS rSr\\/r\/rS/r	Sr
\R                  R                  5       R                  S5      r\rSrg)#AIAssistSettingsDetailDashboardView   r[   r   r\   r8   N)r9   r:   r;   r<   r=   rn   r?   r	   r_   r`   rj   ra   r    rb   rc   rd   re   rf   r@   r8   rA   r5   rp   rp      sH    24PQ*+O"|L''++-66}EH1rA   rp   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)ChatListMobileView   r[   r\   r8   N)r9   r:   r;   r<   r=   r>   r?   r]   r^   r	   r_   r`   Chatr    rb   rc   rd   ChatSerializerrf   r@   r8   rA   r5   rs   rs      sG    24MN,*+O"|||!**=9H%rA   rs   c                       \ rS rSr\\/r\/rS/r	Sr
\R                  R                  5       R                  S5      r\rSrg)ChatDetailMobileView   r[   r   r\   r8   N)r9   r:   r;   r<   r=   r>   r?   r	   r_   r`   rj   ru   r    rb   rc   rd   rv   rf   r@   r8   rA   r5   rx   rx      sF    24MN*+O"|L||!**=9H%rA   rx   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)ChatListDashboardView   r[   r\   r8   N)r9   r:   r;   r<   r=   rn   r?   r]   r^   r	   r_   r`   ru   r    rb   rc   rd   rv   rf   r@   r8   rA   r5   r{   r{      sG    24PQ,*+O"|||!**=9H%rA   r{   c                       \ rS rSr\\/r\/rS/r	Sr
\R                  R                  5       R                  S5      r\rSrg)ChatDetailDashboardView   r[   r   r\   r8   N)r9   r:   r;   r<   r=   rn   r?   r	   r_   r`   rj   ru   r    rb   rc   rd   rv   rf   r@   r8   rA   r5   r~   r~      sF    24PQ*+O"|L||!**=9H%rA   r~   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)MessageListMobileView   chatIdr\   r8   N)r9   r:   r;   r<   r=   r>   r?   r]   r^   r	   r_   r`   Messager    rb   rc   rd   MessageSerializerrf   r@   r8   rA   r5   r   r      sG    24MN,*+O z""$--m<H(rA   r   c                       \ rS rSr\\/r\/rS/r	Sr
\R                  R                  5       R                  S5      r\rSrg)MessageDetailMobileView   r   r   r\   r8   N)r9   r:   r;   r<   r=   r>   r?   r	   r_   r`   rj   r   r    rb   rc   rd   r   rf   r@   r8   rA   r5   r   r      sF    24MN*+O zL""$--m<H(rA   r   c                       \ rS rSr\\/r\r\	/r
S/r\R                  R                  5       R                  S5      r\rSrg)MessageListDashboardView   r   r\   r8   N)r9   r:   r;   r<   r=   rn   r?   r]   r^   r	   r_   r`   r   r    rb   rc   rd   r   rf   r@   r8   rA   r5   r   r      sG    24PQ,*+O z""$--m<H(rA   r   c                       \ rS rSr\\/r\/rS/r	Sr
\R                  R                  5       R                  S5      r\rSrg)MessageDetailDashboardView   r   r   r\   r8   N)r9   r:   r;   r<   r=   rn   r?   r	   r_   r`   rj   r   r    rb   rc   rd   r   rf   r@   r8   rA   r5   r   r      sF    24PQ*+O zL""$--m<H(rA   r   N)$django.shortcutsr   common.viewsrest_frameworkr   django.httpr   openair   modelsserializersdjango_filters.rest_frameworkr	   mama_care_api.settingsr
   r$   r'   GenericAPIViewr   rC   SubscriptionPlanMixinListCreateAPIViewrY   RetrieveUpdateDestroyAPIViewrh   rl   rp   rs   DestroyAPIViewrx   r{   r~   r   r   r   r   r8   rA   r5   <module>r      sA   #  # $    = 1 
	')VH()) HT. .2%:=IcIc 22'<X=b=b 22(B(B 22(*O*O 2&.}X=W=W &&01H1H &&H66 &&hCC &)1(2L2L ))3H4Y4Y ))x99 ))!F!F )rA   