mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 13:18:18 +00:00
Log non schema adhering chat message before save to DB
This commit is contained in:
@@ -20,7 +20,7 @@ import yaml
|
||||
from langchain_core.messages.chat import ChatMessage
|
||||
from llama_cpp import LlamaTokenizer
|
||||
from llama_cpp.llama import Llama
|
||||
from pydantic import BaseModel
|
||||
from pydantic import BaseModel, ConfigDict, ValidationError, create_model
|
||||
from transformers import AutoTokenizer, PreTrainedTokenizer, PreTrainedTokenizerFast
|
||||
|
||||
from khoj.database.adapters import ConversationAdapters
|
||||
@@ -362,7 +362,6 @@ def message_to_log(
|
||||
"""Create json logs from messages, metadata for conversation log"""
|
||||
default_khoj_message_metadata = {
|
||||
"intent": {"type": "remember", "memory-type": "notes", "query": user_message},
|
||||
"trigger-emotion": "calm",
|
||||
}
|
||||
khoj_response_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
@@ -377,6 +376,20 @@ def message_to_log(
|
||||
khoj_log = merge_dicts(khoj_message_metadata, default_khoj_message_metadata)
|
||||
khoj_log = merge_dicts({"message": chat_response, "by": "khoj", "created": khoj_response_time}, khoj_log)
|
||||
|
||||
# Validate message logs
|
||||
# Only validates top-level fields, not nested fields, defined in ChatMessageModel
|
||||
class StrictChatMessageModel(ChatMessageModel):
|
||||
model_config = ConfigDict(extra="forbid", strict=True)
|
||||
|
||||
try:
|
||||
StrictChatMessageModel(**human_log)
|
||||
except ValidationError as e:
|
||||
logger.error(f"Validation error in user chat message: {e}\nUser Message: {human_log}\n")
|
||||
try:
|
||||
StrictChatMessageModel(**khoj_log)
|
||||
except ValidationError as e:
|
||||
logger.error(f"Validation error in khoj chat message: {e}\nKhoj Message: {khoj_log}\n")
|
||||
|
||||
human_message = ChatMessageModel(**human_log)
|
||||
khoj_message = ChatMessageModel(**khoj_log)
|
||||
chat_history.extend([human_message, khoj_message])
|
||||
|
||||
Reference in New Issue
Block a user