wip-space1-fr / app.py
devopsmarc's picture
Update app.py
b0009b6
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)