devopsmarc commited on
Commit
fb9ca50
·
1 Parent(s): d417871

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +105 -0
app.py ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ os.environ["OPENAI_API_KEY"] = "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"
3
+
4
+
5
+ import openai
6
+ import gradio as gr
7
+ from PyPDF2 import PdfReader
8
+ from math import *
9
+ from dotenv import load_dotenv, find_dotenv
10
+
11
+ _ = load_dotenv(find_dotenv())
12
+
13
+ openai.api_key = os.getenv('OPENAI_API_KEY')
14
+
15
+ def get_text_from_file(file):
16
+
17
+ reader = PdfReader(file)
18
+
19
+ pages = reader.pages
20
+
21
+ document=""
22
+ for page in pages:
23
+ document = document+page.extract_text()
24
+
25
+ return document
26
+
27
+ def get_prompt_1_shot(document):
28
+
29
+ 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.
30
+ Document : """+ document +"""
31
+
32
+ Voici un exemple de résultat attendu :
33
+
34
+ 1. Programmeur .Net :
35
+ a. Compétences :
36
+ - Maitrise de la programmation .Net
37
+ - Maitrise de HTLM
38
+ - Maitrise de CSS ou Bootstrap
39
+ - Expérience en JQuery
40
+ - Expérience en Java Script
41
+ - Expérience en Visual Studio 2015 ou une version ultérieure
42
+ - Expérience en SQL Server 2008 ou une version ultérieure
43
+ - Expérience en SQL Server Reporting Services 2008 ou une version ultérieure
44
+ - Expérience en Entity Framework
45
+ b. Exigences :
46
+ - Détenir un diplôme d'études collégiales en informatique.
47
+ - Posséder quatre (4) années d'expérience en développement Web.NET
48
+ - Avoir participé à deux (2) mandats dans lesquelles ont été appliqués les principes de la méthodologie de réalisation Agile.
49
+ - Posséder trois (3) années d'expérience avec chacun des outils suivants :
50
+ c. Responsabilités :
51
+ - Conseiller les architectes, les analystes et le chargé de projet dans les différentes phases d'analyse des systèmes
52
+ - Participer à l’élaboration des solutions
53
+ - Réaliser toute documentation pertinente, propre à son domaine d'expertise, selon les normes et standards du Ministère
54
+ - Participer à la validation de certains livrables d'architecture détaillée et d’analyse si requis
55
+ - Effectuer le développement nécessaire pour l'adaptation des modules identifiés par les architectes et/ou analystes
56
+ - Participer à l’analyse des problèmes de production et à leur résolution
57
+ - Programmer et effectuer les essais unitaires
58
+
59
+ """
60
+
61
+
62
+ return prompt
63
+
64
+ def get_prompt(file, text) :
65
+ document = get_text_from_file(file)
66
+ prompt = text+" "+document
67
+ return prompt
68
+
69
+ def get_response(prompt):
70
+ response = openai.ChatCompletion.create(
71
+ model="gpt-3.5-turbo-16k",
72
+ temperature = 0.8,
73
+ messages=[
74
+ {
75
+ "role": "system",
76
+ "content": "You are a helpful assistant."
77
+ },
78
+ {
79
+ "role": "user",
80
+ "content": prompt
81
+ }
82
+ ]
83
+ )
84
+ return response.choices[0].message['content']
85
+
86
+ def extract(file, prompt_text) :
87
+ prompt = get_prompt(file.name, prompt_text)
88
+ return get_response(prompt)
89
+
90
+ gr.close_all()
91
+ gr.close_all()
92
+ demo = gr.Interface(
93
+ fn=extract,
94
+ inputs=[
95
+ gr.components.File(label="Importez votre document en format PDF ici"),
96
+ gr.components.Textbox(label="Prompt Text")
97
+ ],
98
+ outputs=gr.components.Textbox(label="Voici le résultat"),
99
+ title="Téléchargement de CV\n(version français)",
100
+ description="Outil d’importation de CV",
101
+ examples=[
102
+ [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."]
103
+ ]
104
+ )
105
+ demo.launch(share=True), #debug=True)