Vidur_chat_bot / input_to_llm.py
SamVidur's picture
added guard rails
a77fe30
Raw
History Blame Contribute Delete
2.91 kB
import json
# file_name = 'chat_history.jsonl'
# collection = ""
def extract_chats(collection,user_id,limit):
if collection is None:
return "No database connection."
cursor = collection.find({"user_id": user_id}).sort("timestamp", -1).limit(limit)
recent_chats = list(cursor)[::-1]
if not recent_chats:
return "No previous conversation history."
formatted_history = ""
for doc in recent_chats:
human_msg = doc['conversation']['human']
ai_msg = doc['conversation']['ai']
formatted_history += f"Human: {human_msg}\nAI: {ai_msg}\n\n"
return formatted_history
# with open(file_name, 'r') as f:
# all_data_string = f.read()
# all_conversations = []
# decoder = json.JSONDecoder()
# position = 0
# while position < len(all_data_string.strip()):
# # Skip any whitespace
# all_data_string = all_data_string[position:].lstrip()
# if not all_data_string:
# break # Reached end of file
# # Decode one object and find where it ends
# try:
# obj, position = decoder.raw_decode(all_data_string)
# all_conversations.append(obj)
# except json.JSONDecodeError:
# # Handle case where file might end with bad data
# break
# last_three_convos = all_conversations[-3:]
# return last_three_convos
def extract_goalfocus(collection,user_id):
# if collection is None:
# return {"topic": "General Life", "goal": "Understand the user"}
# Find the single most recent document
last_doc = collection.find_one(
{"user_id": user_id},
sort=[("timestamp", -1)]
)
if last_doc and "meta" in last_doc:
return last_doc["meta"]
# Default if no history exists yet
return {"topic": "General Life", "goal": "Understand the user"}
# # Read the entire file into one string
# with open(file_name, 'r') as f:
# all_data_string = f.read()
# all_conversations = []
# decoder = json.JSONDecoder()
# position = 0
# # We must use a loop because the file contains
# # multiple JSON objects back-to-back.
# while position < len(all_data_string.strip()):
# # Skip any whitespace
# all_data_string = all_data_string[position:].lstrip()
# if not all_data_string:
# break # Reached end of file
# # Decode one object and find where it ends
# try:
# obj, position = decoder.raw_decode(all_data_string)
# all_conversations.append(obj)
# except json.JSONDecodeError:
# # Handle case where file might end with bad data
# break
# # --- Now we can get the last three ---
# # Get the last three conversations
# last_three_convos = all_conversations[-1:]
# return last_three_convos