
    o>i.                     R    d dl mZ d dlmZ d dlZd dlmZ  G d d      Z e       Z	y)    N)settings)ProfileSearchRequestc                   "    e Zd Zd ZdedefdZy)GeminiServicec                     t         j                  r?t        j                  t         j                         t        j                  d      | _        y y )N)api_keyzgemini-flash-latest)r   GEMINI_API_KEYgenai	configureGenerativeModelmodel)selfs    </home/www/utuvibe.miabetepe.com/app/search/gemini_service.py__init__zGeminiService.__init__   s5    ""OOH$;$;<../DEDJ #    promptreturnc                    K   t         j                  rt         j                  dk(  rkd|j                         v sHd|j                         v s6d|j                         v s$d|j                         v sd|j                         v rddd	gd
ddddS dddS d}	 | j                  j	                  | d|       }|j
                  j                  dd      j                  dd      j                         }t        j                  |      }|j                  d      r4d|v r0|d   }d|v r'	 t        |d         }|dk  rd|d<   |S |dkD  rd|d<   |S |S # t        t        f$ r	 d|d<   Y |S w xY w# t        $ r}t        d|        dddcY d }~S d }~ww xY ww)Nzyour-gemini-keysearchfind	developercherchertrouverTPythonFastAPI   Remote   )skillsmin_years_experiencelocationlimit)	is_searchcriteriaFuE   Ceci est une réponse simulée. Veuillez fournir une clé API Gemini.)r#   replyu0  
        Vous êtes un assistant de recrutement. Analysez le message de l'utilisateur.
        Déterminez si l'utilisateur demande à rechercher/trouver des candidats/profils ou s'il discute simplement.
        
        Si l'utilisateur demande à chercher/trouver des candidats, extrayez les besoins dans un objet JSON correspondant à cette structure :
        {
            "is_search": true,
            "criteria": {
                "skills": ["liste", "de", "chaines"],
                "min_years_experience": int,
                "max_years_experience": int,
                "companies": ["liste"],
                "positions": ["liste"],
                "education_degrees": ["liste"],
                "education_institutions": ["liste"],
                "languages": ["liste"],
                "location": "string",
                "match_all_skills": boolean,
                "match_threshold": float (0.0-1.0),
                "limit": int (min 1, max 100, default 20)
            }
        }
        
        Si l'utilisateur discute simplement ou pose une question non liée à la recherche de candidats, répondez en JSON :
        {
            "is_search": false,
            "reply": "Votre réponse utile ici (en français)."
        }
        
        La sortie DOIT être uniquement un JSON valide.
        z

Prompt Utilisateur: z```json z```r#   r$   r"      d   zGemini Error: uH   Désolé, j'ai rencontré une erreur lors de l'analyse de votre demande.)r   r	   lowerr   generate_contenttextreplacestripjsonloadsgetint
ValueError	TypeError	Exceptionprint)	r   r   system_instructionresponsecontentdatar$   	limit_vales	            r   analyze_promptzGeminiService.analyze_prompt   s    &&(*A*AEV*VFLLN*f.F+Y_YeYeYgJgkuy  zF  zF  zH  lH  LU  Y_  Ye  Ye  Yg  Lg!%#+Y"701$,!#	!  #(2yzz>	zz226H5IIabhai3jkHmm++Ir:BB5"MSSUG::g&D xx$t);
+ h&0$'(9$:	$q=01HW- K '_03HW- K4K '	2 0-/'* K0  	N1#&'"c 	s   BFBE% "E
 :E% ;F<
E
 E% FE% 	F
E"E%  F!E""E% %	F.F FFFFN)__name__
__module____qualname__r   strdictr<    r   r   r   r      s    F
J3 J4 Jr   r   )
google.generativeaigenerativeair
   app.core.configr   r.   app.search.schemasr   r   gemini_servicerB   r   r   <module>rH      s'    # $  3P Pd r   