Files
MermsCoreFlask/app/api/services/genaratives.py
T
CHIEFSOFT\ameye ff3ff1c6ba generative data
2025-09-06 11:48:37 -04:00

83 lines
4.2 KiB
Python

from flask import session, jsonify
from app.api.integrations import GenerativeEngineIntegration
from app.utils.logger import logger
from app.api.services.base_service import BaseService
from marshmallow import ValidationError
from app.extensions import db
from app.models import SubscriptionGenerative, GenerativeResults
from app.api.enums import GenerativesList
class GenerativesService(BaseService):
@staticmethod
def process_generatives_list(data):
logger.info("SELECT GENERATIVE")
planed_generate_list = SubscriptionGenerative.get_subscription_generative_list_by_status(0)
if planed_generate_list:
for t in planed_generate_list:
logger.info(f"SELECT GENERATIVE {t}")
practice_type = t.practice
specialization = t.specialization
subscription_uid = t.subscription_uid
product_id = t.product_id
member_id = t.member_id
status = t.status
# logger.info(f"GenerativesService ****** *****: {member_id} {practice_type} {product_id} {subscription_uid}")
SubscriptionGenerative.update_subscription_generative_status(subscription_uid,status+1) # move the status up
GenerativesService.process_generatives_action(member_id, practice_type,specialization,subscription_uid,product_id)
@staticmethod
def process_generatives_action(member_id, practice_type,specialization,subscription_uid,product_id):
try:
logger.info("ENTER GENERATIVE")
generate_list = GenerativesList.get_generative_list()
GenerativeResults.create_generative_result(71, 'A000001', 'about_title',
'35e2d3ba-b5a6-4c1b-b962-05661d55b6f4',
'Expert Neurologist: Brain & Nerve Care')
# with db.session.begin():
for t in generate_list:
prompt_string = str(t["prompt"]).replace("REPLACE_THIS", practice_type).replace("REPLACE_ANOTHER",
specialization)
var_name = t["name"]
logger.info(f"GenerativesService ****** *****: {t['name']} {prompt_string}")
json_response = None
# json_response = GenerativeEngineIntegration.ask_generative(prompt_string)
# INFO - INSERT *****:71 A000001 about_title 35e2d3ba-b5a6-4c1b-b962-05661d55b6f4 Expert Neurologist: Brain & Nerve Care
GenerativeResults.create_generative_result(71, 'A000001', 'about_title',
'35e2d3ba-b5a6-4c1b-b962-05661d55b6f4',
'Expert Neurologist: Brain & Nerve Care')
if json_response is not None:
logger.info(json_response)
# logger.info(json_response["output"])
# logger.info(json_response["output"][0])
# logger.info(json_response["output"][0]["content"][0]["text"])
text_result = json_response["output"][0]["content"][0]["text"]
logger.info(
f"INSERT *****:{member_id} {product_id} {var_name} {subscription_uid} {text_result}")
GenerativeResults.create_generative_result(member_id, product_id, var_name, subscription_uid,
text_result)
except ValidationError as err:
logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}")
db.session.rollback()
# return ResponseHelper.unprocessable_entity(result_description="Validation exception")
except ValueError as err:
logger.error(f"{getattr(err, 'messages', str(err))}")
db.session.rollback()
# return ResponseHelper.error(result_description=str(err))
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
# return ResponseHelper.internal_server_error()