Spaces:
Running
Running
# SWIFT MT564 Documentation Assistant | |
**Version:** 1.0.0 | |
**Date:** May 14, 2025 | |
**Author:** Replit AI | |
## Table of Contents | |
1. [Introduction](#introduction) | |
2. [Project Overview](#project-overview) | |
3. [System Architecture](#system-architecture) | |
4. [Installation & Setup](#installation--setup) | |
5. [Component Details](#component-details) | |
- [Data Collection](#data-collection) | |
- [Model Training](#model-training) | |
- [Web Interface](#web-interface) | |
- [Hugging Face Integration](#hugging-face-integration) | |
6. [Usage Guide](#usage-guide) | |
7. [Troubleshooting](#troubleshooting) | |
8. [References](#references) | |
## Introduction | |
The SWIFT MT564 Documentation Assistant is a specialized AI system designed to help financial professionals understand and work with SWIFT MT564 message formats (Corporate Action Notifications). It combines web scraping, natural language processing, and a conversational interface to provide an intelligent assistant for interpreting MT564 documentation. | |
## Project Overview | |
This project creates a complete pipeline that: | |
1. Scrapes SWIFT MT564 documentation from official sources | |
2. Processes this information into a structured format | |
3. Fine-tunes a TinyLlama language model on this specialized data | |
4. Provides a user interface for asking questions about MT564 | |
5. Enables deployment to Hugging Face for easy sharing and use | |
The system is designed to be modular, allowing for future expansion to other SWIFT message types or financial documentation. | |
## System Architecture | |
The system consists of several key components: | |
``` | |
SWIFT-MT564-Assistant/ | |
βββ scrapers/ # Web scraping components | |
β βββ iso20022_scraper.py # Scraper for ISO20022 website | |
β βββ pdf_parser.py # PDF extraction utilities | |
β βββ data_processor.py # Converts raw data to training format | |
β | |
βββ model/ # ML model components | |
β βββ download_tinyllama.py # Script to download TinyLlama model | |
β βββ upload_to_huggingface.py # Script to upload model to Hugging Face | |
β βββ tinyllama_trainer.py # Fine-tuning implementation | |
β βββ evaluator.py # Tests model performance | |
β | |
βββ webapp/ # Web application | |
β βββ app.py # Flask application | |
β βββ templates/ # HTML templates | |
β β βββ index.html # Main page | |
β β βββ result.html # Results display | |
β βββ static/ # CSS, JS, and other static files | |
β | |
βββ data/ # Data storage | |
β βββ raw/ # Raw scraped data | |
β βββ processed/ # Processed training data | |
β βββ uploaded/ # User-uploaded PDFs | |
β | |
βββ train_mt564_model.py # Script to train the model | |
βββ prepare_mt564_data.py # Script to prepare training data | |
βββ dependencies.txt # Project dependencies | |
βββ setup.py # Setup and utility script | |
βββ README.md # Project documentation | |
``` | |
## Installation & Setup | |
### System Requirements | |
- Python 3.8 or higher | |
- At least 4GB RAM (8GB+ recommended) | |
- At least 10GB free disk space | |
- CUDA-compatible GPU recommended for training (but not required) | |
- Internet connection for downloading models and data | |
### Local Installation | |
1. **Clone or download the project**: | |
- Download the zip file from Replit | |
- Extract to a folder on your local machine | |
2. **Set up a virtual environment**: | |
```bash | |
# Create a virtual environment | |
python -m venv venv | |
# Activate the environment | |
# On Windows: | |
venv\Scripts\activate | |
# On macOS/Linux: | |
source venv/bin/activate | |
``` | |
3. **Install dependencies**: | |
```bash | |
# Install core dependencies | |
pip install torch transformers datasets huggingface_hub accelerate | |
pip install requests beautifulsoup4 trafilatura flask | |
pip install PyPDF2 tqdm nltk rouge | |
# Or use the dependencies.txt file | |
pip install -r dependencies.txt | |
``` | |
4. **Run the setup script for guidance**: | |
```bash | |
python setup.py --mode guide | |
``` | |
### Environment Variables | |
The following environment variables are used: | |
- `HUGGING_FACE_TOKEN`: Your Hugging Face API token (for uploading models) | |
- `FLASK_APP`: Set to "webapp/app.py" for running the web interface | |
- `FLASK_ENV`: Set to "development" for debugging or "production" for deployment | |
## Component Details | |
### Data Collection | |
The data collection process involves scraping SWIFT MT564 documentation from official sources: | |
1. **ISO20022 Website Scraping**: | |
```bash | |
python scrapers/iso20022_scraper.py --output_dir ./data/raw | |
``` | |
This scrapes the ISO20022 website's MT564 documentation and saves it in structured JSON format. | |
2. **Data Processing**: | |
```bash | |
python prepare_mt564_data.py --input_file ./data/raw/mt564_documentation.json --output_file ./data/processed/mt564_training_data.json | |
``` | |
This converts the raw data into instruction-response pairs suitable for training. | |
### Model Training | |
The model training process involves: | |
1. **Downloading the base model**: | |
```bash | |
python model/download_tinyllama.py --model_name TinyLlama/TinyLlama-1.1B-Chat-v1.0 --output_dir ./data/models | |
``` | |
2. **Fine-tuning on MT564 data**: | |
```bash | |
python train_mt564_model.py --model_name ./data/models/TinyLlama-1.1B-Chat-v1.0 --training_data ./data/processed/mt564_training_data.json --output_dir ./mt564_tinyllama_model | |
``` | |
Training parameters can be adjusted as needed: | |
- `--epochs`: Number of training epochs (default: 3) | |
- `--batch_size`: Batch size (default: 2) | |
- `--learning_rate`: Learning rate (default: 2e-5) | |
3. **Evaluating the model**: | |
The training script includes validation, but further evaluation can be performed on test data if needed. | |
### Web Interface | |
The web interface provides a user-friendly way to interact with the model: | |
1. **Starting the web server**: | |
```bash | |
python webapp/app.py | |
``` | |
2. **Using the interface**: | |
- Open a browser and navigate to `http://localhost:5000` | |
- Upload SWIFT MT564 documentation PDFs | |
- Ask questions about the message format | |
- View AI-generated responses | |
### Hugging Face Integration | |
The project includes tools for seamless integration with Hugging Face: | |
1. **Uploading your model**: | |
```bash | |
# Set your Hugging Face API token | |
export HUGGING_FACE_TOKEN=your_token_here | |
# Upload the model | |
python model/upload_to_huggingface.py --model_dir ./mt564_tinyllama_model --repo_name your-username/mt564-tinyllama | |
``` | |
2. **Creating a Hugging Face Space**: | |
- Go to huggingface.co and click "New Space" | |
- Choose Gradio or Streamlit template | |
- Link to your uploaded model | |
- Use the sample code provided in the setup guide | |
## Usage Guide | |
### Common Workflows | |
#### Complete Pipeline | |
1. Scrape data β 2. Process data β 3. Download model β 4. Train model β 5. Upload to Hugging Face | |
```bash | |
# 1. Scrape data | |
python scrapers/iso20022_scraper.py --output_dir ./data/raw | |
# 2. Process data | |
python prepare_mt564_data.py --input_file ./data/raw/mt564_documentation.json --output_file ./data/processed/mt564_training_data.json | |
# 3. Download model | |
python model/download_tinyllama.py --output_dir ./data/models | |
# 4. Train model | |
python train_mt564_model.py --training_data ./data/processed/mt564_training_data.json --output_dir ./mt564_tinyllama_model | |
# 5. Upload to Hugging Face | |
export HUGGING_FACE_TOKEN=your_token_here | |
python model/upload_to_huggingface.py --model_dir ./mt564_tinyllama_model --repo_name your-username/mt564-tinyllama | |
``` | |
#### Using Pre-trained Model | |
If you already have a trained model, you can skip steps 1-4 and just run the web interface: | |
```bash | |
# Start the web interface | |
python webapp/app.py | |
``` | |
## Troubleshooting | |
### Common Issues | |
1. **Out of memory during training**: | |
- Reduce batch size: `--batch_size 1` | |
- Increase gradient accumulation: `--gradient_accumulation_steps 8` | |
- Use CPU only if necessary: `--device cpu` | |
2. **Installation errors**: | |
- Make sure you're using Python 3.8+ | |
- Try installing dependencies one by one | |
- Check for package conflicts | |
3. **Hugging Face upload issues**: | |
- Verify your HUGGING_FACE_TOKEN is set correctly | |
- Make sure you have write access to the repository | |
- Check for repository naming conflicts | |
### Getting Help | |
If you encounter issues: | |
1. Check the error messages for specific details | |
2. Consult the Hugging Face documentation for model/API issues | |
3. Review the TinyLlama documentation for model-specific questions | |
## References | |
- [SWIFT MT564 Documentation](https://www.iso20022.org/15022/uhb/finmt564.htm) | |
- [TinyLlama Project](https://github.com/jzhang38/TinyLlama) | |
- [Hugging Face Documentation](https://huggingface.co/docs) | |
- [Transformers Library](https://huggingface.co/docs/transformers/index) | |
- [Flask Web Framework](https://flask.palletsprojects.com/) | |
--- | |
## License | |
This project is available under the Apache 2.0 License. | |
## Acknowledgements | |
This project utilizes several open-source libraries and resources, including TinyLlama, Hugging Face Transformers, and Flask. |