- Add functionality to add a default dictionary for configuration fields
- Correct entitlement processing - Remove get_template functionality from ModelVariables, define it directly with LLM model definition in configuration file.
This commit is contained in:
@@ -28,69 +28,65 @@ def persist_business_events(log_entries):
|
||||
Args:
|
||||
log_entries: List of log event dictionaries to persist
|
||||
"""
|
||||
event_logs = []
|
||||
for entry in log_entries:
|
||||
event_log = BusinessEventLog(
|
||||
timestamp=entry.pop('timestamp'),
|
||||
event_type=entry.pop('event_type'),
|
||||
tenant_id=entry.pop('tenant_id'),
|
||||
trace_id=entry.pop('trace_id'),
|
||||
span_id=entry.pop('span_id', None),
|
||||
span_name=entry.pop('span_name', None),
|
||||
parent_span_id=entry.pop('parent_span_id', None),
|
||||
document_version_id=entry.pop('document_version_id', None),
|
||||
document_version_file_size=entry.pop('document_version_file_size', None),
|
||||
specialist_id=entry.pop('specialist_id', None),
|
||||
specialist_type=entry.pop('specialist_type', None),
|
||||
specialist_type_version=entry.pop('specialist_type_version', None),
|
||||
chat_session_id=entry.pop('chat_session_id', None),
|
||||
interaction_id=entry.pop('interaction_id', None),
|
||||
environment=entry.pop('environment', None),
|
||||
llm_metrics_total_tokens=entry.pop('llm_metrics_total_tokens', None),
|
||||
llm_metrics_prompt_tokens=entry.pop('llm_metrics_prompt_tokens', None),
|
||||
llm_metrics_completion_tokens=entry.pop('llm_metrics_completion_tokens', None),
|
||||
llm_metrics_nr_of_pages=entry.pop('llm_metrics_nr_of_pages', None),
|
||||
llm_metrics_total_time=entry.pop('llm_metrics_total_time', None),
|
||||
llm_metrics_call_count=entry.pop('llm_metrics_call_count', None),
|
||||
llm_interaction_type=entry.pop('llm_interaction_type', None),
|
||||
message=entry.pop('message', None)
|
||||
)
|
||||
db.session.add(event_log)
|
||||
event_logs.append(event_log)
|
||||
|
||||
# Perform a bulk insert of all entries
|
||||
db.session.commit()
|
||||
current_app.logger.info(f"Successfully persisted {len(event_logs)} business event logs")
|
||||
|
||||
tenant_id = event_logs[0].tenant_id
|
||||
try:
|
||||
event_logs = []
|
||||
for entry in log_entries:
|
||||
event_log = BusinessEventLog(
|
||||
timestamp=entry.pop('timestamp'),
|
||||
event_type=entry.pop('event_type'),
|
||||
tenant_id=entry.pop('tenant_id'),
|
||||
trace_id=entry.pop('trace_id'),
|
||||
span_id=entry.pop('span_id', None),
|
||||
span_name=entry.pop('span_name', None),
|
||||
parent_span_id=entry.pop('parent_span_id', None),
|
||||
document_version_id=entry.pop('document_version_id', None),
|
||||
document_version_file_size=entry.pop('document_version_file_size', None),
|
||||
specialist_id=entry.pop('specialist_id', None),
|
||||
specialist_type=entry.pop('specialist_type', None),
|
||||
specialist_type_version=entry.pop('specialist_type_version', None),
|
||||
chat_session_id=entry.pop('chat_session_id', None),
|
||||
interaction_id=entry.pop('interaction_id', None),
|
||||
environment=entry.pop('environment', None),
|
||||
llm_metrics_total_tokens=entry.pop('llm_metrics_total_tokens', None),
|
||||
llm_metrics_prompt_tokens=entry.pop('llm_metrics_prompt_tokens', None),
|
||||
llm_metrics_completion_tokens=entry.pop('llm_metrics_completion_tokens', None),
|
||||
llm_metrics_nr_of_pages=entry.pop('llm_metrics_nr_of_pages', None),
|
||||
llm_metrics_total_time=entry.pop('llm_metrics_total_time', None),
|
||||
llm_metrics_call_count=entry.pop('llm_metrics_call_count', None),
|
||||
llm_interaction_type=entry.pop('llm_interaction_type', None),
|
||||
message=entry.pop('message', None)
|
||||
)
|
||||
event_logs.append(event_log)
|
||||
license_period = LicensePeriodServices.find_current_license_period_for_usage(tenant_id)
|
||||
except EveAIException as e:
|
||||
current_app.logger.error(f"Failed to find license period for tenant {tenant_id}: {str(e)}")
|
||||
raise e
|
||||
|
||||
# Perform a bulk insert of all entries
|
||||
db.session.bulk_save_objects(event_logs)
|
||||
db.session.commit()
|
||||
current_app.logger.info(f"Successfully persisted {len(event_logs)} business event logs")
|
||||
|
||||
tenant_id = event_logs[0].tenant_id
|
||||
lic_usage = None
|
||||
if not license_period.license_usage:
|
||||
lic_usage = LicenseUsage(
|
||||
tenant_id=tenant_id,
|
||||
license_period_id=license_period.id,
|
||||
)
|
||||
try:
|
||||
license_period = LicensePeriodServices.find_current_license_period_for_usage(tenant_id)
|
||||
except EveAIException as e:
|
||||
current_app.logger.error(f"Failed to find license period for tenant {tenant_id}: {str(e)}")
|
||||
return
|
||||
lic_usage = None
|
||||
if not license_period.license_usage:
|
||||
lic_usage = LicenseUsage(
|
||||
tenant_id=tenant_id,
|
||||
license_period_id=license_period.id,
|
||||
)
|
||||
try:
|
||||
db.session.add(lic_usage)
|
||||
db.session.commit()
|
||||
current_app.logger.info(f"Created new license usage for tenant {tenant_id}")
|
||||
except SQLAlchemyError as e:
|
||||
db.session.rollback()
|
||||
current_app.logger.error(f"Error trying to create license usage for tenant {tenant_id}: {str(e)}")
|
||||
return
|
||||
else:
|
||||
lic_usage = license_period.license_usage
|
||||
db.session.add(lic_usage)
|
||||
db.session.commit()
|
||||
current_app.logger.info(f"Created new license usage for tenant {tenant_id}")
|
||||
except SQLAlchemyError as e:
|
||||
db.session.rollback()
|
||||
current_app.logger.error(f"Error trying to create license usage for tenant {tenant_id}: {str(e)}")
|
||||
raise e
|
||||
else:
|
||||
lic_usage = license_period.license_usage
|
||||
|
||||
process_logs_for_license_usage(tenant_id, lic_usage, event_logs)
|
||||
|
||||
except Exception as e:
|
||||
current_app.logger.error(f"Failed to persist business event logs: {e}")
|
||||
db.session.rollback()
|
||||
process_logs_for_license_usage(tenant_id, lic_usage, event_logs)
|
||||
|
||||
|
||||
def process_logs_for_license_usage(tenant_id, license_usage, logs):
|
||||
@@ -103,12 +99,16 @@ def process_logs_for_license_usage(tenant_id, license_usage, logs):
|
||||
interaction_completion_tokens_used = 0
|
||||
interaction_total_tokens_used = 0
|
||||
|
||||
current_app.logger.info(f"Processing {len(logs)} logs for tenant {tenant_id}")
|
||||
|
||||
recalculate_storage = False
|
||||
|
||||
# Process each log
|
||||
for log in logs:
|
||||
# Case for 'Create Embeddings' event
|
||||
current_app.logger.debug(f"Processing log for tenant {tenant_id}: {log.id} - {log.event_type} - {log.message}")
|
||||
if log.event_type == 'Create Embeddings':
|
||||
current_app.logger.debug(f"In Create Embeddings")
|
||||
recalculate_storage = True
|
||||
if log.message == 'Starting Trace for Create Embeddings':
|
||||
embedding_mb_used += log.document_version_file_size
|
||||
@@ -138,6 +138,13 @@ def process_logs_for_license_usage(tenant_id, license_usage, logs):
|
||||
|
||||
# Mark the log as processed by setting the license_usage_id
|
||||
log.license_usage_id = license_usage.id
|
||||
db.session.add(log)
|
||||
|
||||
current_app.logger.debug(f"Finished processing {len(logs)} logs for tenant {tenant_id}")
|
||||
current_app.logger.debug(f"Embedding MB Used: {embedding_mb_used}")
|
||||
current_app.logger.debug(f"Embedding Prompt Tokens Used: {embedding_prompt_tokens_used}")
|
||||
current_app.logger.debug(f"Embedding Completion Tokens Used: {embedding_completion_tokens_used}")
|
||||
current_app.logger.debug(f"Embedding Total Tokens Used: {embedding_total_tokens_used}")
|
||||
|
||||
# Update the LicenseUsage record with the accumulated values
|
||||
license_usage.embedding_mb_used += embedding_mb_used
|
||||
@@ -154,8 +161,6 @@ def process_logs_for_license_usage(tenant_id, license_usage, logs):
|
||||
# Commit the updates to the LicenseUsage and log records
|
||||
try:
|
||||
db.session.add(license_usage)
|
||||
for log in logs:
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
except SQLAlchemyError as e:
|
||||
db.session.rollback()
|
||||
|
||||
Reference in New Issue
Block a user