- Replace the system prompt of the prompt optimization model with a built-in prompt. - Remove system prompt entries from the database. - Remove the API endpoint for managing system prompt configuration.
125 lines
4.5 KiB
Python
125 lines
4.5 KiB
Python
import uuid
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.logging_config import get_db_logger
|
|
from app.models.prompt_optimizer_model import (
|
|
PromptOptimizerSession, PromptOptimizerSessionHistory, RoleType
|
|
)
|
|
|
|
db_logger = get_db_logger()
|
|
|
|
|
|
class PromptOptimizerSessionRepository:
|
|
"""Repository for managing prompt optimization sessions and session history."""
|
|
|
|
def __init__(self, db: Session):
|
|
self.db = db
|
|
|
|
def create_session(
|
|
self,
|
|
tenant_id: uuid.UUID,
|
|
user_id: uuid.UUID
|
|
) -> PromptOptimizerSession:
|
|
"""
|
|
Create a new prompt optimization session for a user and app.
|
|
|
|
Args:
|
|
tenant_id (uuid.UUID): The unique identifier of the tenant.
|
|
user_id (uuid.UUID): The unique identifier of the user.
|
|
|
|
Returns:
|
|
PromptOptimizerSession: The newly created session object.
|
|
"""
|
|
db_logger.debug(f"Create prompt optimization session: tenant_id={tenant_id}, user_id={user_id}")
|
|
try:
|
|
session = PromptOptimizerSession(
|
|
tenant_id=tenant_id,
|
|
user_id=user_id,
|
|
)
|
|
self.db.add(session)
|
|
self.db.commit()
|
|
self.db.refresh(session)
|
|
db_logger.debug(f"Prompt optimization session created: ID:{session.id}")
|
|
return session
|
|
except Exception as e:
|
|
db_logger.error(f"Error creating prompt optimization session: user_id={user_id} - {str(e)}")
|
|
raise
|
|
|
|
def get_session_history(
|
|
self,
|
|
session_id: uuid.UUID,
|
|
user_id: uuid.UUID
|
|
) -> list[type[PromptOptimizerSessionHistory]]:
|
|
"""
|
|
Retrieve all message history of a specific prompt optimization session.
|
|
|
|
Args:
|
|
session_id (uuid.UUID): The unique identifier of the session.
|
|
user_id (uuid.UUID): The unique identifier of the user.
|
|
|
|
Returns:
|
|
list[PromptOptimizerSessionHistory]: A list of session history records
|
|
ordered by creation time ascending.
|
|
"""
|
|
db_logger.debug(f"Get prompt optimization session history: "
|
|
f"user_id={user_id}, session_id={session_id}")
|
|
|
|
try:
|
|
# First get the internal session ID from the session list table
|
|
session = self.db.query(PromptOptimizerSession).filter(
|
|
PromptOptimizerSession.id == session_id,
|
|
PromptOptimizerSession.user_id == user_id
|
|
).first()
|
|
|
|
if not session:
|
|
return []
|
|
|
|
history = self.db.query(PromptOptimizerSessionHistory).filter(
|
|
PromptOptimizerSessionHistory.session_id == session.id,
|
|
PromptOptimizerSessionHistory.user_id == user_id
|
|
).order_by(PromptOptimizerSessionHistory.created_at.asc()).all()
|
|
return history
|
|
except Exception as e:
|
|
db_logger.error(f"Error retrieving prompt optimization session history: session_id={session_id} - {str(e)}")
|
|
raise
|
|
|
|
def create_message(
|
|
self,
|
|
tenant_id: uuid.UUID,
|
|
session_id: uuid.UUID,
|
|
user_id: uuid.UUID,
|
|
role: RoleType,
|
|
content: str,
|
|
) -> PromptOptimizerSessionHistory:
|
|
"""
|
|
Create a new message in the session history.
|
|
|
|
This method is a placeholder for future implementation.
|
|
"""
|
|
try:
|
|
# Get the session to ensure it exists and belongs to the user
|
|
session = self.db.query(PromptOptimizerSession).filter(
|
|
PromptOptimizerSession.id == session_id,
|
|
PromptOptimizerSession.user_id == user_id,
|
|
PromptOptimizerSession.tenant_id == tenant_id
|
|
).first()
|
|
|
|
if not session:
|
|
db_logger.error(f"Session {session_id} not found for user {user_id}")
|
|
raise ValueError(f"Session {session_id} not found for user {user_id}")
|
|
|
|
message = PromptOptimizerSessionHistory(
|
|
tenant_id=tenant_id,
|
|
session_id=session.id,
|
|
user_id=user_id,
|
|
role=role.value,
|
|
content=content,
|
|
)
|
|
self.db.add(message)
|
|
self.db.commit()
|
|
return message
|
|
except Exception as e:
|
|
db_logger.error(f"Error creating prompt optimization session history: session_id={session_id} - {str(e)}")
|
|
raise
|