{"id":18944,"date":"2022-03-03T15:23:53","date_gmt":"2022-03-03T23:23:53","guid":{"rendered":""},"modified":"2025-06-11T07:50:42","modified_gmt":"2025-06-11T14:50:42","slug":"behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps","status":"publish","type":"post","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/","title":{"rendered":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Last year, we announced the public preview of <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/introducing-power-apps-ideas-ai-powered-assistance-now-helps-anyone-create-apps-using-natural-language\/\">Power Apps Ideas<\/a>, which enables Power Apps makers to take advantage of Microsoft AI technologies that make it easy to write <a href=\"https:\/\/docs.microsoft.com\/en-us\/power-platform\/power-fx\/overview\">Power Fx<\/a> formulas with no-code. In this article, we\u2019re going to go behind the scenes to share what it took for the Power Apps engineering team to implement Power Apps Ideas and unveil some of the complexity that\u2019s happening under the covers to support this user experience.<\/p>\n<p>Makers often know <em>what<\/em> they are trying to accomplish when they set out to write a formula (e.g., \u201cshow accounts created in the last week\u201d), but it\u2019s not always clear exactly <em>how<\/em> to do that. Now, with <a href=\"https:\/\/blogs.microsoft.com\/ai\/from-conversation-to-code-microsoft-introduces-its-first-product-features-powered-by-gpt-3\/\">natural language to Power Fx<\/a>, makers can express what they want in simple language and the Power Fx formula will be generated for them.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18945\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\" alt=\"\" width=\"1458\" height=\"854\" \/><br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=zbjKdzavPHk&amp;list=PL8b8RgcLYAyqDb3hgrVOs-xICPtorzSiK\">Let Power Apps Write the Power Fx For You! &#8211; Power CAT Live &#8211; YouTube<\/a><\/p>\n<p>With natural language to Power Fx, makers of all skill levels can benefit from the ability to write formulas with ease and accessing the full spectrum of features available in Power Apps. In this article, let\u2019s take a closer look at the magic that happens under the hood.<\/p>\n<h2>Behind the Scenes<\/h2>\n<p>The core technology powering this feature is\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/GPT-3\">GPT-3<\/a> (Generative Pre-trained Transformer 3), a sophisticated language model that uses deep learning to produce human-like text.\u00a0GPT-3 is now available in preview by invitation as part of Microsoft\u2019s <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/cognitive-services\/openai-service\/\">Azure OpenAI Service<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18946\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/NL2PowerFx-Architecture.png\" alt=\"\" width=\"1486\" height=\"902\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/NL2PowerFx-Architecture.webp 1486w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/NL2PowerFx-Architecture-300x182.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/NL2PowerFx-Architecture-1024x622.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/NL2PowerFx-Architecture-768x466.webp 768w\" sizes=\"auto, (max-width: 1486px) 100vw, 1486px\" \/><\/p>\n<p>In addition, there are several other key components involved in the process. These core pieces are part of the Power Platform AI Services (hosted in <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/service-fabric\/\">Azure Service Fabric<\/a>), which provides a shared infrastructure for Power Platform products that want to leverage AI capabilities like GPT-3.<\/p>\n<p>This article is going to focus specifically on Power Apps and the conversion of natural language to Power Fx, but in future articles, we will also share how other teams in Power Platform are using the same infrastructure to incorporate AI features into their products.<\/p>\n<p>Let\u2019s walk through the process in detail using a concrete example.<\/p>\n<h3>Sample Use-Case<\/h3>\n<p>Suppose you have a gallery that displays records from the table (<span style=\"color: #ed7d31\">Customers<\/span>) and a text input control (<span style=\"color: #4472c4\">TextSearchBox1<\/span>). You want to take the text from that input control and search the records in your gallery by a specific column (<span style=\"color: #70ad47\">Full Name<\/span>). But how exactly do you do that?<\/p>\n<p>With natural language to Power Fx, you can select the gallery control, click the \u201cIdeas\u201d pane on the right, type in what you are trying to do, then click \u201cGet ideas\u201d.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Input:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">search <span style=\"color: #ed7d31\">&#8216;Customers&#8217;<\/span> by <span style=\"color: #70ad47\">&#8216;Full Name&#8217;<\/span> using <span style=\"color: #4472c4\">&#8216;TextSearchBox1&#8217;<\/span><\/span><\/span><\/p>\n<h3>Client-Side Input<\/h3>\n<h4>Step #1: Gathering the Input and Context<\/h4>\n<p>After clicking \u201cGet ideas\u201d, the natural language query, along with the Power Apps context, is sent to Power Platform AI Services for pre-processing. The Power Apps context provides important information that contextualizes the natural language query and helps generate more accurate formulas.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"156\"><strong>Natural Language<\/strong><\/td>\n<td width=\"468\"><span style=\"font-family: Consolas\">search <span style=\"color: #ed7d31\">\u2018Customers\u2019<\/span> by <span style=\"color: #70ad47\">\u2018Full Name\u2019<\/span> using <span style=\"color: #4472c4\">\u2018TextSearchBox1\u2019<\/span><\/span><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" width=\"156\"><strong>Power Apps Context<\/strong><\/td>\n<td width=\"468\"><span style=\"font-family: Consolas\">Controls: [{<br \/>\nName: \u201c<span style=\"color: #4472c4\">TextSearchBox1<\/span>\u201d,<br \/>\nType: \u201cTextInput\u201d<br \/>\n}]<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"468\"><span style=\"font-family: Consolas\">Tables: [{<br \/>\nName: \u201c<span style=\"color: #ed7d31\">Customers<\/span>\u201d,<br \/>\nColumns: [{<br \/>\nDataType: \u201cText\u201d,<br \/>\nDisplayName: \u201c<span style=\"color: #70ad47\">Full Name<\/span>\u201d,<br \/>\nLogicalName: \u201cfullname\u201d<br \/>\n}]<br \/>\n}]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In the example above, we can see that <span style=\"color: #ed7d31\">Customers<\/span> is the name of a table, <span style=\"color: #70ad47\">Full Name<\/span> is the name of a column in that table, and <span style=\"color: #4472c4\">TextSearchBox1<\/span> is the name of a text input control.<\/p>\n<h3>Pre-Processing<\/h3>\n<h4>Step #2: Filtering the Content<\/h4>\n<p>The first step in the pre-processing stage involves content filtering. In accordance with Microsoft\u2019s principles of <a href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/ai\/responsible-ai\">Responsible AI<\/a>, the content is filtered to ensure that the request does not contain any potentially harmful or offensive content. We use two scoring mechanisms for content filtering:<\/p>\n<ol>\n<li><em>Hate speech detection<\/em> \u2013 This model, hosted in Azure Machine Learning, is trained to identify inappropriate content (e.g., profanity, violence, hate speech, etc.); it will return a score from 0 to 1 indicating the likelihood that the text contains unsafe content.<\/li>\n<li><em>Bad words blocklist<\/em> \u2013 This list contains words that are deemed offensive or vulgar; if a word in this blocklist is found in the text, it will return a score of 1.<\/li>\n<\/ol>\n<p>If any profanity or inappropriate content is identified, the process is immediately terminated.<\/p>\n<h4>Step #3: Masking the Input<\/h4>\n<p>Once the content has been filtered, the next step is to mask the input by removing details that are irrelevant to the formula pattern, keeping only the essential information. In other words, whether a control is named \u201cTextSearchBox1\u201d or \u201cMyTextBox\u201d does not matter; what matters is that the control is a text input control with data type string. This is necessary because the GPT-3 model is trained with masked data, so the natural language input string will also need to undergo the same type of transformation to replicate the type of data that the model has been trained on.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Input:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">search <span style=\"color: #ed7d31\">\u2018Customers\u2019<\/span> by <span style=\"color: #70ad47\">\u2018Full Name\u2019<\/span> using <span style=\"color: #4472c4\">\u2018TextSearchBox1\u2019<\/span><\/span><\/span><\/p>\n<p>Based on the Power Apps context that is sent along with the natural language query, we know that <span style=\"color: #ed7d31\">Customers<\/span> is the name of a table, Full Name is the name of a column with text as the data type, and TextSearchBox1 is the name of a text input control.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Output:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">search <span style=\"color: #ed7d31\">@tn@0<\/span> by <span style=\"color: #70ad47\">@dn@0 [ @dn@0, @ln@0, Str ]<\/span> using <span style=\"color: #4472c4\">@ti@0 [ Str ]<\/span><\/span><\/span><\/p>\n<p>After undergoing the masking process, the unimportant details (e.g., names of tables, columns, and controls) have been removed, but the key information is still present. This significantly reduces the amount of data required to train the model since the pattern is what is actually important to capture \u2013 not all the possible variations in naming.<\/p>\n<h3>GPT-3 Model<\/h3>\n<h4>Step #4: Calling the GPT-3 Model<\/h4>\n<p>Now that the pre-processing stage is complete, we are ready to send the input to our GPT-3 model for inference. We have a GPT-3 model specifically fine-tuned for this scenario (more details below). We pass the request to the Azure OpenAI Proxy, which directly talks to Microsoft\u2019s <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/cognitive-services\/openai-service\/\">Azure OpenAI Service<\/a>. From here, it will call our GPT-3 model (hosted in <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/machine-learning\/\">Azure Machine Learning<\/a>) to obtain the output.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Input:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">search <span style=\"color: #ed7d31\">@tn@0<\/span> by <span style=\"color: #70ad47\">@dn@0 [ @dn@0, @ln@0, Str ]<\/span> using <span style=\"color: #4472c4\">@ti@0 [ Str ]<\/span><\/span><\/span><br \/>\n<span style=\"padding-left: 27px\"><strong>Output:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">Search(<span style=\"color: #ed7d31\">@tn@0<\/span>, <span style=\"color: #4472c4\">@ti@0.Text<\/span>, <span style=\"color: #70ad47\">\u201c@ln@0\u201d<\/span>)<\/span><\/span><\/p>\n<p>But how exactly does GPT-3 convert the natural language query to a Power Fx formula? Let\u2019s dive deeper to understand more about the progressions in the GPT-3 model that powers this feature.<\/p>\n<h6><strong>Fine-Tuning GPT-3 for Power Fx<\/strong><\/h6>\n<p>GPT-3 can perform a wide variety of natural language tasks, but fine-tuning the vanilla GPT-3 model can yield far better results for a specific problem domain. In order to customize the GPT-3 model for Power Fx, we compiled a dataset with examples of natural language text and the corresponding formulas. These examples were then used to train the model to understand and recognize Power Fx syntax and patterns.<\/p>\n<h6><strong>Building the Training Dataset<\/strong><\/h6>\n<p>Originally, we started off by scraping examples from public documentation and providing manual examples. However, the quantity of training data proved to be insufficient, so we developed an auto-generator to augment our training set. Given a specific pattern (e.g., \u201cfilter X by Y and Z\u201d), the data generator can produce many examples with minor variations in the masked data and Power Apps context, which significantly increases the size of the training dataset.<\/p>\n<h6><strong>Using the OpenAI Codex Model<\/strong><\/h6>\n<p>In August 2021, OpenAI announced the introduction of <a href=\"https:\/\/openai.com\/blog\/openai-codex\/\">OpenAI Codex<\/a>, an AI model specifically designed for generating code from natural language. A descendant of GPT-3, Codex understands both natural language and billions of lines of source code from public repositories. This is the model that powers <a href=\"https:\/\/copilot.github.com\/\">GitHub Copilot<\/a>, which aims to be an AI assistant for writing code. Our initial AI model was based on the vanilla GPT-3 model, fine-tuned for Power Fx. Now, we have switched to using the new Codex model and have been training it to gain a deeper comprehension of Power Fx.<\/p>\n<h6><strong>Leveraging LoRA for GPT-3<\/strong><\/h6>\n<p>Given the enormous size of the pre-trained GPT-3 model, which includes 175 billion machine learning parameters that can be fine-tuned, it can become increasingly expensive to train and deploy these large-scale models. To tackle this problem, we use LoRA: Low-Rank Adaptation of Large Language Models, a new method for training GPT-3.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18948\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table4.png\" alt=\"\" width=\"1061\" height=\"513\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table4.webp 1061w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table4-300x145.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table4-1024x495.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table4-768x371.webp 768w\" sizes=\"auto, (max-width: 1061px) 100vw, 1061px\" \/><\/p>\n<p>As we can see in the table above, despite having far fewer trainable parameters compared to the fully fine-tuned model, LoRA matches or even exceeds the performance baseline across all three validation datasets.<\/p>\n<p>Compared to traditional methods, LoRA provides two distinct advantages:<\/p>\n<ol>\n<li><em>Efficiency and reduced costs for training<\/em> \u2013 Since the number of trainable parameters can be drastically reduced without compromising the accuracy of the model, training new models becomes much more efficient. This reduces both the storage and hardware requirements: using the 175B model as an example, instead of needing 64 GPUs, you can fine-tune using LoRA with only 16.<\/li>\n<li><em>Performance improvements for inference<\/em> \u2013 Traditional methods of fine-tuning involve adding custom layers to the pre-trained model to fit the task at hand. These adapter layers, or external modules, are typically added in a <em>sequential<\/em> manner, which introduces inference latency. LoRA differs from these classical methods since it can be viewed as adding external modules in a <em>parallel<\/em> manner; these additional modules can be merged back into the base modules seamlessly, thereby ensuring that no additional inference latency is introduced.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18949\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table1.png\" alt=\"\" width=\"1059\" height=\"407\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table1.webp 1059w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table1-300x115.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table1-1024x394.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Table1-768x295.webp 768w\" sizes=\"auto, (max-width: 1059px) 100vw, 1059px\" \/><\/p>\n<p>As we can see in the table above, for small batch sizes, the inference latency introduced by adapter layer designs can be quite significant compared to LoRA.<\/p>\n<h6><strong>Verifying the Model Quality<\/strong><\/h6>\n<p>In order to ensure that our GPT-3 model is performing as expected, we have a custom training pipeline that regularly runs against the model with thousands of examples to verify that the results are correct, thus acting as an early detection system if there are any anomalies in the model behavior.<\/p>\n<h3>Post-Processing<\/h3>\n<h4>Step #5: Filtering the Content<\/h4>\n<p>After we get the results from GPT-3, the post-processing stage begins. Just like in the pre-processor, the first step is to filter the content. Again, we use the same mechanisms: checking the results against the hate speech detection model in Azure and verifying that there are no instances of words in the blocklist. Any inappropriate results are filtered out; the remaining ones proceed to the next step.<\/p>\n<h4>Step #6: Repairing the Formula<\/h4>\n<p>One observation we made early on was that a large number of formulas generated by GPT-3 were <em>almost<\/em> correct, but there may have been one or two minor mistakes, such as a missing parenthesis or using double instead of single quotation marks.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"420\"><strong>Formula (Before Repair)<\/strong><\/td>\n<td width=\"204\"><strong>Issue<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"420\"><span style=\"font-family: Consolas\">Filter(@tn@0, &#8216;@dn@0&#8217; &lt; @dp@0.SelectedDate)<span style=\"background-color: yellow\">))<\/span><\/span><\/td>\n<td width=\"204\">Contains extra parentheses<\/td>\n<\/tr>\n<tr>\n<td width=\"420\"><span style=\"font-family: Consolas\">Filter(@tn@1, @dn@1 in @dd@1.SelectedText.Value)<\/span><\/td>\n<td width=\"204\">Missing single quotations<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Filtering out these \u201calmost there\u201d formulas meant that there were often no results generated, which is not ideal. To solve this problem, we repair these formulas by performing simple operations, such as balancing the parentheses or using the correct quotation marks in that context.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"420\"><strong>Formula (After Repair)<\/strong><\/td>\n<td width=\"204\"><strong>Operation<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"420\"><span style=\"font-family: Consolas\">Filter(@tn@0, &#8216;@dn@0&#8217; &lt; @dp@0.SelectedDate)<\/span><\/td>\n<td width=\"204\">Removed extra parentheses<\/td>\n<\/tr>\n<tr>\n<td width=\"420\"><span style=\"font-family: Consolas\">Filter(@tn@1, <span style=\"background-color: yellow\">&#8216;<\/span>@dn@1<span style=\"background-color: yellow\">&#8216;<\/span> in @dd@1.SelectedText.Value)<\/span><\/td>\n<td width=\"204\">Added single quotations<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>By repairing the formulas from GPT-3, we significantly increase the number of valid results produced.<\/p>\n<h4>Step #7: Un-masking the Output<\/h4>\n<p>In the pre-processing stage, we masked the input data; now, we have to undergo the reverse transformation and un-mask the output. Using the information from the Power Apps context, we fill the names and details of the tables, columns, and controls back into the formula.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Input:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">Search(<span style=\"color: #ed7d31\">@tn@0<\/span>, <span style=\"color: #4472c4\">@ti@0.Text<\/span>, <span style=\"color: #70ad47\">\u201c@ln@0\u201d<\/span>)<\/span><\/span><br \/>\n<span style=\"padding-left: 27px\"><strong>Output:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">Search(<span style=\"color: #ed7d31\">Customers<\/span>, <span style=\"color: #4472c4\">TextSearchBox1.Text<\/span>, <span style=\"color: #70ad47\">\u201cfullname\u201d<\/span>)<\/span><\/span><\/p>\n<h4>Step #8: Checking the Syntax<\/h4>\n<p>In order to avoid returning an incorrect formula, we validate that the Power Fx formula is indeed correct, thus filtering out the invalid results.<\/p>\n<h4>Step #9: Generating a Description<\/h4>\n<p>For each formula we output, we also generate a natural language description to accompany it. This brief description helps to de-mystify the results and make sense of what the formula is actually doing. If the output contains more than one formula, this helps to distinguish between formula A vs. formula B.<\/p>\n<p><span style=\"padding-left: 27px\"><strong>Input:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\">Search(<span style=\"color: #ed7d31\">Customers<\/span>, <span style=\"color: #4472c4\">TextSearchBox1.Text<\/span>, <span style=\"color: #70ad47\">\u201cfullname\u201d<\/span>)<\/span><\/span><br \/>\n<span style=\"padding-left: 27px\"><strong>Output:<\/strong> <span style=\"font-family: Consolas;background-color: #f8f9fa;padding: 8px 12px\"><span style=\"color: #ed7d31\">Customers<\/span> where the text in <span style=\"color: #4472c4\">TextSearchBox1<\/span> appears in <span style=\"color: #70ad47\">fullname<\/span><\/span><\/span><\/p>\n<p>The description generator takes the input formula and creates an abstract syntax tree that represents the structure of the formula. Then, it will traverse the tree and generate a short description for each node. The final result is the full natural language description of the formula.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18950\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Abstract-Syntax-Tree.png\" alt=\"\" width=\"822\" height=\"382\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Abstract-Syntax-Tree.webp 822w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Abstract-Syntax-Tree-300x139.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Abstract-Syntax-Tree-768x357.webp 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/p>\n<h3>Client-Side Output<\/h3>\n<h4>Step #10: Displaying the Results<\/h4>\n<p>Finally, after the post-processing stage is finished, the resulting Power Fx formulas and natural language descriptions are displayed in the frontend. The user can simply click \u201cApply\u201d to use the formula and see the results. Going back to the sample use-case we started with, we can see that we have successfully built a search functionality for records in the gallery. With the help of Power Apps Ideas, writing Power Fx formulas has never been easier!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-18951\" src=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Final-Result.png\" alt=\"\" width=\"288\" height=\"384\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Final-Result.webp 288w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Final-Result-225x300.webp 225w\" sizes=\"auto, (max-width: 288px) 100vw, 288px\" \/><\/p>\n<h3>Responsible Innovation<\/h3>\n<p>Our commitment to uphold Microsoft\u2019s <a href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/ai\/responsible-ai\">Responsible AI<\/a> principles and develop AI ethically has been a driving factor in the development of the natural language to Power Fx feature. That means taking a people-centered approach and designing features in a way that puts the user in the driver\u2019s seat at all times.<\/p>\n<p>Power Apps Ideas uses AI technologies to help the user by showing suggested formulas based on the natural language query, but the decision to click and apply the formula ultimately rests with the user, who is always in control.<\/p>\n<p>In addition to producing a Power Fx formula, we also generate a natural language description for each result, which increases transparency and makes the results produced by the AI system understandable. Furthermore, to ensure that our AI systems perform safely, content filtering takes place in both the pre- and post-processor stage to mitigate the risk of producing inappropriate results. We also verify that the GPT-3 model is reliable and behaving as expected by running thousands of examples against the model. By innovating responsibly, we can help build a future where AI technology has a lasting, positive impact.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this article, we\u2019ve uncovered some of the magic that happens behind the scenes in order to transform natural language into Power Fx formulas. We\u2019ve also demonstrated how the principles of Responsible AI have been a driving force behind the development of this feature.<\/p>\n<p>Natural language to Power Fx represents one major step towards the goal of achieving a no-code platform that empowers everyone to build. As we continue to push the needle towards no-code, we will continue to improve and expand upon our suite of AI-powered features to assist makers in app development. The future is limitless, and we\u2019re building it today.<\/p>\n<p>&#8212;<\/p>\n<p>If you have any questions, feedback, or ideas for future topics, let us know in the comments below!<\/p>\n<p><em>To learn more about engineering at Power Apps, stay tuned for new articles in our &#8220;Behind the Scenes&#8221; series. If you are interested in exploring career opportunities at Power Apps, check out our <\/em><a href=\"https:\/\/careers.microsoft.com\/us\/en\/search-results?keywords=%23POWERAPPSJOBS\"><em>Careers<\/em><\/a><em> page.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year, we announced the public preview of Power Apps Ideas, which enables Power Apps makers to take advantage of Microsoft AI technologies that make it easy to write Power Fx formulas with no-code. In this article, we\u2019re going to go behind the scenes to share what it took for the Power Apps engineering team to implement Power Apps Ideas and unveil some of the complexity that\u2019s happening under the covers to support this user experience.<\/p>\n","protected":false},"author":261,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[3016],"class_list":["post-18944","post","type-post","status-publish","format-standard","hentry","audience-it-professional","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"Last year, we announced the public preview of Power Apps Ideas, which enables Power Apps makers to take advantage of Microsoft AI technologies that make it easy to write Power Fx formulas with no-code. In this article, we\u2019re going to go behind the scenes to share what it took for the Power Apps engineering team to implement Power Apps Ideas and unveil some of the complexity that\u2019s happening under the covers to support this user experience.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-03T23:23:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T14:50:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"1458\" \/>\n\t<meta property=\"og:image:height\" content=\"854\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Lily Liu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lily Liu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\"},\"author\":[{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/lily-liu\/\",\"@type\":\"Person\",\"@name\":\"Lily Liu\"}],\"headline\":\"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps\",\"datePublished\":\"2022-03-03T23:23:53+00:00\",\"dateModified\":\"2025-06-11T14:50:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\"},\"wordCount\":2475,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\",\"keywords\":[\"Power Fx\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\",\"name\":\"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\",\"datePublished\":\"2022-03-03T23:23:53+00:00\",\"dateModified\":\"2025-06-11T14:50:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\",\"contentUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif\",\"width\":1458,\"height\":854,\"caption\":\"graphical user interface, application\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/6074f684d006263eca99b0cb9c2942d4\",\"name\":\"Lily Liu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=gc1cb1fafd582bec1c7469dc70b28e5cf\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=g\",\"caption\":\"Lily Liu\"},\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/liulily\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/","og_locale":"en_US","og_type":"article","og_title":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog","og_description":"Last year, we announced the public preview of Power Apps Ideas, which enables Power Apps makers to take advantage of Microsoft AI technologies that make it easy to write Power Fx formulas with no-code. In this article, we\u2019re going to go behind the scenes to share what it took for the Power Apps engineering team to implement Power Apps Ideas and unveil some of the complexity that\u2019s happening under the covers to support this user experience.","og_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2022-03-03T23:23:53+00:00","article_modified_time":"2025-06-11T14:50:42+00:00","og_image":[{"width":1458,"height":854,"url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif","type":"image\/gif"}],"author":"Lily Liu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lily Liu","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#article","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/"},"author":[{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/lily-liu\/","@type":"Person","@name":"Lily Liu"}],"headline":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps","datePublished":"2022-03-03T23:23:53+00:00","dateModified":"2025-06-11T14:50:42+00:00","mainEntityOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/"},"wordCount":2475,"commentCount":0,"publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif","keywords":["Power Fx"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/","name":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif","datePublished":"2022-03-03T23:23:53+00:00","dateModified":"2025-06-11T14:50:42+00:00","breadcrumb":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#primaryimage","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif","contentUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2022\/03\/Animation2.gif","width":1458,"height":854,"caption":"graphical user interface, application"},{"@type":"BreadcrumbList","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2022\/03\/03\/behind-the-scenes-what-it-takes-to-teach-gpt-3-how-to-build-low-code-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Behind the Scenes \u2013 What it Takes to Teach GPT-3 How to Build Low-Code Apps"}]},{"@type":"WebSite","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/6074f684d006263eca99b0cb9c2942d4","name":"Lily Liu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=gc1cb1fafd582bec1c7469dc70b28e5cf","url":"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0533ba352a19b7bacd20262ab4491ff4ebb526435efe9015db0ea61eea114610?s=96&d=mm&r=g","caption":"Lily Liu"},"url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/liulily\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/18944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/261"}],"replies":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=18944"}],"version-history":[{"count":1,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/18944\/revisions"}],"predecessor-version":[{"id":128291,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/18944\/revisions\/128291"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=18944"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=18944"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=18944"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=18944"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=18944"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=18944"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=18944"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=18944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}