Ela_Back/MySy_IA/mysy_ia.py

187 lines
6.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import ast
import pymongo
import zeep
from pymongo import MongoClient
import json
from bson import ObjectId
import re
from datetime import datetime
import prj_common as mycommon
import secrets
import inspect
import sys, os
import csv
import pandas as pd
from pymongo import ReturnDocument
from math import isnan
import GlobalVariable as MYSY_GV
import ela_index_bdd_classes as eibdd
import email_mgt as email
from validate_email import validate_email
import jinja2
from openai import OpenAI
#openai.api_key = MYSY_GV.OPENAI_KEY
client = OpenAI(
# Defaults to os.environ.get("OPENAI_API_KEY")
api_key=MYSY_GV.OPENAI_KEY,
)
GPT_MODEL = "gpt-4-1106-preview" #"gpt-3.5-turbo-1106"
def mysy_openai_improve_text(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'action', 'text_input' ]
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'action', 'text_input', ]
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ")
return False, " Les informations fournies sont incorrectes"
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
normalised_text = str(diction['text_input']).replace('"', "'")
requestion_response = {}
requestion_response['question'] = "Améliorer le texte : '" +str(normalised_text)+"' "
#while (1):
# a=1
#prompt = f"Améliorer : 'Notre objectif est également de développer des solutions de proximité qui permettront à chacun de nos clients dêtre unique, de se distinguer. Cette approche personnalisée leur permettra de disposer dune solution adaptée à leur besoin.'"
messages = [{"role": "user", "content": requestion_response['question']}]
response = client.chat.completions.create(
model=GPT_MODEL,
messages=messages,
temperature=0
)
response_message = response.choices[0].message.content
requestion_response['reponse'] = str(response.choices[0].message.content)
requestion_response['refusal_status'] = str(response.choices[0].message.refusal)
"""
requestion_response['reponse'] = "reponseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
requestion_response['refusal_status'] = "None"
"""
RetObject = []
RetObject.append(mycommon.JSONEncoder().encode(requestion_response))
#print(requestion_response)
return True, RetObject
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, " Impossible d'exécuter la fonction : 'mysy_openai_improve_text' "
def mysy_openai_summarize_text(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'action', 'text_input' ]
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'action', 'text_input', ]
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans la liste des arguments ")
return False, " Les informations fournies sont incorrectes"
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
normalised_text = str(diction['text_input']).replace('"', "'")
requestion_response = {}
requestion_response['question'] = "Résumer le texte : '" +str(normalised_text)+"' "
#prompt = f"Améliorer : 'Notre objectif est également de développer des solutions de proximité qui permettront à chacun de nos clients dêtre unique, de se distinguer. Cette approche personnalisée leur permettra de disposer dune solution adaptée à leur besoin.'"
messages = [{"role": "user", "content": requestion_response['question']}]
response = client.chat.completions.create(
model=GPT_MODEL,
messages=messages,
temperature=0
)
response_message = response.choices[0].message.content
requestion_response['reponse'] = str(response.choices[0].message.content)
requestion_response['refusal_status'] = str(response.choices[0].message.refusal)
RetObject = []
RetObject.append(mycommon.JSONEncoder().encode(requestion_response))
print(requestion_response)
return True, RetObject
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, " Impossible d'exécuter la fonction : 'mysy_openai_improve_text' "