InitialGPT
Introduction
InitialGPT is a ChatGPT-enhanced tool for automaticlly generating initialization data of prototype to support rapid requirements validation. The benefits of InitialGPT are as follows:
-
Automatic Generating Initialization Data of Prototype. InitialGPT can automatically refactor the prototype generated by RM2PT to support generating the initial data of prototypes.
-
Automatic Data Prompts Generation for ChatGPT. We propose a method for automatically generating prompts for large language models from requirement models, which can be used to generate initial data for prototypes.
-
More effiency for requirement validation. Compared with the original prototype generated from RM2PT and InputGen, the enhanced prototype can automatically generate substantial and reasonable initial data of the prototype, this will boost the validation process.
The video cast its feature is listed as follows (Youtube):
InitialGPT Installation
Prerequest
InitialGPT is an advanced feature of RM2PT. We recommend you to use InitialGPT in RM2PT. If you don’t have RM2PT, download here.
Installation
Click here to download InitialGPT. Follow the steps below to install.
InitialGPT Tutorial
Prerequest
In order to generate the prototype initial data, you need a requirement model, the RM2PT project. For creating or importing a RM2PT project,you can see the tutorial here. We recommend importing RM2PT projects from Git, which is avaliable at CaseStudies. The tutorial is here.
Input of InitialGPT — Requirements Model
The input to InitialGPT is a UML requirements model with OCL constraints. The model includes: a conceptual class diagram, a use case diagram, system sequence diagrams, contracts of and system operations.
-
A conceptual class diagram: A conceptual class diagram is a concept-relation model, which illustrates abstract and meaningful concepts and their relations in the problem domain, in which the concepts are specified as classes, the relations of the concepts are specified as the associations between the classes, and the properties of the concepts are specified as the attributes of the classes.
-
A use case diagram: A use case diagram captures domain processes as use cases in terms of interactions between the system and its users. It contains a set of use cases for a system, actors represented a type of users of the system or external systems that the system interacts with, the relations between the actors and these use cases, and relations among use cases.
-
System sequence diagrams: A system sequence diagram describes a particular domain process of a use case. It contains the actors that interact with the system, the system and the system events that the actors generate, their order, and inter-system events. Compared with the sequence diagram in design models, a system sequence diagram treats all systems as a black box and contains system events across the system boundary between actors and systems without object lifelines and internal interactions between objects.
-
Contracts of system operations: The contract of a system operation specifies the conditions that the state of the system is assumed to satisfy before the execution of the system operation, called the pre-condition and the conditions that the system state is required to satisfy after the execution (if it terminated), called the post-condition of the system operation. Typically, the pre-condition specifies the properties of the system state that need to be checked when system operation is to be executed, and the postcondition defines the possible changes that the execution of the system operation is to realize.
Input of InitialGPT — Prompt Template
A good prompt template approach is the key to data generation, which can effectively prompt the large language model to generate data so as to better utilize the performance of the large model.
Since ChatGPT has the limitation of data response time and length for the api usage, we have designed two sets of templates for ChatGPT, which are used for generating general amount of data and large amount of data respectively.
General Prompt Template
The general prompt template consists of three main components. The Initial Information Prompt is a well-tested general prompt, the Input section consists of user interaction information and domain entity information automatically generated by the requirements model, and the Output section specifies the format of the output data.
Large Prompt Template
The Large Data Amount Prompt Template is similar to the General Prompt Template, but is generated for a single entity, 40 at one time, and post-processed until the final required number is fully generated.
1) Generate a prototype from the requirement model
After you import a requirements model, first, we use the RM2PT to generate a prototype from the requirements model by right click on cocome.remodel
-> RM2PT
-> OO Prototype
-> ` Generate Desktop Prototype`
2) Run the InitialGPT tool to refactor and enhance the prototype
after you generate a prototype, we use the InitialGPT to refactor the prototype from the requirements model by right click on cocome.remodel
-> RM2PT-dev
-> InitialGPT
, and update the project.
3) The third step is to run the refactored prototype
Run the refactored prototype to validate the requirements by right click on COCOMEPrototype
-> pom.xml
-> run
-> maven build
.
4) Generate the initial data to validate the requirements.
The Output of InitialGPT
After automatically refactoring and enhancing the generated prototype by the tool InitialGPT, the enhanced prototype contains two advantages as follows:
-
Automatic initial data generation of prototypes. The enhanced prototypes can automatically generate large amounts of prototype initial data for requirements validation via a large language model.
-
Automatic Data Prompts Generation for ChatGPT. A method is proposed to automatically generate prompts for large language models based on the requirement model, aiming to prompt GPT-3.5 to generate more compliant, reasonable, and effective data that satisfies the requirements.
For example
In the system status, Click on the initial data generation button and in the data generation screen
-
First select the model, currently ChatGPT’s gpt-3.5-turbo is used, other large language models will be added later.
-
Click on Generate Settings and then choose whether to use a proxy on the pop-up page. If you do, please delete “no” and fill in your own proxy port.
-
Fill in your openai key.
-
here you can set the number of entities we want to generate for each entity. Also, you can add as many prompts as you want to the note box.
-
After the settings have been made, click on the Generation button and it will be generated automatically. Here you can see the time corresponding to the number of generated entities we have tested.
-
After successful generation, you can view the generated entities in the table view or yaml view, and you can also modify them to better match your requirements.
-
Finally, click on the load data button to import the initial data into the prototype.
-
The generated data will also be saved and can be imported again by clicking the loadfile button.
For more details, please see CaseStudies.