Spaces:
Sleeping
Sleeping
import os | |
os.environ["OPENAI_API_KEY"] = "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" | |
import openai | |
import gradio as gr | |
from PyPDF2 import PdfReader | |
from math import * | |
from dotenv import load_dotenv, find_dotenv | |
_ = load_dotenv(find_dotenv()) | |
openai.api_key = os.getenv('OPENAI_API_KEY') | |
def get_text_from_file(file): | |
reader = PdfReader(file) | |
pages = reader.pages | |
document="" | |
for page in pages: | |
document = document+page.extract_text() | |
return document | |
def get_prompt_1_shot(document): | |
prompt = """ Extraire du document suivant une liste hiérarchique des rôles professionnels avec les compétences, les exigences et les responsabilités qui y sont associées. | |
Document : """+ document +""" | |
Voici un exemple de résultat attendu : | |
1. Programmeur .Net : | |
a. Compétences : | |
- Maitrise de la programmation .Net | |
- Maitrise de HTLM | |
- Maitrise de CSS ou Bootstrap | |
- Expérience en JQuery | |
- Expérience en Java Script | |
- Expérience en Visual Studio 2015 ou une version ultérieure | |
- Expérience en SQL Server 2008 ou une version ultérieure | |
- Expérience en SQL Server Reporting Services 2008 ou une version ultérieure | |
- Expérience en Entity Framework | |
b. Exigences : | |
- Détenir un diplôme d'études collégiales en informatique. | |
- Posséder quatre (4) années d'expérience en développement Web.NET | |
- Avoir participé à deux (2) mandats dans lesquelles ont été appliqués les principes de la méthodologie de réalisation Agile. | |
- Posséder trois (3) années d'expérience avec chacun des outils suivants : | |
c. Responsabilités : | |
- Conseiller les architectes, les analystes et le chargé de projet dans les différentes phases d'analyse des systèmes | |
- Participer à l’élaboration des solutions | |
- Réaliser toute documentation pertinente, propre à son domaine d'expertise, selon les normes et standards du Ministère | |
- Participer à la validation de certains livrables d'architecture détaillée et d’analyse si requis | |
- Effectuer le développement nécessaire pour l'adaptation des modules identifiés par les architectes et/ou analystes | |
- Participer à l’analyse des problèmes de production et à leur résolution | |
- Programmer et effectuer les essais unitaires | |
""" | |
return prompt | |
def get_prompt(file, text) : | |
document = get_text_from_file(file) | |
prompt = text+" "+document | |
return prompt | |
def get_response(prompt): | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo-16k", | |
temperature = 0.8, | |
messages=[ | |
{ | |
"role": "system", | |
"content": "You are a helpful assistant." | |
}, | |
{ | |
"role": "user", | |
"content": prompt | |
} | |
] | |
) | |
return response.choices[0].message['content'] | |
def extract(file, prompt_text): | |
if file is None: | |
return "Please upload a file." | |
prompt = get_prompt(file.name, prompt_text) | |
return get_response(prompt) | |
gr.close_all() | |
demo = gr.Interface( | |
fn=extract, | |
inputs=[ | |
gr.components.File(label="Importez votre document en format PDF ici"), | |
gr.components.Textbox(label="Prompt Text") | |
], | |
outputs=gr.components.Textbox(label="Voici le résultat"), | |
title="Téléchargement de CV\n(version français)", | |
description="Outil d’importation de CV", | |
examples=[ | |
[None, "Extraire du document suivant une liste hiérarchique des rôles professionnels avec les compétences, les exigences et les responsabilités qui y sont associées."] | |
] | |
) | |
demo.launch() #debug=True) | |