System, method, and various embodiments for an extensibility and code generation system leveraging LLM capabilities, are described herein. An embodiment operates by receiving, via a user interface, a command to update an application. Metadata of the application, including one or more data elements associated with the update are retrieved and displayed via the user interface. New code corresponding to the update is generated and provided for display. The new code, corresponding to the update, is integrated into the application and made available to one or more users.
Legal claims defining the scope of protection, as filed with the USPTO.
receiving, via a user interface, a command to update an application; retrieving metadata of the application, the metadata comprising one or more data elements associated with the update; providing the one or more data elements for display via the user interface; generating, by one or more processors, new code corresponding to the update; providing the new code for display via the user interface; and integrating the new code, corresponding to the update, into the application, wherein the application including the update is available to one or more users. . A computer-implemented method, comprising:
claim 1 generating a code prompt for a large language model (LLM), wherein the LLM is configured to generate the new code corresponding to the update; providing the code prompt to the LLM; and receiving the new code corresponding to the update from the LLM, responsive to the code prompt. . The computer-implemented method of, wherein the generating comprises:
claim 2 generating a finalize prompt for the LLM, the finalize prompt comprising a command to integrate the new code into source code of the application; providing the finalize prompt to the LLM; and receiving a notification from the LLM after the new code has been integrated into the source code of the application. . The computer-implemented method of, further comprising:
claim 1 generating test data for testing the new code; and providing a simulation of the application, including the new code, using the test data. . The computer-implemented method of, further comprising:
claim 4 . The computer-implemented method of, wherein the simulation is provided locally for a user.
claim 5 receiving approval, from the user, on the simulation; and wherein the integrating comprises integrating the new code into a cloud version of the application, wherein the cloud version of the application is accessible by a plurality of users. . The computer-implemented method of, further comprising:
claim 1 receiving a modification, from a user, to the new code, wherein the new code, including the modification is integrated into the application. . The computer-implemented method of, wherein the providing the new code for display further comprises:
a memory; and at least one processor coupled to the memory and configured to perform operations comprising: receiving, via a user interface, a command to update an application; retrieving metadata of the application, the metadata comprising one or more data elements associated with the update; providing the one or more data elements for display via the user interface; generating, by one or more processors, new code corresponding to the update; providing the new code for display via the user interface; and integrating the new code, corresponding to the update, into the application, wherein the application including the update is available to one or more users. . A system comprising:
claim 8 generating a code prompt for a large language model (LLM), wherein the LLM is configured to generate the new code corresponding to the update; providing the code prompt to the LLM; and receiving the new code corresponding to the update from the LLM, responsive to the code prompt. . The system of, wherein the generating comprises:
claim 9 generating a finalize prompt for the LLM, the finalize prompt comprising a command to integrate the new code into source code of the application; providing the finalize prompt to the LLM; and receiving a notification from the LLM after the new code has been integrated into the source code of the application. . The system of, the operations further comprising:
claim 8 generating test data for testing the new code; and providing a simulation of the application, including the new code, using the test data. . The system of, the operations further comprising:
claim 11 . The system of, wherein the simulation is provided locally for a user.
claim 12 receiving approval, from the user, on the simulation; and wherein the integrating comprises integrating the new code into a cloud version of the application, wherein the cloud version of the application is accessible by a plurality of users. . The system of, the operations further comprising:
claim 8 receiving a modification, from a user, to the new code, wherein the new code, including the modification is integrated into the application. . The system of, wherein the providing the new code for display further comprises:
receiving, via a user interface, a command to update an application; retrieving metadata of the application, the metadata comprising one or more data elements associated with the update; providing the one or more data elements for display via the user interface; generating, by one or more processors, new code corresponding to the update; providing the new code for display via the user interface; and integrating the new code, corresponding to the update, into the application, wherein the application including the update is available to one or more users. . A non-transitory computer-readable medium having instructions stored thereon that, when executed by at least one computing device, cause the at least one computing device to perform operations comprising:
claim 15 generating a code prompt for a large language model (LLM), wherein the LLM is configured to generate the new code corresponding to the update; providing the code prompt to the LLM; and receiving the new code corresponding to the update from the LLM, responsive to the code prompt. . The non-transitory computer-readable medium of, wherein the generating comprises:
claim 15 generating a finalize prompt for the LLM, the finalize prompt comprising a command to integrate the new code into source code of the application; providing the finalize prompt to the LLM; and receiving a notification from the LLM after the new code has been integrated into the source code of the application. . The non-transitory computer-readable medium of, the operations further comprising:
claim 15 generating test data for testing the new code; and providing a simulation of the application, including the new code, using the test data. . The non-transitory computer-readable medium of, the operations further comprising:
claim 18 . The non-transitory computer-readable medium of, wherein the simulation is provided locally for a user.
claim 19 receiving approval, from the user, on the simulation; and wherein the integrating comprises integrating the new code into a cloud version of the application, wherein the cloud version of the application is accessible by a plurality of users. . The non-transitory computer-readable medium of, the operations further comprising:
Complete technical specification and implementation details from the patent document.
The ability to modify or update an application is an important part of increasing the utility and usability of the application. However, performing these application updates or changes is a highly technical process that is unavailable to the end users of the application. However, this becomes problematic because it is these end users who are more familiar with what changes would improve the actual functionality or utility of the application, relative to a developer.
These changes must first wait until a developer is available, thus causing the application to continue to operate in a sub-optimal manner. Further, even a simple change to the application may require multiple back-and-forth interactions between the developer and the user, and multiple versions of the application may need to be created, compiled, and tested, before the end user actually gets the update they need or requested.
In the drawings, like reference numbers generally indicate identical or similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.
Provided herein are system, apparatus, device, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for providing a customized application extensibility and code generation system leveraging large language model (LLM) capabilities.
The ability to modify or update an application is an important part of increasing the utility and usability of the application. However, performing these application updates or changes is a highly technical process that is unavailable to the end users of the application. However, this becomes problematic because it is these end users who are more familiar with what changes would improve the actual functionality or utility of the application, relative to a developer.
These changes must first wait until a developer is available, thus causing the application to continue to operate in a sub-optimal manner. Further, even a simple change to the application may require multiple back-and-forth interactions between the developer and the user, and multiple versions of the application may need to be created, compiled, and tested, before the end user actually gets the update they need or requested.
1 FIG. 100 102 102 104 110 108 106 102 110 110 102 110 104 110 108 is a block diagramillustrating example functionality for a code generation and extensibility system (CGS), according to some embodiments. CGSmay leverage the processing capabilities of a large language model (LLM)to allow a non-technical userto perform updates to an application, which may involve generating new code. CGSmay allow the userto perform such updates without requiring the userto perform any coding themselves or waiting for a developer to perform the coding updates in a resource consuming back-and-forth process. Instead, CGSmay allow the userto leverage the coding capabilities of an LLMto perform the code changes, and allow the userto test the updated code, and deploy the update to the application.
102 102 110 102 108 CGSprovides significant computational advantages over traditional code development processes which requiring back-and-forth communications between different users and multiple versions of code updates which would need to be manually performed, compiled, and tested. CGSstreamlines this process, and enables the userto user plain language (e.g., non-programming language) instructions to cause CGSperform the requested updates to an application.
110 116 118 116 110 108 102 110 116 108 In some embodiments, the usermay submit an update requestvia a chatbot(or chatbot interface). The update requestmay include a plain language, non-computing language or non-programming language, instructions indicating what change or update(s) the userdesires for application. CGSallows the userto submit an update requestusing spoken language or text, without any knowledge of programming, to change the functionality of an application.
108 112 108 112 108 112 112 108 Applicationmay include any computer program, application, web application, or app, that includes source codethat can be updated to modify the functionality of application. Source codemay include any computing code written across one or more computing or programming languages which is used to execute application(which may be done after compiling the source code). In some embodiments, source codemay be stored or executed across multiple files or computing devices. In some embodiments, applicationmay include an application operating in a cloud or other network-based environment, which may be accessible to one or more users.
110 108 112 110 108 110 114 108 114 108 114 114 130 130 In some embodiments, usermay be a non-technical or end user of application, who may not be familiar with how to write code or update source code. In some embodiments, usermay want to update some functionality in application. For example, usermay want to add, remove, or update existing data elementsof application. A data elementmay include any data or functional feature of application. Example data elementsmay include, but are not limited to, user interface elements (including size, positioning, color), data fields, and or processing commands (e.g., how various calculations are performed, etc.). In some embodiments, data elementsmay be part of metadata. Metadatamay include information about data, such as data element names, data definitions, data format, data metrics, data creation information, data size, data assumptions, data relationships, data calibration, etc.
112 110 108 However, without knowing how to modify source code, usermay not be able to update the application. Instead, a user would have to wait for a developer to perform an update of the application, and hope the developer updated in the application in the manner desired by the user. If the developer misunderstands the user or does not properly perform the update, there may be multiple back and forth developer, compilation, and testing sessions, wasting valuable time and computing resources.
102 110 108 112 110 112 102 110 116 102 118 102 118 116 108 116 102 110 112 108 CGSallows for a non-technical userto update application, without any prior knowledge of programming or how to update source code. In some embodiments, usermay not be authorized to directly access or update source code. CGSmay allow a userto directly communicate an update requestto CGSusing plain language or natural language to a chatbot. CGS, which may include chatbot, may interpret or translate the update requestinto one more technical commands and perform all the technical operations required to update applicationin accordance with the update request. CGSobviates the need for a developer or even development background by the userto update the source codeof application.
102 118 110 118 118 118 118 110 116 118 As noted above, in some embodiments, CGSmay provide a chatbotthat interacts with user. Chatbotmay include a computer program that is designed to simulate a conversation with a human user. Chatbotmay include any interface that enables a user to access chatbot functionality or interact with a chatbot. In some embodiments, chatbotmay be accessible via the internet (e.g., through a website), a messaging application (including textual and/or audio communications), or any add on messaging service that enables two-way communications. Chatbotmay allow a userto speak and/or type input, such as update requestusing natural or plain language. Chatbotmay provide a response in audio, text, or multimedia format, including hyperlinks.
118 118 110 116 In some embodiments, chatbotmay be trained to respond to particular user inputs, based on identifying particular keywords. In some embodiments, chatbotmay perform initial NLP (natural language processing) on the instructions provided by uservia update request(or other user input).
116 118 116 118 10 116 118 For example, update requestmay be “Add a new field: Address, to the application”. Chatbotmay interpret this update requestto correspond to an add a new field command for ‘address’ data. In some embodiments, chatbotmay ask the userfor additional information if update requestis ambiguous or missing information. For example, adding a new field may require both a field name and a data type for the field. If the data type was missing (e.g., String), then chatbotmay prompt user for a required data type for the data field ‘address’.
118 116 118 110 116 In some embodiments, chatbotmay confirm the interpretation or understanding of update request. In continuing the example above, chatbotmay output: “You want to add the Address field to the application, is that correct?” And wait for the userto respond affirmatively, or provide a new or updated instruction or update request.
102 120 116 120 108 116 116 120 116 120 108 120 130 112 In some embodiments, CGSmay generate an application snippetin response to update request. Application snippetmay include a visual depiction of a portion of application, as may be related to update request. For example, if update requestis directed to a particular visual interface of application, the application snippetmay include a screenshot of the interface (prior to any such update). Or, for example, if update requestis directed to updating a particular data field, the application snippetmay include a list of existing data fields in the applicationwith any additional or relevant information (e.g., such as to which functionality each field is related, etc.). In some embodiments, application snippetmay include a copy or visual depiction of metadataand/or source code.
102 120 120 122 110 120 122 102 110 116 110 108 120 116 110 116 116 120 110 108 116 CGSmay generate a visual depiction of application snippet, and display the application snippetin a user interfacefor user. In some embodiments, with application snippetvisible in user interface, CGSmay ask userto confirm their update request. For example, the usermay be able to see the list of existing data fields of applicationin application snippet, and may be asked to confirm their update requestto modify, add, or delete a data field. The usermay also be provided the opportunity to change or discard their update request, and/or submit a new update request. The application snippetmay provide the userwith additional context from applicationrelated to their update request.
116 120 110 108 116 In some embodiments, update requestmay include a request for an application snippet, which may be received prior to any update instructions. For example, usermay request to see a list of existing data fields from application, and then submit an update requestrelated to modifying or deleting an existing data field, or adding a new data field.
116 116 124 104 104 104 104 104 104 Upon receiving update request, or a confirmation of the request, a prompt generatormay generate one or more prompts for LLMto perform some functionality or generate a response. A prompt may include one or more lines of text organized across one or more documents that is particularly formatted to by understandable by a large language model (LLM). LLMmay include an artificial intelligence, machine learning, or deep learning model that is configured to execute data processing commands from plain-text (e.g., not requiring computer language or coded input). LLMmay include any computing system that is configured to perform processing tasks based on text-based or plain language inputs. LLMmay be configured to create original content from one or more documents or input in accordance with a prompt. In some embodiments, LLMmay include a generative pre-training transformer (GPT).
104 128 128 108 130 108 128 108 108 128 128 104 128 104 108 130 106 128 108 112 112 In some embodiments, LLMmay be specifically trained on a specification. Specificationmay include a set of guidelines that were used to generate or code application, and may include references to metadataof application. Specificationmay include a template, library, or set of rules or configurations used to generate one or more applications. For example, even though only a single applicationis illustrated, in some embodiments, there may be a suite of applications which are all developed in accordance with specification. Specificationmay include a naming convention, library locations, etc. LLMmay be specifically trained with specification, such that LLMis able to understand applicationthrough metadataand generate new codein accordance with specificationfor application, that can be integrated into source code, written in the same programing language as source code, or a compatible programming language.
124 126 138 142 120 124 Example prompts which may be generated by prompt generatorinclude a code prompt, test prompt, and finalize prompt. In other embodiments, different or additional prompts may be generated. For example, a prompt to generate application snippetmay be generated by prompt generator.
126 106 104 116 124 116 108 126 106 104 106 112 106 112 Code promptmay be a prompt generated to request new codefrom LLM, corresponding to update request. In some embodiments, prompt generatormay provide the update requestand/or the name of the applicationas input for the code prompt, and request new codeas output from the LLM. The new codemay include any revisions to be added to source code. In some embodiments, the new codemay include deleting or modifying existing source code.
104 112 106 112 112 110 112 108 In some embodiments, LLMmay receive or generate a copy (of at least a portion) of source code, and the new codemay be generated and integrated into the copy of source code. Copying the source code(to another location or computing device local to user) may avoid potential issues that would otherwise arise from directly modifying source codeof application.
102 106 104 106 132 122 132 106 116 132 112 106 112 132 120 132 118 CGSmay receive the new codefrom LLM, and provide the new codein a code previewwindow in user interface. The code previewmay include the new codethat has been generated in accordance with update request. In some embodiments, code previewmay include the original (or copy) of source codein a first color, and the new code(including any modifications or deletions to source code) in a second, different color. In some embodiments, the code previewmay be displayed simultaneously with the application snippet. In some embodiments, code previewmay be displayed within chatbot interface.
110 132 134 134 106 132 134 106 134 112 106 110 132 In some embodiments, usermay approve the code previewor submit a modification. Modificationmay include any user submitted change to the new codeas provided in code preview. Modificationmay include adding additional code and/or removing or modifying the new code. In some embodiments, modificationmay include a request to roll back a deletion of source code, as done as part of new code. In some embodiments, usermy request to bypass the code previewaltogether.
106 134 102 136 110 132 106 112 136 136 108 106 134 110 136 112 106 112 108 Upon receiving approval of new code, or a modification, CGSmay generate a simulation. Or, for example, if useropts to bypass code preview, the new codemay be directly integrated into a local copy of source codeas part of generating a simulation. Simulationmay include a local execution of applicationwith the new code(and any approved modification) for userto interact with or play with. Simulationmay include a compilation and execution of a local copy of source codewith new code, but may not impact or change the original source codeor application.
124 138 138 104 140 114 106 140 116 As part of generating simulation, in some embodiments, prompt generatormay generate a test prompt. Test promptmay be a request for LLMto generate a set of test datathat may be used to test the data elementsimpacted by new code. In some embodiments, test datamay not be required, depending on the nature of the update request.
140 110 136 136 110 140 140 106 136 108 106 108 106 140 136 110 106 136 108 106 110 136 110 116 108 106 106 In some embodiments, test datamay be provided to useras part of simulation. Thus, as part of simulation, a usermay see the input test dataand an output generated with the test databy an updated version of the application (with the new code). In some embodiments, simulationmay include an original version of application(before new code) and a new version of application(with new code) both executing with or without test data, so that user may see the differences. Simulationmay allow userto play with and test the new code. In some embodiments, simulationmay access to the entire execution of applicationwith new code. In some embodiments, usermay reject or approve the simulation. In some embodiments, usermay provide a subsequent update requestto update the newest (local) version of application(with new code) to further modify the new codeand/or local source code.
136 112 110 108 108 108 102 108 110 106 134 116 110 136 In some embodiments, simulationmay include a local update to a copy of the source code, accessible only to user. For example, as noted above, applicationmay be a network-accessible or cloud-based application. Rather than update the cloud-version or live version of the application, CGSmay update a local copy or local version of the applicationonly for user. The updated local version may include the new code, and any modification, generated in accordance with update request. The usermay then have the option to either reject or accept the simulation.
110 136 102 108 106 112 108 136 102 106 112 110 If userrejects simulation, then CGSmay discard the local version of application(e.g., including the new code), and source codeof the production version of applicationmay remain unchanged. If user approves simulation, then CGSmay integrate the new codeinto source code. In some embodiments, the usermay schedule the update for a specific date/time in the future.
124 142 142 104 112 106 104 112 112 106 104 102 110 122 118 In some embodiments, prompt generatormay generate a finalize prompt. Finalize promptmay include instructions to LLMto deploy the update by updating source codein accordance with new code. In some embodiments, LLMmay replace source codewith the local copy of source codethat was tested and already includes new code. When the update is completed, LLMmay provide a notification to CGS, which may then be communicated to userthrough user interface, chatbot, or other electronic messaging (e.g., text message, phone call, email, etc.).
102 144 112 108 110 144 108 110 106 116 108 144 108 106 144 108 In some embodiments, CGSmay maintain different versionsof source code(or application). For example, usermay only be authorized to update a first versionof applicationwhich the useris accessing, such that the new codeor update corresponding to update requestis not visible to any other users of application. However, there may be multiple additional versionsof applicationwhich are accessible to other users, which are unaffected by the deployment of new codeto the first versionof application.
102 146 144 108 146 144 108 110 108 106 146 144 In some embodiments, CGSmay maintain a list of tenantswho are accessing a particular versionof application. Tenantsmay include any number of end users who are accessing a particular versionof application. For example, usermay be the manager for or member of a division within an organization with six employees. Even though the applicationmay be used by all one hundred members of the organization, the update of new code, as made by user, may only be accessible by the six members of the same team or division, each of whom may be a tenantof the same version.
110 116 102 144 108 146 124 142 104 106 144 108 110 136 106 144 108 142 144 108 106 In some embodiments, with proper authorization, the usermay submit a subsequent update requestfor CGSto update all the versionsof applicationfor all tenants. This may include prompt generatorgenerating a new finalize prompt, asking LLMto propagate the new codeto all the versionsof application(e.g. that useris authorized to update). In some embodiments, the test phase and simulationmay be skipped in these subsequent updates since the new codehas already been tested and integrated into an existing versionof application. In some embodiments, the finalize promptmay indicate which version(s)of applicationis to be updated with the new code.
2 FIG. 222 102 222 220 120 218 118 illustrates an example user interfacefor a code generation and extensibility system (CGS), according to some embodiments. The user interfacemay include an application snippet(corresponding to an example of application snippet), and a chatbot window(corresponding to an example of chatbot).
116 218 110 108 116 102 220 108 120 108 112 130 120 102 130 In the example illustrated, the update request, as provided in chatbot windowby a user, may have been a request to add a new data field to an application. In response to the update request, CGSmay have generated or captured application snippetillustrating the existing data fields of application. In some embodiments, application snippetmay include one or more screen captures of a user interface of application, source code, and/or metadata. The list of data fields in application snippetmay be retrieved by CGSfrom metadata.
220 108 118 In some embodiments, upon displaying the application snippetincluding the existing data fields of application, chatbotmay ask user to confirm their instruction to add a new data field.
102 126 106 104 108 128 232 102 106 110 106 112 Upon receiving confirmation, CGSmay generate a code promptand receive new codefrom an LLM, trained to generate code for applicationin accordance with specification. As illustrated in section, CGSmay provide the new codeto the userto review/confirm. In some embodiments, the new codemay include some portions or copies of the pre-existing source code.
110 106 232 110 106 102 106 134 106 134 102 136 102 140 In some embodiments, the usermay update the new codeillustrated in section. For example, usermay submit a request to update the new code. Responsive to this request, CGSmay generate a new editable code window (not illustrated), where user can update or modify new code(e.g., by submitting a modification). Then, when the user approves the new code, with or without a user modification, CGSmay compile the new code and generate a simulationfor user to test and approve. As described above, CGSmay also generate test data, if applicable.
102 136 132 110 136 106 106 136 110 106 136 102 142 104 112 144 108 145 144 In some embodiments, CGSmay generate the simulationprior to providing the code preview. For example, usermay play with simulationand may approve simulation without approving new code. Or, for example, the user may specifically request to review or modify the new codeafter playing with the simulation. Upon receiving a final approval from userof the new codeand/or simulation, CGSmay generate the finalize promptcausing LLMto update source codefor the appropriate version(s)of application, making it available to any tenantsof that version.
3 FIG. 3 FIG. 1 FIG. 300 102 300 300 is a flowchartillustrating example operations for providing a code generation and extensibility system (CGS), according to some embodiments. Methodcan be performed by processing logic that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown in, as will be understood by a person of ordinary skill in the art. Methodshall be described with reference to.
310 118 116 110 116 110 108 116 108 In, a command to update an application is received via a user interface. For example, for example, chatbotmay receive an update requestfrom a user. The update requestmay include a plain language (e.g., non-programming language) request by a userto modify an applicationin some way. In some embodiments, the update requestmay indicate one or more screens or user interfaces of applicationand produce a visible change from an end user point of view.
320 102 114 130 108 116 126 104 130 112 116 106 114 102 120 110 In, metadata of the application is retrieved, the metadata comprising one or more data elements associated with the update. For example, CGSmay identify which data elementsof metadataof the applicationwould be impacted by the update request. In some embodiments, code promptmay include a request to LLMto identify and return the portion(s) of metadata(and/or source code) related to or otherwise impacted by update request. For example, the new codemay include a list of the data elements, which CGSmay then format into an application snippetfor userreview/approval.
330 102 120 114 116 In, the one or more data elements are provided for display via the user interface. For example, CGSmay generate an application snippetincluding the data elementsrelated or that are likely to be impacted by the update request.
340 124 126 106 116 106 112 In, new code corresponding to the update is generated. For example, a prompt generatormay generate a code promptto generate new codecorresponding to update request. The new codemay be in the same programming language, or a compatible programming language, as source code.
350 102 106 104 102 118 106 102 106 110 134 106 132 110 106 In, the new code is provided for display via the user interface. For example, CGSmay receive new codefrom LLM. CGSmay then format for display, via a chatbot (window)the new codefor user review/approval/modification. In some embodiments, CGSmay generate a modifiable file with new code, such that usermay modify () the new codein a code previewwindow. The usermay then approve the new code.
360 124 142 104 106 112 142 104 106 136 108 124 142 142 112 144 108 110 In, the new code, corresponding to the update, is integrated into the application. For example, prompt generatormay generate a finalize promptwhich may cause LLMto integrate the new codeinto source code. In some embodiments, a first finalize promptmay cause LLMto update a local copy of source code with new code, as part of generating simulation. Then, for example, upon receiving user approval of the updated local copy of application, prompt generatormay generate a second finalize prompt. The second finalize promptmay instruct LLM to update the source codeof a live or active versionof application, which the useris authorized to update.
108 102 110 146 108 116 146 108 106 In some embodiments, once the live or cloud version of the applicationhas been updated, CGSmay send a message to useror the various tenantsthat the applicationhas been updated with the new functionality in accordance with update request. The tenantsmay then access the applicationwith the updated functionality based on new code.
400 400 4 FIG. Various embodiments may be implemented, for example, using one or more well-known computer systems, such as computer systemshown in. One or more computer systemsmay be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.
400 404 404 406 Computer systemmay include one or more processors (also called central processing units, or CPUs), such as a processor. Processormay be connected to a communication infrastructure or bus.
400 403 406 402 Computer systemmay also include user input/output device(s), such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructurethrough user input/output interface(s).
404 One or more of processorsmay be a graphics processing unit (GPU). In an embodiment, a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc.
400 408 408 408 Computer systemmay also include a main or primary memory, such as random access memory (RAM). Main memorymay include one or more levels of cache. Main memorymay have stored therein control logic (i.e., computer software) and/or data.
400 410 410 412 414 414 Computer systemmay also include one or more secondary storage devices or memory. Secondary memorymay include, for example, a hard disk driveand/or a removable storage device or drive. Removable storage drivemay be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.
414 418 418 418 414 418 Removable storage drivemay interact with a removable storage unit. Removable storage unitmay include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unitmay be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drivemay read from and/or write to removable storage unit.
410 400 422 420 422 420 Secondary memorymay include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system. Such means, devices, components, instrumentalities or other approaches may include, for example, a removable storage unitand an interface. Examples of the removable storage unitand the interfacemay include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.
400 424 424 400 428 424 400 428 426 400 426 Computer systemmay further include a communication or network interface. Communication interfacemay enable computer systemto communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number). For example, communication interfacemay allow computer systemto communicate with external or remote devicesover communications path, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer systemvia communication path.
400 Computer systemmay also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smart phone, smart watch or other wearable, appliance, part of the Internet-of-Things, and/or embedded system, to name a few non-limiting examples, or any combination thereof.
400 Computer systemmay be a client or server, accessing or hosting any applications and/or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (“on-premise” cloud-based solutions); “as a service” models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), managed software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); and/or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.
400 Any applicable data structures, file formats, and schemas in computer systemmay be derived from standards including but not limited to JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations alone or in combination. Alternatively, proprietary data structures, formats or schemas may be used, either exclusively or in combination with known or open standards.
400 408 410 418 422 400 In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system, main memory, secondary memory, and removable storage unitsand, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system), may cause such data processing devices to operate as described herein.
4 FIG. Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of this disclosure using data processing devices, computer systems and/or computer architectures other than that shown in. In particular, embodiments can operate with software, hardware, and/or operating system implementations other than those described herein.
It is to be appreciated that the Detailed Description section, and not any other section, is intended to be used to interpret the claims. Other sections can set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit this disclosure or the appended claims in any way.
While this disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the disclosure is not limited thereto. Other embodiments and modifications thereto are possible, and are within the scope and spirit of this disclosure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and/or entities illustrated in the figures and/or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein.
Embodiments have been described herein with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments can perform functional blocks, steps, operations, methods, etc. using orderings different than those described herein.
References herein to “one embodiment,” “an embodiment,” “an example embodiment,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment can not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments can be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments can be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
The breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 24, 2024
March 26, 2026
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.