Spaces:
Running
Running
izammohammed
commited on
Commit
β’
479188c
1
Parent(s):
734240a
uploaded main files
Browse files- CONTRIBUTING.md +33 -0
- LICENSE +21 -0
- README.md +49 -13
- app.py +52 -0
- requirements.txt +13 -0
- setup.py +10 -0
- store_index.py +0 -0
CONTRIBUTING.md
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Contributing to Legal Chatbot LLM
|
2 |
+
|
3 |
+
Thank you for considering contributing to the Legal Chatbot LLM project! Your contributions are highly valued and appreciated. To maintain a smooth and collaborative development process, please adhere to the following guidelines:
|
4 |
+
|
5 |
+
## How to Contribute
|
6 |
+
|
7 |
+
1. **Fork the Repository**: Fork the project on GitHub and create your own copy.
|
8 |
+
|
9 |
+
2. **Create a Branch**: Create a new branch for your changes using `git checkout -b feature/improvement`.
|
10 |
+
|
11 |
+
3. **Make Changes**: Implement your desired changes or improvements.
|
12 |
+
|
13 |
+
4. **Commit Changes**: Commit your changes with a descriptive message using `git commit -am 'Add/Fix feature'`.
|
14 |
+
|
15 |
+
5. **Push Changes**: Push your committed changes to your forked repository using `git push origin feature/improvement`.
|
16 |
+
|
17 |
+
6. **Create a Pull Request**: Open a pull request on this repository's `main` branch.
|
18 |
+
|
19 |
+
## Code Style and Standards
|
20 |
+
|
21 |
+
- Follow the coding style guidelines specified in the project. we are using `black` formatter and `flake8` linting
|
22 |
+
- Ensure your code adheres to the established standards and practices.
|
23 |
+
- Write clear and concise commit messages to facilitate the review process.
|
24 |
+
|
25 |
+
## Reporting Issues
|
26 |
+
|
27 |
+
If you encounter any issues or bugs, please feel free to open an issue on the repository. Include detailed information about the problem, steps to reproduce it, and any relevant screenshots or error messages.
|
28 |
+
|
29 |
+
## Contact
|
30 |
+
|
31 |
+
For any questions, suggestions, or discussions, please feel free to open an issue or contact the maintainer **Izam Mohammed** at **[email protected]**.
|
32 |
+
|
33 |
+
Your contributions contribute to the continued improvement and success of the Legal Chatbot LLM project. Thank you for your support!
|
LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2023 Izam Mohammed
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
README.md
CHANGED
@@ -1,13 +1,49 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Legal Chatbot LLM
|
2 |
+
|
3 |
+
## Overview
|
4 |
+
This project is a Legal Chatbot powered by Large Language Models (LLM) and RAG model. It allows users to ask questions related to legal terms and receive accurate responses. The chatbot utilizes a RAG (Retrieval-Augmented Generation) model to enhance its performance.
|
5 |
+
|
6 |
+
![](assets/demo.png)
|
7 |
+
|
8 |
+
## Features
|
9 |
+
- Utilizes LLM for natural language understanding and generation.
|
10 |
+
- Integrates vector databases for efficient retrieval of legal information.
|
11 |
+
- Implements a RAG model to combine retrieval and generation approaches for improved responses.
|
12 |
+
- Allows users to ask questions related to legal terms and concepts.
|
13 |
+
- Provides accurate and concise responses to user queries.
|
14 |
+
- User-friendly interface for seamless interaction.
|
15 |
+
|
16 |
+
## Usage
|
17 |
+
1. Clone the repository to your local machine.
|
18 |
+
2. Install the required dependencies specified in the `requirements.txt` file.
|
19 |
+
3. Run the main script to start the chatbot.
|
20 |
+
4. Enter your legal queries and interact with the chatbot to receive responses.
|
21 |
+
|
22 |
+
## Technologies Used
|
23 |
+
- Large Language Models (LLM)
|
24 |
+
- Vector Databases
|
25 |
+
- RAG (Retrieval-Augmented Generation) Model
|
26 |
+
- Python
|
27 |
+
|
28 |
+
## Installation
|
29 |
+
```bash
|
30 |
+
git clone https://github.com/your_username/legal-chatbot.git
|
31 |
+
cd legal-chatbot
|
32 |
+
pip install -r requirements.txt
|
33 |
+
python app.py
|
34 |
+
```
|
35 |
+
|
36 |
+
## Contributing
|
37 |
+
Contributions are welcome! If you'd like to contribute to this project, please follow these steps:
|
38 |
+
1. Fork the repository.
|
39 |
+
2. Create a new branch (`git checkout -b feature/improvement`).
|
40 |
+
3. Make your changes.
|
41 |
+
4. Commit your changes (`git commit -am 'Add new feature'`).
|
42 |
+
5. Push to the branch (`git push origin feature/improvement`).
|
43 |
+
6. Create a new Pull Request.
|
44 |
+
|
45 |
+
## License
|
46 |
+
This project is under [MIT Licence](LICENSE)
|
47 |
+
|
48 |
+
## Contact
|
49 |
+
For any inquiries or feedback, please contact [Izam mohammed] at [[email protected]].
|
app.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
st.title("Legal Advisor π")
|
4 |
+
|
5 |
+
# Sidebar for selecting the chatbot
|
6 |
+
selected_chatbot = st.sidebar.radio("Select Chatbot", ("OpenAI", "Llama 2"))
|
7 |
+
if selected_chatbot == "OpenAI":
|
8 |
+
from src import openai_call
|
9 |
+
elif selected_chatbot == "Llama 2":
|
10 |
+
st.warning(
|
11 |
+
"It might take some time to get response becuase of the size of Llama 2 model β οΈ"
|
12 |
+
)
|
13 |
+
from src import llama_call
|
14 |
+
|
15 |
+
# Initialize chat history
|
16 |
+
if "messages" not in st.session_state:
|
17 |
+
st.session_state.messages = []
|
18 |
+
st.info("""
|
19 |
+
**Legal Advisor Bot:**
|
20 |
+
- **Objective:** Develop a conversational AI chatbot to provide legal advice and assistance. π€πΌ
|
21 |
+
- **Technology Stack:** Utilizes Streamlit for the user interface, integrates with external chatbot APIs (such as OpenAI and Llama 2) for natural language processing. π₯οΈπ‘
|
22 |
+
- **Features:**
|
23 |
+
- Allows users to select between different chatbot models for varied responses. π
|
24 |
+
- Provides a chat history feature to track user interactions. π
|
25 |
+
- Displays loading spinner while fetching responses from the selected chatbot. β³
|
26 |
+
- Offers a user-friendly interface for asking legal questions. π¬
|
27 |
+
- **Emphasis:** Focuses on simplicity, efficiency, and accessibility in delivering legal information and support through conversational AI. π―
|
28 |
+
""")
|
29 |
+
# Display chat messages from history on app rerun
|
30 |
+
for message in st.session_state.messages:
|
31 |
+
with st.chat_message(message["role"]):
|
32 |
+
st.markdown(message["content"])
|
33 |
+
|
34 |
+
# React to user input
|
35 |
+
if prompt := st.chat_input("Ask something about law"):
|
36 |
+
# Display user message in chat message container
|
37 |
+
st.chat_message("user").markdown(prompt)
|
38 |
+
# Add user message to chat history
|
39 |
+
st.session_state.messages.append({"role": "user", "content": prompt})
|
40 |
+
|
41 |
+
# Add a loading spinner while waiting for response
|
42 |
+
with st.spinner("Thinking β¨..."):
|
43 |
+
if selected_chatbot == "Llama 2":
|
44 |
+
response = llama_call(prompt)
|
45 |
+
elif selected_chatbot == "OpenAI":
|
46 |
+
response = openai_call(prompt)
|
47 |
+
|
48 |
+
# Display assistant response in chat message container
|
49 |
+
with st.chat_message("assistant"):
|
50 |
+
st.markdown(response)
|
51 |
+
# Add assistant response to chat history
|
52 |
+
st.session_state.messages.append({"role": "assistant", "content": response})
|
requirements.txt
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
langchain
|
2 |
+
pymupdf
|
3 |
+
pinecone-client
|
4 |
+
sentence-transformers
|
5 |
+
pypdf
|
6 |
+
langchain_pinecone
|
7 |
+
ctransformers
|
8 |
+
openai
|
9 |
+
python-dotenv
|
10 |
+
# faiss-gpu==1.7.2
|
11 |
+
streamlit
|
12 |
+
langchain-community
|
13 |
+
langchain-openai
|
setup.py
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from setuptools import find_packages, setup
|
2 |
+
|
3 |
+
setup(
|
4 |
+
name="Legal Chatbot",
|
5 |
+
version="0.0.1",
|
6 |
+
author="Izam Mohammed",
|
7 |
+
author_email="[email protected]",
|
8 |
+
packages=find_packages(),
|
9 |
+
install_requires=[],
|
10 |
+
)
|
store_index.py
ADDED
File without changes
|