From a8b1280707b84371e820c6ef681a8c0ce1c4ee53 Mon Sep 17 00:00:00 2001 From: dtunai Date: Sat, 25 May 2024 13:45:23 +0300 Subject: [PATCH] init --- README.md | 152 +++++++++++++++++++++++----------- assets/Synth-ToT-Logo.png | Bin 0 -> 1650602 bytes setup.py | 26 ++++++ synthtot/data/input_data.json | 2 +- synthtot/synthtot.py | 8 +- 5 files changed, 136 insertions(+), 52 deletions(-) create mode 100644 assets/Synth-ToT-Logo.png create mode 100644 setup.py diff --git a/README.md b/README.md index 1916ee3..40f3dfc 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ -# python-package-template +

+ +

+

SynthToT +
Generate a synthetic dataset for your data through deliberate problem-solving +

-This is a template repository for Python package projects. - -## In this README :point_down: +##### Table of Content - [Features](#features) - [Usage](#usage) @@ -12,80 +15,130 @@ This is a template repository for Python package projects. - [FAQ](#faq) - [Contributing](#contributing) + +## Introduction + +SynthToT is an simple AI agent system crafted using the Langchain framework developed by [Mathematics and AI Institute.](https://www.matyz.org/en/) It is specifically designed to facilitate the automated generation of synthetic datasets, which are crucial for the training of large language models. SynthToT Agent utilize the renowned [Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601) et al. Shunyu Yao, Dian Yu. Tree-of-Thoughts prompting strategy, *"which generalizes over the popular Chain of Thought approach to prompting language models, and enables exploration over coherent units of text (thoughts) that serve as intermediate steps toward problem solving. ToT allows LMs to perform deliberate decision making by considering multiple different reasoning paths and self-evaluating choices to decide the next course of action, as well as looking ahead or backtracking when necessary to make global choices."* + +By implementing this strategy, the SynthToT Agent offers a CLI interface for generating JSON dataset outputs using Tree-of-Thoughts (ToT) reasoning applied to the seed input content. This approach provides a distinctive foundation for creating datasets that are ideal for training state-of-the-art language models, adhering to the following JSON schema: + +**Output JSON Schema** + +```json +[ + { + "input": "", + "perfect_consideration": "", + "number": 10, + "perspective": "", + "example": "", + "solutions": "", + "thought_process": "", + "sorted_solutions": "", + "data_out": "" + }, + // n items of seed input list +] +``` + +**Input JSON Schema** +```json +[ + { + "input": "", + "perfect_consideration": "", + "number": 10, + "perspective": "", + "example": "", + + // Role-based dataset Q&A pairs output format + // + // "example": "{\"messages\": [{\"role\": \"system\", \"content\": \"EcoBot is an eco-friendly AI assistant passionate about sustainability and environmental awareness.\"}, {\"role\": \"user\", \"content\": \"What are some benefits of using solar panels?\"}, {\"role\": \"assistant\", \"content\": \"Solar panels can significantly reduce electricity bills, decrease your carbon footprint, and even increase the value of your property. Plus, they're a renewable energy source, helping to combat climate change.\"}]}" + }, + // n items of seed input list +] +``` + +You can view example input_data and output_data from under the `examples` folder. + ## Features -This template repository comes with all of the boilerplate needed for: +#### Chaining -⚙️ Robust (and free) CI with [GitHub Actions](https://github.com/features/actions): - - Unit tests ran with [PyTest](https://docs.pytest.org) against multiple Python versions and operating systems. - - Type checking with [mypy](https://github.com/python/mypy). - - Linting with [ruff](https://astral.sh/ruff). - - Formatting with [isort](https://pycqa.github.io/isort/) and [black](https://black.readthedocs.io/en/stable/). +- **Initialization:** Customizable parameters such as maximum tokens per response, model type, and sampling temperature. -🤖 [Dependabot](https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/) configuration to keep your dependencies up-to-date. + - max_tokens: Limits the number of tokens generated per response. + - model: Specifies the language model to use (default is "gpt-3.5-turbo"). + - temperature: Controls the randomness of the output (default is 0). -📄 Great looking API documentation built using [Sphinx](https://www.sphinx-doc.org/en/master/) (run `make docs` to preview). +- **Template Management:** Utilizes a set of predefined templates (template_step1 to template_step5) and corresponding output keys for structured data generation. -🚀 Automatic GitHub and PyPI releases. Just follow the steps in [`RELEASE_PROCESS.md`](./RELEASE_PROCESS.md) to trigger a new release. +- **LLMChain:** Initializes an LLMChain with a specified prompt template and output key, using the selected language model and parameters. + +- **Chain Assembly:** Generates a list of LLM chained instances based on the predefined templates and output keys. ## Usage ### Initial setup -1. [Create a new repository](https://github.com/allenai/python-package-template/generate) from this template with the desired name of your project. - - *Your project name (i.e. the name of the repository) and the name of the corresponding Python package don't necessarily need to match, but you might want to check on [PyPI](https://pypi.org/) first to see if the package name you want is already taken.* +**I. Create a new Conda or virtual environment with the Python version 3.10:** -2. Create a Python 3.8 or newer virtual environment. +```bash +conda create -n synthtotenv python=3.10.11 +``` - *If you're not sure how to create a suitable Python environment, the easiest way is using [Miniconda](https://docs.conda.io/en/latest/miniconda.html). On a Mac, for example, you can install Miniconda using [Homebrew](https://brew.sh/):* +```bash +conda activate synthtotenv +``` - ``` - brew install miniconda - ``` +or create virtual environment with venv. - *Then you can create and activate a new Python environment by running:* +**II. Clone the repository, go into folder, and install requirements:** - ``` - conda create -n synthtot python=3.9 - conda activate synthtot - ``` +Clone from the remote: -3. Now that you have a suitable Python environment, you're ready to personalize this repository. Just run: +```bash +git clone https://github.com/dtunai/SynthToT/ +``` - ``` - pip install -r setup-requirements.txt - python scripts/personalize.py - ``` +Switch to package folder: - And then follow the prompts. +```bash +cd SynthToT +``` - :pencil: *NOTE: This script will overwrite the README in your repository.* +Install requirements: -4. Commit and push your changes, then make sure all GitHub Actions jobs pass. +```bash +pip install -r setup-requirements.txt +``` -5. (Optional) If you plan on publishing your package to PyPI, add repository secrets for `PYPI_USERNAME` and `PYPI_PASSWORD`. To add these, go to "Settings" > "Secrets" > "Actions", and then click "New repository secret". +Build the package: - *If you don't have PyPI account yet, you can [create one for free](https://pypi.org/account/register/).* +```bash +pip install -e . +``` -6. (Optional) If you want to deploy your API docs to [readthedocs.org](https://readthedocs.org), go to the [readthedocs dashboard](https://readthedocs.org/dashboard/import/?) and import your new project. +### Preparing Input Data List - Then click on the "Admin" button, navigate to "Automation Rules" in the sidebar, click "Add Rule", and then enter the following fields: +Now, you're tasked with creating your input data list. This list will serve as the foundation for generating synthetic output and potential solutions using the Tree-of-Thoughts approach by agents chains. Please take a look at `examples` folder for input data examples. - - **Description:** Publish new versions from tags - - **Match:** Custom Match - - **Custom match:** v[vV] - - **Version:** Tag - - **Action:** Activate version +### Using Tool - Then hit "Save". +After creating your input list, now you can seed the list to the SynthToT via a simple CLI interface: - *After your first release, the docs will automatically be published to [your-project-name.readthedocs.io](https://your-project-name.readthedocs.io/).* +```bash +python synthtot/synthtot.py \ + --input-file \ + --output-file \ + --model \ + --max-tokens \ + --temperature +``` ### Creating releases -Creating new GitHub and PyPI releases is easy. The GitHub Actions workflow that comes with this repository will handle all of that for you. -All you need to do is follow the instructions in [RELEASE_PROCESS.md](./RELEASE_PROCESS.md). +Creating new GitHub and PyPI releases is easy. The GitHub Actions workflow that comes with this repository will handle all of that for you. All you need to do is follow the instructions in [RELEASE_PROCESS.md](./RELEASE_PROCESS.md). ## Projects using this template @@ -103,9 +156,8 @@ Here is an incomplete list of some projects that started off with this template: #### Should I use this template even if I don't want to publish my package? -Absolutely! If you don't want to publish your package, just delete the `docs/` directory and the `release` job in [`.github/workflows/main.yml`](https://github.com/allenai/python-package-template/blob/main/.github/workflows/main.yml). +Absolutely! If you don't want to publish your package, just delete the `docs/` directory and the `release` job in [`.github/workflows/main.yml`](https://github.com/dtunai/SynthToT/blob/main/.github/workflows/main.yml). ## Contributing -If you find a bug :bug:, please open a [bug report](https://github.com/allenai/python-package-template/issues/new?assignees=&labels=bug&template=bug_report.md&title=). -If you have an idea for an improvement or new feature :rocket:, please open a [feature request](https://github.com/allenai/python-package-template/issues/new?assignees=&labels=Feature+request&template=feature_request.md&title=). +If you find a bug, please open a bug report. If you have an idea for an improvement or new feature :rocket:, please open a [feature request](https://github.com/dtunai/SynthToT/issues/new?assignees=&labels=Feature+request&template=feature_request.md&title=). diff --git a/assets/Synth-ToT-Logo.png b/assets/Synth-ToT-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ea21ed23c36e74c90dd9cdc5d64765bcd4eb0b3a GIT binary patch literal 1650602 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