Spaces:
Sleeping
Sleeping
File size: 3,699 Bytes
fb9ca50 1cec090 a2b61a0 fb9ca50 136113a fb9ca50 b0009b6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
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)
|