Spaces:
Sleeping
Sleeping
| 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. | |
| """ | |
| 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) | |