This repository contains the implementation of ProfiliTable
Follow the steps below to set up the environment and run the code.
conda create --name ProfiliTable python=3.10 -y
conda activate ProfiliTablepip install -r requirements.txt
pip install -e . 💡 Ensure
requirements.txtis in the root directory of this repository.
- Unzip
data.zipin the current (root) directory so that data files are placed alongsidemain/:unzip data.zip
- Navigate to
table_agent/utils/and unzipoperators.zipthere:cd table_agent/utils/ unzip operators.zip cd ../..
Export your LLM provider’s API key and endpoint URL:
export API_KEY='Your API KEY'
export API_URL='Your API URL'Replace
'Your API KEY'and'Your API URL'with actual credentials from your model provider (e.g., OpenAI, Anthropic, DeepSeek, etc.).
cd main
python ProfiliTable.py [arguments]| Argument | Type | Default | Description |
|---|---|---|---|
--score_threshold |
float |
0.1 |
Minimum similarity score threshold for terminating multi-turn feedback loops. Lower values allow more iterations; higher values exit earlier. |
--task |
str |
— | Task ID to evaluate (e.g., T0001, T0011, ...). Required for specific evaluation. |
--use_rag |
flag | False |
Enable Retrieval-Augmented Generation strategy for operator selection. |
--model |
str |
"gpt-4o" |
LLM backend. |
--input_path |
str |
"NL2Op" |
Input modality: "NL2Op" (natural language to single-step tasks) or "NL2Dag" (to multi-step tasks). |
# Run task T0001 with RAG using GPT-4o
python ProfiliTable.py --task T0001 --use_rag --model gpt-4o
# Run NL2Dag mode without RAG
python ProfiliTable.py --task T0001 --input_path NL2Dag If you enable --use_rag, the system uses semantic similarity to retrieve relevant operators from a local registry.
- The embedding model path is specified in:
table_agent/utils/utils.py → retrieve_operators() - By default, it expects a sentence-transformers model. We recommend using:
all-MiniLM-L12-v1 # slightly more accurate
- Download it from Hugging Face:
from sentence_transformers import SentenceTransformer model = SentenceTransformer('all-MiniLM-L12-v1') model.save('/path/to/local/all-MiniLM-L12-v1')
- Update the model path in
retrieve_operators():
📌 Make sure the model path is accessible and matches your deployment environment.
ProfiliTable/
├── data/ # Unzipped from data.zip
├── main/
│ └── ProfiliTable.py # Main entry point
├── table_agent/
│ └── utils/
│ ├── operators/ # Unzipped from operators.zip
│ └── utils.py # Contains retrieve_operators()
├── requirements.txt
└── README.md