Name | gpt-synthesizer JSON |
Version |
0.0.4
JSON |
| download |
home_page | |
Summary | Collaboratively build an entire codebase for any project with the help of an AI |
upload_time | 2023-10-24 19:26:47 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.8 |
license | MIT License Copyright (c) 2023 RoboCoach Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
large language models
ai-assisted code generation
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# GPT Synthesizer
**Collaboratively implement an entire software project with the help of an AI.**
GPT-Synthesizer walks you through the problem statement and explores the design space with you through a carefully moderated interview process. If you have no idea where to start and how to describe your software project, GPT Synthesizer can be your best friend.
## What makes GPT Synthesizer unique?
The design philosophy of GPT Synthesizer is rooted in the core, and rather contrarian, belief that a single prompt is not enough to build a complete codebase for complex software. This is mainly due to the fact that, even in the presence of powerful LLMs, there are still many crucial details in the design specification that cannot be effectively captured in a single prompt. Attempting to include every bit of detail in a single prompt, if not impossible, would cause a loss of efficiency of the LLM engine. Powered by [LangChain](https://python.langchain.com/docs/get_started/introduction), GPT Synthesizer captures the design specification, step by step, through an AI-directed dialogue that explores the design space with the user.
GPT Synthesizer interprets the initial prompt as a high-level description of a programming task. Then, through a process, which we named “prompt synthesis”, GPT Synthesizer compiles the initial prompt into multiple program components that the user might need for implementation. This step essentially turns 'unknown unknowns' into 'known unknowns', which can be very helpful for novice programmers who want to understand the overall flow of their desired implementation. Next, GPT Synthesizer and the user collaboratively find out the design details that will be used in the implementation of each program component.
Different users might prefer different levels of interactivity depending on their unique skill set, their level of expertise, as well as the complexity of the task at hand. GPT Synthesizer distinguishes itself from other LLM-based code generation tools by finding the right balance between user participation and AI autonomy.
## Installation
- `pip install gpt-synthesizer`
- For development:
- `git clone https://github.com/RoboCoachTechnologies/GPT-Synthesizer.git`
- `cd GPT-Synthesizer`
- `pip install -e .`
## Usage
GPT Synthesizer is easy to use. It provides you with an intuitive AI assistant in your command-line interface. It also provides an intuitive user interface using Streamlit. Watch these demos to see how GPT Synthesizer works:
- [GPT-Synthesizer Release v0.0.2 demo: a snake game](https://www.youtube.com/watch?v=zFJDQOtIFGA)
- [GPT-Synthesizer Release v0.0.3 demo: a tic-tac-toe game](https://www.youtube.com/watch?v=_JdmzpXLyE0)
- [GPT-Synthesizer short demo: how to install](https://www.youtube.com/watch?v=D_kdzOUTe0E)
- [GPT-Synthesizer short demo: how to add/remove components](https://www.youtube.com/watch?v=mOHWS83HfOU)
GPT Synthesizer uses OpenAI's `gpt-3.5-turbo-16k` as the default LLM.
**Streamlit App**:
- Start GPT Synthesizer by typing `gpt-synthesizer-streamlit` in the terminal.
- Input your OpenAI API key in the sidebar
- Select the model you wish to use in the sidebar
**Command Line Interface**:
- Setup your OpenAI API key: `export OPENAI_API_KEY=[your api key]`
- Start GPT Synthesizer by typing `gpt-synthesizer` in the terminal.
**How it works**:
- Briefly describe your programming task and the implementation language:
- `Programming task: *I want to implement an edge detection method from a live camera feed.*`
- `Programming language: *python*`
- GPT Synthesizer will analyze your task and suggest a set of components needed for the implementation.
- You can add more components by listing them in quotation marks: `Components to be added: *Add 'component 1: what component 1 does', 'component 2: what component 2 does', and 'component 3: what component 3 does' to the list of components.*`
- You can remove any redundant component in a similar manner: `Components to be removed: *Remove 'component 1' and 'component 2' from the list of components.*`
- After you are done with modifying the component list, GPT Synthesizer will start asking questions in order to find all the details needed for implementing each component.
- When GPT Synthesizer learns about your specific requirements for each component, it will write the code for you!
- You can find the implementation in the `workspace` directory. For transparency, the UI will put the path and the content of the `workspace` in the sidebar.
## Make your own GPT Synthesizer!
GPT Synthesizer’s code is easy to read and understand. Anyone can customize the code for a specific application. The codebase is tightly integrated with [LangChain](https://python.langchain.com/docs/get_started/introduction), allowing utilization of various tools such as [internet search](https://python.langchain.com/docs/integrations/tools/ddg) and [vector databases](https://python.langchain.com/docs/modules/memory/types/vectorstore_retriever_memory).
GPT Synthesizer's hierarchical strategy to build the codebase allows OpenAI’s GPT3.5 to be a viable option for the backend LLM. We believe GPT3.5 provides a good trade-off between cost and contextual understanding, while GPT4 might be too expensive for many use cases. Nevertheless, [switching to another LLM](https://python.langchain.com/docs/integrations/llms/) is made easy thanks to LangChain integration.
## Roadmap
GPT Synthesizer will be actively maintained as an open-source project. We welcome everyone to contribute to our community of building systems for human-in-the-loop code generation!
Here is a (non-exhaustive) list of our future plans for GPT Synthesizer:
- An additional step in code generation that ensures creating a main/entrypoint. This feature has already been implemented for the Python language.
- Creating setup instructions based on the programming language, e.g. `CMakelists.txt` for C++ and `setup.py`+`requirements.txt` for Python.
- Adding benchmarks and testing scripts.
## Contact
For business inquiries, such as consulting or contracting jobs, please contact robocoachtechnologies@gmail.com.
Raw data
{
"_id": null,
"home_page": "",
"name": "gpt-synthesizer",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "Large Language Models,AI-assisted Code Generation",
"author": "",
"author_email": "RoboCoach Technologies <robocoachtechnologies@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f5/4c/f3e6f483c31a703df18beb2e9eefb82890ecae94f0ee7f857c7fe4d62ee6/gpt-synthesizer-0.0.4.tar.gz",
"platform": null,
"description": "# GPT Synthesizer\n\n**Collaboratively implement an entire software project with the help of an AI.**\n\nGPT-Synthesizer walks you through the problem statement and explores the design space with you through a carefully moderated interview process. If you have no idea where to start and how to describe your software project, GPT Synthesizer can be your best friend.\n\n## What makes GPT Synthesizer unique?\n\nThe design philosophy of GPT Synthesizer is rooted in the core, and rather contrarian, belief that a single prompt is not enough to build a complete codebase for complex software. This is mainly due to the fact that, even in the presence of powerful LLMs, there are still many crucial details in the design specification that cannot be effectively captured in a single prompt. Attempting to include every bit of detail in a single prompt, if not impossible, would cause a loss of efficiency of the LLM engine. Powered by [LangChain](https://python.langchain.com/docs/get_started/introduction), GPT Synthesizer captures the design specification, step by step, through an AI-directed dialogue that explores the design space with the user.\n\nGPT Synthesizer interprets the initial prompt as a high-level description of a programming task. Then, through a process, which we named \u201cprompt synthesis\u201d, GPT Synthesizer compiles the initial prompt into multiple program components that the user might need for implementation. This step essentially turns 'unknown unknowns' into 'known unknowns', which can be very helpful for novice programmers who want to understand the overall flow of their desired implementation. Next, GPT Synthesizer and the user collaboratively find out the design details that will be used in the implementation of each program component.\n\nDifferent users might prefer different levels of interactivity depending on their unique skill set, their level of expertise, as well as the complexity of the task at hand. GPT Synthesizer distinguishes itself from other LLM-based code generation tools by finding the right balance between user participation and AI autonomy.\n\n## Installation\n\n- `pip install gpt-synthesizer`\n\n- For development:\n - `git clone https://github.com/RoboCoachTechnologies/GPT-Synthesizer.git`\n - `cd GPT-Synthesizer`\n - `pip install -e .`\n\n## Usage\n\nGPT Synthesizer is easy to use. It provides you with an intuitive AI assistant in your command-line interface. It also provides an intuitive user interface using Streamlit. Watch these demos to see how GPT Synthesizer works:\n- [GPT-Synthesizer Release v0.0.2 demo: a snake game](https://www.youtube.com/watch?v=zFJDQOtIFGA)\n- [GPT-Synthesizer Release v0.0.3 demo: a tic-tac-toe game](https://www.youtube.com/watch?v=_JdmzpXLyE0)\n- [GPT-Synthesizer short demo: how to install](https://www.youtube.com/watch?v=D_kdzOUTe0E)\n- [GPT-Synthesizer short demo: how to add/remove components](https://www.youtube.com/watch?v=mOHWS83HfOU)\n\nGPT Synthesizer uses OpenAI's `gpt-3.5-turbo-16k` as the default LLM.\n\n**Streamlit App**:\n\n- Start GPT Synthesizer by typing `gpt-synthesizer-streamlit` in the terminal.\n- Input your OpenAI API key in the sidebar\n- Select the model you wish to use in the sidebar\n\n**Command Line Interface**:\n\n- Setup your OpenAI API key: `export OPENAI_API_KEY=[your api key]`\n- Start GPT Synthesizer by typing `gpt-synthesizer` in the terminal.\n\n**How it works**:\n\n- Briefly describe your programming task and the implementation language:\n - `Programming task: *I want to implement an edge detection method from a live camera feed.*`\n - `Programming language: *python*`\n- GPT Synthesizer will analyze your task and suggest a set of components needed for the implementation.\n - You can add more components by listing them in quotation marks: `Components to be added: *Add 'component 1: what component 1 does', 'component 2: what component 2 does', and 'component 3: what component 3 does' to the list of components.*`\n - You can remove any redundant component in a similar manner: `Components to be removed: *Remove 'component 1' and 'component 2' from the list of components.*`\n- After you are done with modifying the component list, GPT Synthesizer will start asking questions in order to find all the details needed for implementing each component.\n- When GPT Synthesizer learns about your specific requirements for each component, it will write the code for you!\n- You can find the implementation in the `workspace` directory. For transparency, the UI will put the path and the content of the `workspace` in the sidebar.\n\n\n## Make your own GPT Synthesizer!\n\nGPT Synthesizer\u2019s code is easy to read and understand. Anyone can customize the code for a specific application. The codebase is tightly integrated with [LangChain](https://python.langchain.com/docs/get_started/introduction), allowing utilization of various tools such as [internet search](https://python.langchain.com/docs/integrations/tools/ddg) and [vector databases](https://python.langchain.com/docs/modules/memory/types/vectorstore_retriever_memory).\n\nGPT Synthesizer's hierarchical strategy to build the codebase allows OpenAI\u2019s GPT3.5 to be a viable option for the backend LLM. We believe GPT3.5 provides a good trade-off between cost and contextual understanding, while GPT4 might be too expensive for many use cases. Nevertheless, [switching to another LLM](https://python.langchain.com/docs/integrations/llms/) is made easy thanks to LangChain integration.\n\n## Roadmap\n\nGPT Synthesizer will be actively maintained as an open-source project. We welcome everyone to contribute to our community of building systems for human-in-the-loop code generation!\n\nHere is a (non-exhaustive) list of our future plans for GPT Synthesizer:\n\n- An additional step in code generation that ensures creating a main/entrypoint. This feature has already been implemented for the Python language.\n- Creating setup instructions based on the programming language, e.g. `CMakelists.txt` for C++ and `setup.py`+`requirements.txt` for Python.\n- Adding benchmarks and testing scripts.\n\n## Contact\n\nFor business inquiries, such as consulting or contracting jobs, please contact robocoachtechnologies@gmail.com. \n\n",
"bugtrack_url": null,
"license": "MIT License Copyright (c) 2023 RoboCoach Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
"summary": "Collaboratively build an entire codebase for any project with the help of an AI",
"version": "0.0.4",
"project_urls": {
"Bug Tracker": "https://github.com/RoboCoachTechnologies/GPT-Synthesizer/issues",
"Homepage": "https://github.com/RoboCoachTechnologies/GPT-Synthesizer"
},
"split_keywords": [
"large language models",
"ai-assisted code generation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4b847aab94439408729ed6a037a712385b23d9ad4401f4b3d53a66aa7a981c60",
"md5": "afc7c39c9a0d57bcba8203dea24afa03",
"sha256": "f79034c2d978720966ae55e645735291ccbe4a8200dd1e98246d8c48f7a1e278"
},
"downloads": -1,
"filename": "gpt_synthesizer-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "afc7c39c9a0d57bcba8203dea24afa03",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 19603,
"upload_time": "2023-10-24T19:26:45",
"upload_time_iso_8601": "2023-10-24T19:26:45.671099Z",
"url": "https://files.pythonhosted.org/packages/4b/84/7aab94439408729ed6a037a712385b23d9ad4401f4b3d53a66aa7a981c60/gpt_synthesizer-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f54cf3e6f483c31a703df18beb2e9eefb82890ecae94f0ee7f857c7fe4d62ee6",
"md5": "beb6a22de74a9902b64464851ec49141",
"sha256": "03fcaa5b2b84c3646548c963c87dff1baeb97bfbb270fd8e8b000b6ca0cb3438"
},
"downloads": -1,
"filename": "gpt-synthesizer-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "beb6a22de74a9902b64464851ec49141",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 18500,
"upload_time": "2023-10-24T19:26:47",
"upload_time_iso_8601": "2023-10-24T19:26:47.211676Z",
"url": "https://files.pythonhosted.org/packages/f5/4c/f3e6f483c31a703df18beb2e9eefb82890ecae94f0ee7f857c7fe4d62ee6/gpt-synthesizer-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-24 19:26:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "RoboCoachTechnologies",
"github_project": "GPT-Synthesizer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gpt-synthesizer"
}