Akshata-89's picture
Fix project structure
8b7f0fb
from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime, Text, JSON
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime
Base = declarative_base()
class ConversationLog(Base):
__tablename__ = "conversation_logs"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(64), index=True)
query = Column(Text, nullable=False)
response = Column(Text, nullable=False)
category = Column(String(64))
prompt_version = Column(String(32), default="standard")
retry_count = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)
class EvaluationResult(Base):
__tablename__ = "evaluation_results"
id = Column(Integer, primary_key=True, index=True)
conversation_id = Column(Integer, index=True)
session_id = Column(String(64), index=True)
query = Column(Text, nullable=False)
response = Column(Text, nullable=False)
# Code eval
code_eval_result = Column(String(16)) # PASS/FAIL
code_eval_details = Column(Text)
# LLM Judge scores
policy_compliance = Column(Float, default=0.0)
faithfulness = Column(Float, default=0.0)
relevance = Column(Float, default=0.0)
tone = Column(Float, default=0.0)
correctness = Column(Float, default=0.0)
judge_verdict = Column(String(16))
judge_reasoning = Column(Text)
# Hallucination
hallucination_detected = Column(Boolean, default=False)
hallucination_details = Column(Text)
hallucination_severity = Column(String(16), default="none")
# Trust score
trust_score = Column(Float, default=0.0)
final_verdict = Column(String(16)) # PASS/FAIL
# Retry
is_retry = Column(Boolean, default=False)
original_eval_id = Column(Integer, nullable=True)
retry_trust_score = Column(Float, nullable=True)
score_improvement = Column(Float, nullable=True)
# Deployment
deployment_ready = Column(Boolean, default=False)
created_at = Column(DateTime, default=datetime.utcnow)
class FailureLog(Base):
__tablename__ = "failure_logs"
id = Column(Integer, primary_key=True, index=True)
eval_id = Column(Integer, index=True)
session_id = Column(String(64))
query = Column(Text)
response = Column(Text)
primary_failure_reason = Column(Text)
policy_violations = Column(JSON)
hallucinations = Column(JSON)
improvement_suggestions = Column(JSON)
corrected_response = Column(Text)
severity = Column(String(16))
created_at = Column(DateTime, default=datetime.utcnow)
class PromptOptimizationLog(Base):
__tablename__ = "prompt_optimization_logs"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(64))
query = Column(Text)
original_response = Column(Text)
original_trust_score = Column(Float)
optimized_response = Column(Text)
optimized_trust_score = Column(Float)
score_improvement = Column(Float)
prompt_version_used = Column(String(32))
created_at = Column(DateTime, default=datetime.utcnow)