o
    h%                  
   @   s  d dl mZ d dlmZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZd dlmZ d dlmZ d dlZd dlZd dlZd dlZdZe Zd dl m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dlm'Z'm(Z( d dl)Z)e*ddd Z+G dd deZ,e-dededededfde.de.de.de/fddZ0e-dedfde.fddZ1e-d edededfd!e.d"e.d#e.fd$d%Z2e-d&ededededfd!e.d"e.d'e.d#e.fd(d)Z3dS )*    )HTTPException)NamedTemporaryFileN)List)FastAPI
UploadFileFileFormBody)JSONResponse)Document)RecursiveCharacterTextSplitter)	BaseModel)OllamaEmbeddings)BytesIO8gsk_CEh3itIpUAkEkEKsUDqVWGdyb3FYoTjqmXNTBHOSxJFK3obGTzXZ)generate_skill_tree&generate_skill_tree_new_skills_with_dbdescription_skill)map_skills_to_jobProfile"map_skills_to_jobProfile_non_empty)AnyDictz/helloEdurigoSkillMapTestingc                   C   s   ddiS )Nmessagez0Hello from edurigo_ai skill map testing env 8401 r   r   r   R/var/www/eduai.edurigo.com/generate_skill_and_map/production/skill_map_fast_api.pyhello   s   r   c                   @   s:   e Zd ZU eed< dZeed< dZeed< dZeed< dS )	SkillTreeRequestprompt_textr   groq_api_keyzmixtral-8x7b-32768
model_namer   temperatureN)	__name__
__module____qualname__str__annotations__r   r   r    intr   r   r   r   r   "   s
   
 r   z/generate-skill-tree.industryprompt
skill_dataGPUc                    s@   |dkrt | ||\}}||dS t| |||\}}||dS )NEmpty
skill_treetoken_count)r   r   )r'   r(   r)   r*   r-   r.   r   r   r   generate_skill_tree_endpoint(   s   

r/   z/skill-descriptionc              
      sP   zt | td\}}||dW S  ty' } zdt|iW  Y d }~S d }~ww )N)r'   r   r,   error)r   GROQ_API_KEY	Exceptionr$   )r'   r-   r.   er   r   r   description_skill_endpoint5   s   
r4   z/map-jobProfile-skillskillsjobProfilesnameDescriptionc              
      s|   zt |}W n t jy   ddi Y S w zt| |d\}}||dW S  ty= } zdt|iW  Y d }~S d }~ww )Nr0   'Invalid JSON format for nameDescription)	skills_dbjob_profiles_datar,   )jsonloadsJSONDecodeErrorr   r2   r$   )r5   r6   r7   r:   r-   r.   r3   r   r   r   #map_skills_to_designations_endpointB   s    
r>   z/map-jobProfiles-skill-testmappedc              
      s~   zt |}W n t jy   ddi Y S w zt| ||d\}}||dW S  ty> } zdt|iW  Y d }~S d }~ww )Nr0   r8   )r9   mapped_skillsr:   r,   )r;   r<   r=   r   r2   r$   )r5   r6   r?   r7   r:   r-   r.   r3   r   r   r   -map_skills_to_designations_non_empty_endpointW   s"   
rA   )4http.clientr   tempfiler   	tracebacktypingr   fastapir   r   r   r   r	   fastapi.responsesr
   langchain.docstore.documentr   langchain.text_splitterr   pydanticr   langchain_community.embeddingsr   uvicornior   
subprocessosasynciorequestsr1   app	skill_mapr   r   r   jobProfile_mapr   r   r   r   r;   getr   r   postr$   r&   r/   r4   r>   rA   r   r   r   r   <module>   sh    
6