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)