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()