- adding usage to specialist execution
- Correcting implementation of usage - Removed some obsolete debug statements
This commit is contained in:
@@ -30,6 +30,8 @@ def update_usages():
|
||||
error_list = []
|
||||
|
||||
for tenant_id in tenant_ids:
|
||||
if tenant_id == 1:
|
||||
continue
|
||||
try:
|
||||
Database(tenant_id).switch_schema()
|
||||
check_and_create_license_usage_for_tenant(tenant_id)
|
||||
@@ -65,6 +67,50 @@ def update_usages():
|
||||
return "Update Usages taks completed successfully"
|
||||
|
||||
|
||||
@current_celery.task(name='persist_business_events', queue='entitlements')
|
||||
def persist_business_events(log_entries):
|
||||
"""
|
||||
Persist multiple business event logs to the database in a single transaction
|
||||
|
||||
Args:
|
||||
log_entries: List of log event dictionaries to persist
|
||||
"""
|
||||
try:
|
||||
db_entries = []
|
||||
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),
|
||||
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_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_entries.append(event_log)
|
||||
|
||||
# Perform a bulk insert of all entries
|
||||
db.session.bulk_save_objects(db_entries)
|
||||
db.session.commit()
|
||||
current_app.logger.info(f"Successfully persisted {len(db_entries)} business event logs")
|
||||
|
||||
except Exception as e:
|
||||
current_app.logger.error(f"Failed to persist business event logs: {e}")
|
||||
db.session.rollback()
|
||||
|
||||
|
||||
def get_all_tenant_ids():
|
||||
tenant_ids = db.session.query(Tenant.id).all()
|
||||
return [tenant_id[0] for tenant_id in tenant_ids] # Extract tenant_id from tuples
|
||||
@@ -193,6 +239,18 @@ def process_logs_for_license_usage(tenant_id, license_usage_id, logs):
|
||||
interaction_completion_tokens_used += log.llm_metrics_completion_tokens
|
||||
interaction_total_tokens_used += log.llm_metrics_total_tokens
|
||||
|
||||
# Case for 'Specialist Execution' event
|
||||
elif log.event_type == 'Execute Specialist':
|
||||
if log.message == 'Final LLM Metrics':
|
||||
if log.span_name == 'Specialist Retrieval': # This is embedding
|
||||
embedding_prompt_tokens_used += log.llm_metrics_prompt_tokens
|
||||
embedding_completion_tokens_used += log.llm_metrics_completion_tokens
|
||||
embedding_total_tokens_used += log.llm_metrics_total_tokens
|
||||
else: # This is an interaction
|
||||
interaction_prompt_tokens_used += log.llm_metrics_prompt_tokens
|
||||
interaction_completion_tokens_used += log.llm_metrics_completion_tokens
|
||||
interaction_total_tokens_used += log.llm_metrics_total_tokens
|
||||
|
||||
# Mark the log as processed by setting the license_usage_id
|
||||
log.license_usage_id = license_usage_id
|
||||
|
||||
|
||||
Reference in New Issue
Block a user