.
This commit is contained in:
@@ -1,31 +1,8 @@
|
||||
"""
|
||||
Copyright 2025 Google. This software is provided as-is, without warranty or
|
||||
representation for any use or purpose. Your use of it is subject to your
|
||||
agreement with Google.
|
||||
|
||||
Conversation-related data models.
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
from typing import Any, Literal
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
|
||||
class MessageType(str, Enum):
|
||||
"""Message type enumeration."""
|
||||
|
||||
USER = "USER"
|
||||
AGENT = "AGENT"
|
||||
|
||||
|
||||
class ConversationEntryType(str, Enum):
|
||||
"""Conversation entry type enumeration."""
|
||||
|
||||
INICIO = "INICIO"
|
||||
CONVERSACION = "CONVERSACION"
|
||||
LLM = "LLM"
|
||||
|
||||
|
||||
class UsuarioDTO(BaseModel):
|
||||
"""User information."""
|
||||
@@ -102,7 +79,6 @@ class ExternalConvRequestDTO(BaseModel):
|
||||
mensaje: str = Field(..., alias="mensaje")
|
||||
usuario: UsuarioDTO = Field(..., alias="usuario")
|
||||
canal: str = Field(..., alias="canal")
|
||||
tipo: ConversationEntryType = Field(..., alias="tipo")
|
||||
pantalla_contexto: str | None = Field(None, alias="pantallaContexto")
|
||||
|
||||
model_config = {"populate_by_name": True}
|
||||
@@ -123,7 +99,7 @@ class ConversationMessageDTO(BaseModel):
|
||||
class ConversationEntryDTO(BaseModel):
|
||||
"""Single conversation entry."""
|
||||
|
||||
entity: str = Field(..., alias="entity") # "USUARIO", "AGENTE", "SISTEMA", "LLM"
|
||||
entity: Literal['user', 'assistant']
|
||||
type: str = Field(..., alias="type") # "INICIO", "CONVERSACION", "LLM"
|
||||
timestamp: datetime = Field(default_factory=datetime.now, alias="timestamp")
|
||||
text: str = Field(..., alias="text")
|
||||
@@ -148,7 +124,12 @@ class ConversationSessionDTO(BaseModel):
|
||||
|
||||
@classmethod
|
||||
def create(
|
||||
cls, session_id: str, user_id: str, telefono: str
|
||||
cls,
|
||||
session_id: str,
|
||||
user_id: str,
|
||||
telefono: str,
|
||||
pantalla_contexto: str | None = None,
|
||||
last_message: str | None = None,
|
||||
) -> "ConversationSessionDTO":
|
||||
"""Create a new conversation session."""
|
||||
now = datetime.now()
|
||||
@@ -158,6 +139,8 @@ class ConversationSessionDTO(BaseModel):
|
||||
telefono=telefono,
|
||||
createdAt=now,
|
||||
lastModified=now,
|
||||
pantallaContexto=pantalla_contexto,
|
||||
lastMessage=last_message,
|
||||
)
|
||||
|
||||
def with_last_message(self, last_message: str) -> "ConversationSessionDTO":
|
||||
|
||||
Reference in New Issue
Block a user