Update README.md

This commit is contained in:
Pritam Das 2024-10-20 12:00:55 +05:30 committed by GitHub
parent a1d4cd9839
commit 508249e47a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,55 +1,83 @@
# Chatbot with Chat history stored in Database
This project is a simple chatbot application built using Python, integrating a database for chat history storage and a language model service to generate responses. The chatbot can handle user messages, manage chat history, and terminate conversations upon receiving a `/stop` command.
# Chatbot with LLM Integration and Database Storage
This chatbot application integrates LLM (Large Language Model) API services, **Together** and **Groq**(you can use any one of them), to generate AI-driven responses. It stores conversation history in a MySQL database and manages chat sessions with triggers that update the status of conversations automatically.
## Features
- **Conversation Handling**: The bot processes user inputs and generates responses using a language model service.
- **Database Integration**: Stores chat data (user messages and bot responses) and maintains chat history.
- **Session Management**: Supports starting and terminating chat sessions, including proper logging of start and end times.
- **Message Truncation**: Limits conversation history to the last few messages if the conversation exceeds a large number of entries.
- Supports LLM response generation using **Together** and **Groq** APIs.
- Stores chat sessions and message exchanges in MySQL database tables.
- Automatically updates chat session status using database triggers.
- Manages conversation history with user-assistant interaction.
## Components
- **`Chatbot` Class**: Core logic for handling user messages and managing the chat lifecycle.
- **`Database` (Mocked in tests)**: Handles chat data storage (methods for inserting and retrieving data).
- **`LLM Service` (Mocked in tests)**: Generates responses to user input based on conversation history.
## Requirements
## Installation
1. Clone the repository:
2. Install the necessary dependencies
```bash
pip3 install requirements.txt
```
4. Run the bot or test it using `doctest`:
```bash
python3 -m doctest -v chatbot.py
```
Before running the application, ensure the following dependencies are installed:
- Python 3.13+
- MySQL Server
- The following Python libraries:
```bash
pip3 install -r requirements.txt
```
## Setup Instructions
### Step 1: Set Up Environment Variables
Create a `.env` file in the root directory of your project and add the following entries for your database credentials and API keys:
## Usage
1. **Create Database**: Create a databse named `ChatDB` in Mysql
2. **Create .env**:
```
# Together API key
TOGETHER_API_KEY="YOUR_API_KEY"
# Together API key
TOGETHER_API_KEY="YOUR_API_KEY"
# Groq API key
GROQ_API_KEY = "YOUR_API_KEY"
# Groq API key
GROQ_API_KEY = "YOUR_API_KEY"
# MySQL connectionDB (if you're running locally)
DB_USER = "<DB_USER_NAME>"
DB_PASSWORD = "<DB_USER_NAME>"
DB_HOST = "127.0.0.1"
DB_NAME = "ChatDB"
PORT = "3306"
```
7. **Handling Messages**: run below command to start the chat in console, you can login to your Database to check the chat history
```python
python3 main.py
# MySQL connectionDB (if you're running locally)
DB_USER = "<DB_USER_NAME>"
DB_PASSWORD = "<DB_USER_NAME>"
DB_HOST = "127.0.0.1"
DB_NAME = "ChatDB"
PORT = "3306"
# API service to you(or use "Together")
API_SERVICE = "Groq"
```
10. **Ending the Chat**: When the user sends `/stop`, the chat will terminate and log the end of the conversation with the message 'conversation-terminated'
## Testing
The code includes basic `doctests` to verify the chatbot's functionality using mock services for the database and language model:
- Run the tests:
```bash
python3 -m doctest -v chatbot.py
```
### Step 2: Create MySQL Tables and Trigger
The `create_tables()` function in the script automatically creates the necessary tables and a trigger for updating chat session statuses. To ensure the database is set up correctly, the function is called at the beginning of the script.
Ensure that your MySQL server is running and accessible before running the code.
### Step 3: Run the Application
To start the chatbot:
1. Ensure your MySQL server is running.
2. Open a terminal and run the Python script:
```bash
python3 chat_db.py
```
The chatbot will initialize, and you can interact with it by typing your inputs. Type `/stop` to end the conversation.
### Step 4: Test and Validate Code
This project uses doctests to ensure that the functions work as expected. To run the doctests:
```bash
python3 -m doctest -v chatbot.py
```
Make sure to add doctests to all your functions where applicable, to validate both valid and erroneous inputs.
### Key Functions
- **create_tables()**: Sets up the MySQL tables (`Chat_history` and `Chat_data`) and the `update_is_stream` trigger.
- **insert_chat_history()**: Inserts a new chat session into the `Chat_history` table.
- **insert_chat_data()**: Inserts user-assistant message pairs into the `Chat_data` table.
- **generate_llm_response()**: Generates a response from the selected LLM API service, either **Together** or **Groq**.