What is GDF?
This documentation introduces a human-centric development framework called the Generative Development Framework (GDF). The GDF consists of nineteen knowledge areas encompassing cognitive strategies, techniques, and patterns to facilitate more efficient use of generative technologies, with an emphasis on security, risk management, and ethical considerations.
The GDF is designed to be broadly applicable across different use cases and generative models. While examples are provided for specific contexts, the framework remains adaptable to various domains. Users are encouraged to customize the prompts and processes to meet their specific needs.
GDF is intended to be used selectively, with practitioners adopting only the knowledge areas and processes that are productive for their teams. Successful implementation of GDF should involve continuous evaluation and improvement, adjusting the framework to fit organizational needs and to reflect ongoing learning.
For new users and developers unfamiliar with generative technologies, it is highly recommended to read through the entire documentation to gain a comprehensive understanding of the concepts and associated terminology. For those with experience, the framework may be referenced on an as-needed basis.
Origins of GDF
The Generative Development Framework (GDF) has emerged from years of experience in various domains. With the rapid evolution of generative AI in recent months, these technologies have reshaped work processes, prompting new methodologies to effectively integrate AI-driven techniques. GDF represents a distillation of these learnings, documenting both effective and ineffective practices.
Leveraging generative AI has fundamentally altered how individuals engage with their work. It has provided opportunities to prioritize quality and innovation, reducing the need to manually perform repetitive tasks or spend excessive time troubleshooting or researching implementation details. Furthermore, the conversational nature of generative AI tools has facilitated a collaborative dynamic, enabling more engaging workflows and sparking more frequent “aha” moments through interactive dialogue rather than passive consumption of static content.
While the potential of these generative tools is exciting, successful implementation requires specific considerations to effectively manage and mitigate new risks introduced by generative technologies. By the end of this documentation, users should have gained the foundational knowledge needed to implement generative tools, manage associated risks, and leverage these technologies to enhance workflows.
Scope of GDF
The GDF aims to provide a comprehensive framework for understanding the integration of generative technologies across various organizational teams, with particular attention to managing onboarding processes for individuals, promoting effective use of generative tools, and addressing the associated risks. The framework is not limited to a specific field or development role but instead promotes a holistic view of generative technology adoption, emphasizing ethical considerations, secure implementation, and strategic onboarding processes that address the diverse needs of an enterprise.
Why is GDF needed?
Generative AI tools like ChatGPT are extremely intuitive due to their conversational nature. It raises the question, why does there need to be a methodology or framework?
To answer this, it is important to have the perspective that computing is just a collection of calls and responses, and language is the medium that allows call and response to communicate.
Assume you go to a customer service counter and place an item on the desk. You could say the following things (the call):
Say Nothing
I want to buy this item
I want to return this item
I want to buy this item with my American Express, packaged in cardboard box, and delivered to 100 Little St. Big City CO via UPS Next-Day shipping at 3pm EST.
Quiero comprar este artículo con mi American Express, empaquetado en una caja de cartón y entregado en 100 Little St. Big City CO a través de UPS Next-Day shipping a las 3:00 p. m. EST.
Based on what you say and what is understood by the person standing behind the counter, you could get a series of responses or a single response. The same is true with a large language model and by understanding what a large language models knows and how it understands requests will allow you to more effectively communicate with it.
The purpose of GDF is not to slow down teams or individuals with yet another process, but to simply provide patterns and principles that can be implemented to whatever extent is efficient and secure.
What is generative AI, large language models, and ChatGPT?
Before discussing how using GDF can improve processes, it is important to have a good understanding of what generative AI and large language models (LLMs) are.
What is Generative AI?
Generative AI is a type of artificial intelligence that involves the use of machine learning algorithms to generate new and original content, such as images, videos, text, or music. Unlike traditional machine learning algorithms, which are typically used to classify or predict data based on existing patterns, generative AI is used to create new patterns or data.
Generative AI typically involves the use of deep learning models, such as Generative Adversarial Networks (GANs) or Variational Autoencoders (VAEs). These models are trained on large datasets of existing content and are then able to generate new content that is similar in style or structure to the original data.
What are Large Language Models?
Large language models are artificial intelligence models that are designed to process and generate human language. They use deep learning algorithms and neural networks to analyze and understand language and are trained on large datasets of text to learn patterns and structures in human language.
Large language models can be used for a wide range of natural language processing tasks, including text classification, sentiment analysis, machine translation, question answering, and conversational systems. They can also generate new text that is similar in style or structure to the input text, making them useful for applications such as content creation, text summarization, and language generation.
One of the key advantages of large language models is their ability to learn from vast amounts of data, allowing them to understand and generate human language at a scale that was previously impossible. However, the training and development of large language models also require significant computing resources and energy, which can be a barrier to entry for many users and organizations.
How Machine Learning Works
Consider the words "kind of works like this." A language model would take this sentence along with billions of other text materials and break it down into tokens:
KIND
KIND OF
KIND OF WORKS
WORKS LIKE
WORKS LIKE THIS
The model processes these tokens and assigns weights based on context. For instance, if the training data includes explanations or high-level descriptions, the model may determine that the phrase "kind of works like this" has a high probability of being accurate in similar contexts. By processing extensive amounts of text, generative models learn to produce sophisticated, human-like responses that can be useful in a variety of scenarios.
This is an extremely simplistic view of machine learning and how ChatGPT works. The mathematical computation behind what will be included in a response is complex and is not a simple comparison of token weights.
Below is a flow that visualizes a typical machine learning process.
Data Collection: The first step in any machine learning pipeline is gathering a large and diverse dataset. For text-based models, this involves collecting text data from a wide range of sources, ensuring the dataset is both comprehensive and representative. This diversity allows the model to generalize effectively across different types of inputs and tasks but also introduces challenges, such as managing varying levels of quality and addressing potential biases in the data.
Data Cleaning: After collection, the data undergoes cleaning to remove irrelevant, noisy, or incorrect information. This step is essential to ensure the model learns from valuable and meaningful patterns rather than being misled by errors, redundant data, or inappropriate content. The goal is to reduce the dataset’s complexity, making it easier for the model to focus on significant and consistent signals.
Data Preprocessing: Preprocessing prepares the raw data for the model by transforming it into a suitable format. This typically involves tokenization (breaking down text into smaller units), numerical encoding (converting tokens into vectors or embeddings), and splitting the data into training, validation, and test sets. These steps ensure that the model can process the data effectively and that performance evaluations are unbiased, allowing for a robust assessment of the model’s capabilities.
Training: During training, the model learns patterns and structures in the data using a deep learning architecture. This process involves optimizing a mathematical objective (e.g., minimizing a loss function) through iterative updates. The model learns to make increasingly accurate predictions by adjusting its parameters based on the patterns it detects in the data. This phase is computationally intensive, often requiring powerful hardware and efficient algorithms to handle the vast amounts of data.
Model Tuning: Once the model has been trained, fine-tuning adapts it to specific tasks, such as text classification or language translation. Fine-tuning helps the model perform well on particular problems by using task-specific datasets and objectives. This step increases the model's utility by making it versatile across a variety of use cases, building on the general patterns learned during the initial training phase.
Deployment: After achieving satisfactory performance, the model is deployed into real-world applications. This could involve integrating the model into cloud-based services, mobile applications, or APIs. During deployment, practical considerations such as latency, scalability, and reliability come into play to ensure the model can serve predictions efficiently under varying loads and user demands.
Challenges in Model Development and Application:
In developing machine learning models, especially large-scale models trained on diverse text corpora, variability in data quality is a common challenge. Text data collected from various sources may contain inaccuracies, inconsistencies, or less-than-optimal patterns. This presents difficulties when applying models in real-world scenarios, where reliable outputs are critical.
A key consideration is that not all data sources are equally trustworthy or precise, which means the model might learn both useful and suboptimal patterns. This reflects the balance between leveraging the broad scope of available data and mitigating the risks associated with potential inaccuracies. Despite these challenges, the sheer volume and diversity of data generally allow models to learn robust and useful patterns that perform well across a wide range of tasks.
Even when models generate outputs that are valid or accurate, these outputs may not always be optimal. For instance, in domains such as content generation, problem-solving, or automated decision-making, the outputs may work in a technical sense but could be improved in terms of efficiency, correctness, or alignment with specific standards. Therefore, while machine learning models can provide valuable assistance in many domains, human oversight remains crucial. Reviewing, validating, and improving outputs ensures that the final results are both reliable and suited to the specific context in which they are applied.
In practice, this means that machine learning models are powerful tools, but they should be used with care. The integration of these models into larger workflows requires attention to detail, including thorough evaluation and quality assurance, to ensure they meet the desired performance and safety standards. This combination of advanced machine learning techniques and diligent oversight allows models to be applied effectively in real-world settings, addressing both broad and specialized challenges.
Getting set up with ChatGPT
Before we get into the documentation, be sure to have a ChatGPT account set up.
Go to chat.openai.com and create an account.
Once you have created your account and verified your email you will be in the ChatGPT console.
At the bottom of the screen you will see a text input to insert text and on the top left you will have a new chat button. To generate a response type in the input text and click send. GPT will generate a response back to you.
GPT keeps a memory of the questions and responses in any given chat. As an example, let’s ask GPT to
Then ask it to
If you're seeing responses, then you have successfully signed up and ChatGPT is working as expected. The prompts and concept above is extremely relevant to us as developers when we are constantly referring to previously generated items asking for help on exceptions or conversions from one language, library, or component to another. The concept of memory in a large language model is called "prompt context" and is one of 5 prompting concepts we will cover in the documentation.
What are the GDF knowledge areas?
Like any tool or application, knowing how to efficiently use it can drastically affect productivity. Take an image creation application for example, just about anybody can bring it up, start clicking on brushes, and draw a picture. But a vision, expertise in layers, transformations, cutting, selection, and doing it all efficiently is what allows artists to create works of art productively.
When we think about AI generated content, we want to consider the GDF knowledge domains:
Context Management
Security Management
Risk Management
Adoption
These knowledge areas do not have any secret meanings, they are very literal. I believe the best way to think about them in the context of software development is by putting “Using AI for code” in front.
For example:
Using AI for code ideation
Below are detailed prompt examples examples with references to a fictional application I will be be building throughout the documentation, which will be a bicycle rental application.
If you are unfamiliar with programming, many of the prompts below may be difficult to understand. By the end of this course you should have a better understanding of these terms and have the right troubleshooting knowledge to resolve any issues you may run into.
What would I need to build a bicycle rental application?
What languages are used to build a mobile application?
What languages are used to build a web application?
Are there any languages that would allow me to build on both web and mobile at the same time?
What is react?
What is swift?
What is kotlin?
What are the main parts of an app layout?
What libraries are used to build an app interface in react?
What software do I need to create a react app on my computer?
How do I run a react app on my computer?
How to install react in visual studio code?
How to install node.js?
Create a code sample in react that renders a navigation bar relevant to things a bicycle renting customer might want to do?
Create a code sample in react that renders a home page layout to rent a bicycle.
Use Chakra UI as the UI library in the code above instead of material-ui.
Use NextJS router for routing
Convert the navigation bar into a drawer navigation
Convert the code sample to NextJS
Convert the code to angular js.
Replace the navigation items in the NavBar component with the following items
Replace the body with some example components for a bicycle renting application
Create a code sample that would get a list of bicycles and their locations
Import the above code sample into Home component we created earlier to load in the bicycle data.
Create new react components using chakra ui for the components you created in the body earlier
Separate the navigation items into a separate file with a callout to get the data.
Merge the NavBar component and Logo component into a single NavBar component
Consolidate the processing of the bicycle data with the function to transform the date into hh:mm MM/DD.
create a layout in next.js for header, body, and footer. use this layout to create a contact page.
Change the styling of the nav bar to be more like an apple navbar.
Make the navigation dynamic and mobile friendly.
How do I upload a react app on the web?
How do I point a domain name to a react app?
Remove any unnecessary comments from the code.
Optimize the parsing of the data to be less redundant.
What you should expect out of GDF
The prospect of AI creating and delivering a production grade application from a list of features or is an alluring prospect, but is currently not possible. As AI evolves and the scope of it's capabilities extend past what it is today, human direction and intervention will inevitably carry more value. Organic decisions made outside of possible outcomes in a model will be the differentiation between new and old ideas. To a greater degree, expertise will be defined by those who understand the innerworkings of what is generated, how it's generated, and most importantly what it means.
GDF does not provide the capability to instantly create an application, but instead provides processes that accelerate and improve the development process through patterns and discussion of different generative AI perspectives. However, these knowledge areas can be applied and systematically iterated upon to provide this capability to an extent. This concept is called . To be clear, developers should fully expect to think critically, think creatively, understand programming concepts, read documentation, and troubleshoot issues.