Spaces:
Sleeping
Sleeping
File size: 2,701 Bytes
d8a070a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import os
import pandas as pd
from typing import List
from datetime import datetime, date
class Memory:
"""
A class for handling the storage of chatbot conversation history by writing chat logs to a CSV file.
Methods:
write_chat_history_to_file(gradio_chatbot: List, thread_id: str, folder_path: str) -> None:
Writes the most recent chatbot interaction (user query and bot response) to a CSV file.
The chat log is saved with the current date as the filename, and the interaction is
timestamped.
"""
@staticmethod
def write_chat_history_to_file(gradio_chatbot: List, thread_id: str, folder_path: str) -> None:
"""
Writes the most recent chatbot interaction (user query and response) to a CSV file. The log includes
the thread ID and timestamp of the interaction. The file for each day is saved with the current date as the filename.
Args:
gradio_chatbot (List): A list containing tuples of user queries and chatbot responses.
The most recent interaction is appended to the log.
thread_id (str): The unique identifier for the chat session (or thread).
folder_path (str): The directory path where the chat log CSV files should be stored.
Returns:
None
File Structure:
- The chat log for each day is saved as a separate CSV file in the specified folder.
- The CSV file is named using the current date in 'YYYY-MM-DD' format.
- Each row in the CSV file contains the following columns: 'thread_id', 'timestamp', 'user_query', 'response'.
"""
tmp_list = list(gradio_chatbot[-1]) # Convert the tuple to a list
today_str = date.today().strftime('%Y-%m-%d')
tmp_list.insert(0, thread_id) # Add the new value to the list
current_time_str = datetime.now().strftime('%H:%M:%S')
tmp_list.insert(1, current_time_str) # Add the new value to the list
# File path for today's CSV file
file_path = os.path.join(folder_path, f'{today_str}.csv')
# Create a DataFrame from the list
new_df = pd.DataFrame([tmp_list], columns=[
"thread_id", "timestamp", "user_query", "response"])
# Check if the file for today exists
if os.path.exists(file_path):
# If it exists, append the new data to the CSV file
new_df.to_csv(file_path, mode='a', header=False, index=False)
else:
# If it doesn't exist, create the CSV file with the new data
new_df.to_csv(file_path, mode='w', header=True, index=False)
|