Ë
    @hx  ã                   ó˜  — d dl mZmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZmZmZmZ d dlZd dlZd dlmZ  e«         e«       Z ej*                  d«      ZdZer	  ee¬«        ed	«      Zi Z G d„ de	«      Z G d„ de	«      Zej?                  ded¬«       ed«      fdefd„«       Z y# e$ rZ ed
 ee«      › �«       Y dZ[ŒYdZ[ww xY w)é    )Ú	configureÚGenerativeModel)Ú	APIRouterÚHTTPExceptionÚBody)Ú	BaseModelÚField)ÚOptionalÚDictÚAnyÚListN)Úload_dotenvÚGEMINI_API_KEY)Úapi_keyúgemini-2.0-flashzFailed to initialize Gemini: c                   óv   — e Zd ZU  eddd¬«      Zeed<    edd¬«      Zee   ed	<    ed
d¬«      Z	ee   ed<   y)Ú	ChatInput.é   z$User's message to the chat assistant)Ú
min_lengthÚdescriptionÚmessageNz'Session ID for continuing conversations)r   Ú
session_idÚenz Language code (en, hi, mr, etc.)Úlanguage)
Ú__name__Ú
__module__Ú__qualname__r	   r   ÚstrÚ__annotations__r   r
   r   © ó    úRC:\Users\aadil\OneDrive\Desktop\404\backend\app\api\endpoints\multilingual_chat.pyr   r      sB   … Ù˜¨Ð8^Ô_€GˆSÓ_Ù % dÐ8aÔ b€J�˜‘ÓbÙ# DÐ6XÔY€Hˆh�s‰mÔYr!   r   c                   ó:   — e Zd ZU eed<   eed<   dZeed<   eed<   y)ÚChatResponseÚresponser   r   Ú
model_usedÚhistoryN)r   r   r   r   r   r&   Úlistr    r!   r"   r$   r$      s   … ØƒMØƒOØ(€J�Ó(Ø„Mr!   r$   z/messageéÈ   )Úresponse_modelÚstatus_code.Ú
chat_inputc              ƒ   óp  K  — t         st        dd¬«      ‚	 | j                  xs t        t	        j
                  «       «      }t        j                  |g «      }|s%|j                  ddd| j                  › d�igdœ«       |j                  dd| j                  igdœ«       t         j                  |¬	«      }|j                  | j                  «      }|j                  }|j                  d
d|igdœ«       |t        |<   t        ||d|¬«      S # t        $ r}t        ddt        |«      › �¬«      ‚d}~ww xY w­w)z€
    Multilingual Gemini chat endpoint using google-generativeai SDK.
    Stores and uses conversation history per session.
    iô  zGemini model not initialized)r+   ÚdetailÚuserÚtextaf  You are FarmGenius, a professional multilingual AI assistant for Indian agriculture. You ONLY answer questions related to farming, crops, weather, agri-markets, government schemes, or rural livelihoods. If a question is not about agriculture, politely refuse and ask the user to ask a farming-related question.
Always answer in the user's selected language: z‹. Never answer in English unless the user selected English.
Be friendly, clear, and provide detailed, actionable advice for Indian farmers.)ÚroleÚparts)r'   Úmodelr   )r%   r   r&   r'   zGemini error: N)Úgenai_modelr   r   r   ÚuuidÚuuid4Úconversation_historiesÚgetÚappendr   r   Ú
start_chatÚsend_messager0   r$   Ú	Exception)r,   r   r'   Úchat_sessionr%   Úai_responseÚes          r"   Úchat_messager@   %   sN  è ø€ õ Ü¨Ð4RÔSÐSð"OØ×*Ñ*Ò?¬c´$·*±*³,Ó.?ˆ
Ü(×,Ñ,¨Z¸Ó<ˆáØ�N‰NØàðJð KU×J]ÑJ]ÐI^ð _jðkð	ð 	ñô ð 	�‰ °6¸:×;MÑ;MÐ2NÐ1OÑPÔQä"×-Ñ-°gÐ-Ó>ˆØ×,Ñ,¨Z×-?Ñ-?Ó@ˆØ—m‘mˆà�‰ °F¸KÐ3HÐ2IÑJÔKØ-4Ô˜zÑ*ÜØ Ø!Ø)Øô	
ð 	
øô ò OÜ¨°nÄSÈÃVÀHÐ4MÔNÐNûðOüs)   ‚D6—C4D ÄD6Ä	D3ÄD.Ä.D3Ä3D6)!Úgoogle.generativeair   Úgenai_configurer   Úfastapir   r   r   Úpydanticr   r	   Útypingr
   r   r   r   r5   ÚosÚdotenvr   ÚrouterÚgetenvr   r4   r<   r?   Úprintr   r7   r   r$   Úpostr@   r    r!   r"   Ú<module>rL      sß   ðß Mß 2Ñ 2ß %ß ,Ó ,Û Û 	Ý á „á	‹€ð �—‘Ð+Ó,€Ø€Ùð8Ù Õ/Ù%Ð&8Ó9ˆð
 Ð ôZ�	ô Zô
�9ô ð ‡�ˆZ¨À#€ÓFÙ/3°C«yñ )O 9ò )Oó Gñ)Oøð% ò 8ÙÐ-©c°!«f¨XÐ6×7Ñ7ûð8ús   ÁB) Â)C	Â.CÃC	