83 lines
4.2 KiB
Python
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()
|
|
|
|
|
|
|