27/11/2024 : 12h30
parent
9f374361a0
commit
4fcd6219ff
|
@ -2,9 +2,11 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="22/11/2024 - 18h">
|
||||
<change afterPath="$PROJECT_DIR$/MySy_IA/mysy_ia.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/tools_cherif/mysy_openai_file.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/GlobalVariable.py" beforeDir="false" afterPath="$PROJECT_DIR$/GlobalVariable.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/articles_avis.py" beforeDir="false" afterPath="$PROJECT_DIR$/articles_avis.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
|
@ -26,6 +26,7 @@ if (MYSY_ENV == "PROD"):
|
|||
CLIENT_URL_BASE = 'https://www.mysy-training.com/'
|
||||
MYSY_DEBUG_LEVEL = 0
|
||||
|
||||
|
||||
# Domaine pour le catalogue public
|
||||
MYSY_PUBLIC_CATALOG_DOMAIN = 'mysy-hosting.online'
|
||||
|
||||
|
@ -771,4 +772,10 @@ EMAIL_DEST_RELATED_COLLECTION = ['inscription', 'apprenant', 'contact', 'nointer
|
|||
EMAIL_MAX_DESTINAIRE = 30
|
||||
EMAIL_MAX_CC = 10
|
||||
EMAIL_MAX_BCC = 10
|
||||
EMAIL_MAX_PJ = 5
|
||||
EMAIL_MAX_PJ = 5
|
||||
|
||||
|
||||
"""
|
||||
La clé API de OpenAI
|
||||
"""
|
||||
OPENAI_KEY = "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"
|
||||
|
|
4887
Log/log_file.log
4887
Log/log_file.log
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,186 @@
|
|||
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 liste ")
|
||||
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 d’une 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 liste ")
|
||||
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 d’une 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' "
|
||||
|
||||
|
54
main.py
54
main.py
|
@ -98,6 +98,9 @@ import Dashbord_queries.BPF as BPF
|
|||
import type_cours as type_cours
|
||||
|
||||
import tools_cherif.freemobile_send_sms as freemobile_send_sms
|
||||
import tools_cherif.mysy_openai_file as mysy_openai_file
|
||||
|
||||
import MySy_IA.mysy_ia as mysy_ia
|
||||
|
||||
app = Flask(__name__)
|
||||
cors = CORS(app, resources={r"/foo": {"origins": "*"}})
|
||||
|
@ -11316,6 +11319,57 @@ def send_freemobile_sms():
|
|||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
API test mysy Open AI
|
||||
"""
|
||||
@app.route('/myclass/api/mysy_openai/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def mysy_openai():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||
print(" ### mysy_openai payload zzzz = ")
|
||||
status, retval = mysy_openai_file.mysy_openai(payload)
|
||||
return jsonify(status=status, message=retval)
|
||||
|
||||
|
||||
@app.route('/myclass/api/mysy_openai_assistant/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def mysy_openai_assistant():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||
print(" ### mysy_openai_assistant payload zzzz = ")
|
||||
status, retval = mysy_openai_file.mysy_openai_assistant(payload)
|
||||
return jsonify(status=status, message=retval)
|
||||
|
||||
|
||||
"""
|
||||
API IA : permet d'améliorer un texte avec l'aide de l'IA
|
||||
"""
|
||||
@app.route('/myclass/api/mysy_openai_improve_text/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def mysy_openai_improve_text():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||
print(" ### mysy_openai_improve_text payload =(text long cherif) ", )
|
||||
status, retval = mysy_ia.mysy_openai_improve_text(payload)
|
||||
return jsonify(status=status, message=retval)
|
||||
|
||||
|
||||
"""
|
||||
API IA : permet de resumer un texte avec l'aide de l'IA
|
||||
"""
|
||||
@app.route('/myclass/api/mysy_openai_summarize_text/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def mysy_openai_summarize_text():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||
print(" ### mysy_openai_summarize_text payload = (text long cherif) ")
|
||||
status, retval = mysy_ia.mysy_openai_summarize_text(payload)
|
||||
return jsonify(status=status, message=retval)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(" debut api")
|
||||
context = SSL.Context(SSL.SSLv23_METHOD)
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
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(diction):
|
||||
try:
|
||||
|
||||
requestion_response = {}
|
||||
requestion_response['question'] = "Ecris moi une conclusion d'un article qui parle de l'utilisation de l'API ChatGPT"
|
||||
|
||||
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 d’une solution adaptée à leur besoin.'"
|
||||
messages = [{"role": "user", "content": prompt}]
|
||||
response = client.chat.completions.create(
|
||||
model=GPT_MODEL,
|
||||
messages=messages,
|
||||
temperature=0
|
||||
)
|
||||
response_message = response.choices[0].message.content
|
||||
|
||||
#json_formatted_str = json.dumps(response, indent=2)
|
||||
|
||||
refusal_status = response.choices[0].message.refusal
|
||||
|
||||
print(" #refusal_status = ", refusal_status)
|
||||
|
||||
|
||||
print(" ### AFFICHAGE GPT RESPONSE ")
|
||||
print(response.choices[0])
|
||||
|
||||
|
||||
|
||||
print(response_message)
|
||||
|
||||
requestion_response['reponse'] = str(response.choices[0].message.content)
|
||||
|
||||
"""
|
||||
prompt = f"Ecris moi une conclusion d'un article qui parle de l'utilisation de l'API ChatGPT"
|
||||
completion = client.chat.completions.create(
|
||||
model="gpt-3.5-turbo",
|
||||
messages=[{"role": "user", "content": prompt}]
|
||||
)
|
||||
|
||||
print(completion['choices'][0]['message']['content'])
|
||||
"""
|
||||
|
||||
|
||||
|
||||
return True,requestion_response
|
||||
|
||||
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 de traiter : mysy_openai"
|
||||
|
||||
|
||||
def mysy_openai_assistant(diction):
|
||||
try:
|
||||
|
||||
requestion_response = {}
|
||||
my_assistant = client.beta.assistants.create(
|
||||
instructions="You are a personal math tutor. When asked a question, write and run Python code to answer the question.",
|
||||
name="Math Tutor",
|
||||
tools=[{"type": "code_interpreter"}],
|
||||
model="gpt-4o",
|
||||
)
|
||||
print(my_assistant)
|
||||
|
||||
|
||||
return True, my_assistant
|
||||
|
||||
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 de traiter : mysy_openai_assistant"
|
||||
|
||||
|
Loading…
Reference in New Issue