Executing execution plans using large-scale language models in conjunction with digital assistants.

JP2026534078APending Publication Date: 2026-10-14ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2026516142
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-09-05
Filing Date
2024-09-12
Publication Date
2026-10-14

Smart Images

  • Figure 2026534078000001_ABST
    Figure 2026534078000001_ABST
Patent Text Reader

Abstract

A technique for executing execution plans for a digital assistant using generative artificial intelligence (genAI) is disclosed herein. A first genAI model can generate a list of executable actions based on a utterance provided by a user. An execution plan can be generated to include executable actions. An execution plan can be executed by performing an iterative process for each executable action. The iterative process may include identifying an action type, calling one or more states, and, by one or more states, executing the executable action using assets to obtain an output. A second prompt can be generated based on the output obtained from executing each executable action. A second genAI model can generate a response to a utterance based on the second prompt.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] Cross-Reference to Related Applications This application claims priority to Non-Provisional Application No. 18 / 825,573, filed September 5, 2024, which claims the benefit and priority under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 63 / 583,028, filed September 15, 2023, the disclosures of each of which are hereby incorporated by reference in their entirety for all purposes.

[0002] Field The present disclosure relates generally to digital assistants, and more specifically, but not necessarily exclusively, to techniques for executing execution plans for generating responses to utterances using digital assistants and large language models. BACKGROUND ART

[0003] Background Artificial intelligence (AI) has a wide range of applications, and notable evolution has been observed in the realm of digital assistants or chatbots. Originally, many users sought immediate responses through instant messaging or chat platforms. Organizations that recognized the potential for engagement utilized these platforms to interact with entities such as end users in real-time conversations.

[0004] However, maintaining live communication channels with entities through human service staff has proven costly for organizations. In response to this challenge, digital assistants, or chatbots also known as bots, have emerged as a solution for simulating conversations with entities, particularly over the Internet. Bots have enabled entities to engage with users through messaging apps or other applications with messaging capabilities that users were already using.

[0005] Initially, traditional chatbots relied on predetermined skills or intent models, which required entities to communicate within a fixed set of keywords or commands. Unfortunately, this approach limited the bot's ability to engage intelligently and contextually in live conversations, hindering its ability for natural communication. Entities were constrained by the need to use specific commands that the bot could understand, often leading to difficulties in effectively conveying their intent.

[0006] Since then, the situation has changed with the integration of Large-Scale Language Models (LLMs) into digital assistants or chatbots. LLMs are deep learning algorithms capable of performing a variety of natural language processing (NLP) tasks. These LLMs use a neural network architecture called transformers, which learn from patterns and structures in natural language, enabling them to engage in more nuanced, contextually understood conversations across various domains and purposes. This evolution represents a significant shift from rigid, keyword-based interactions to more adaptable, intuitive communication experiences compared to traditional chatbots, enhancing the overall ability of digital assistants or chatbots to understand and respond to user queries. [Overview of the project]

[0007] overview In various embodiments, a method can be used in which a computer performs actions to generate responses to utterances using a digital assistant. The method may include a first generative artificial intelligence model generating a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by a user. The method may include creating an execution plan, which includes one or more executable actions. The method may include executing the execution plan, which may include performing an iterative process for each of the one or more executable actions. The iterative process may include (i) identifying an action type for an executable action, (ii) calling one or more states configured to perform the action type, and (iii) using assets to perform the executable action by one or more states to obtain an output. The method may include generating a second prompt based on the output obtained from performing each of the one or more executable actions. The method may include a second generative artificial intelligence model generating responses to natural language utterances based on the second prompt.

[0008] In some embodiments, creating an execution plan may include evaluating one or more executable actions. Additionally or alternatively, the evaluation may include evaluating one or more executable actions based on one or more ongoing conversation paths initiated by the user and any currently active execution plans. Additionally or alternatively, creating an execution plan may include (i) when the evaluation determines that a natural language utterance is part of an ongoing conversation path, incorporating one or more executable actions into a currently active execution plan associated with the ongoing conversation path, the currently active execution plan including an ordered list of one or more executable actions and one or more previous actions, or (ii) when the evaluation determines that a natural language utterance is not part of an ongoing conversation path, creating a new execution plan including an ordered list of one or more executable actions.

[0009] In some embodiments, the iterative process may include (i) determining whether one or more parameters are available for a executable operation; (ii) if one or more parameters are available, calling one or more states and performing a executable operation based on one or more parameters; and (iii) if one or more parameters are not available for a executable operation, obtaining one or more unavailable parameters, then calling one or more states and performing a executable operation based on one or more parameters.

[0010] In some embodiments, obtaining one or more parameters may include generating a natural language request to a user to obtain one or more parameters for a executable operation, and receiving a response from the user containing one or more parameters.

[0011] In some embodiments, calling one or more states configured to perform an operation type may include (i) calling a first state to identify that the executable operation has not yet been performed in order to generate a response, and (ii) calling a second state to determine whether one or more parameters are available for the executable operation. Additionally or alternatively, performing an executable operation using an asset to obtain an output may include calling a third state to generate an output. Additionally or alternatively, the first, second, and third states may be different from each other.

[0012] In some embodiments, generating a list may include selecting one or more executable actions from a list of candidate agent actions determined by using a semantic index. Additionally or alternatively, creating an execution plan may include (i) identifying one or more executable actions that provide information or knowledge for generating a response to a natural language utterance, at least partially based on metadata associated with the candidate agent actions in the list of candidate agent actions, and (ii) generating a structured output for the execution plan by creating an ordered list of one or more executable actions and a set of dependencies among the one or more executable actions.

[0013] In some embodiments, the iterative process may include determining, based on a set of dependencies among one or more executable operations, that one or more dependencies exist between an executable operation and at least one other executable operation among the one or more executable operations. Additionally or alternatively, executable operations may be executed sequentially according to the one or more dependencies that have been determined to exist between an executable operation and at least one other executable operation.

[0014] In various embodiments, apparatuses are provided that include means for carrying out some or all of the operations and / or methods disclosed herein.

[0015] In various embodiments, a computer program product is provided which, when executed by a processor, includes computer instructions that perform some or all of the operations and / or methods disclosed herein.

[0016] In various embodiments, a system is provided that includes one or more processors and one or more computer-readable media storing instructions that, when executed by one or more processors, cause the system to perform some or all of a variety of operations. The system can generate a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by a user, using a first generative artificial intelligence model. The system can create an execution plan, which includes one or more executable actions. The system can execute the execution plan, and executing the execution plan may include performing an iterative process for each of the one or more executable actions. The iterative process may include (i) identifying an action type for an executable action, (ii) calling one or more states configured to perform the action type, and (iii) using one or more states to perform the executable action with assets to obtain an output. The system can generate a second prompt based on the output obtained from performing each of the one or more executable actions. The system can generate a response to a natural language utterance based on the second prompt, using a second generative artificial intelligence model.

[0017] In various embodiments, one or more non-temporary computer-readable media are provided for storing instructions that, when executed by one or more processors, cause the system to perform some or all of a variety of operations. An operation may include a first generative artificial intelligence model generating a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by a user. An operation may include creating an execution plan that includes one or more executable actions. An operation may include executing the execution plan, which may include performing an iterative process for each of the one or more executable actions. The iterative process may include (i) identifying an action type for an executable action, (ii) calling one or more states configured to perform the action type, and (iii) using one or more states to perform the executable action with assets to obtain an output. An operation may include generating a second prompt based on the output obtained from performing each of the one or more executable actions. An operation may include a second generative artificial intelligence model generating a response to a natural language utterance based on the second prompt.

[0018] The above and below techniques can be implemented in numerous ways and in numerous contexts. Several exemplary implementations and contexts are provided with reference to the following drawings, as will be described in more detail below. However, the following implementations and contexts are only a few examples. [Brief explanation of the drawing]

[0019] [Figure 1] This is a simplified block diagram of a distributed environment incorporating chatbot systems in various configurations. [Figure 2] This is an exemplary architecture for LLM-based digital assistants in various embodiments. [Figure 3] is a simplified block diagram of a computing environment including a digital assistant capable of executing an execution plan for responding to a user's utterance, in accordance with various embodiments. [Figure 4] is a simplified block diagram illustrating a data flow for updating a semantic context and a memory store for a digital assistant capable of executing an execution plan for responding to a user's utterance, in accordance with various embodiments. [Figure 5] is a simplified block diagram of an example data flow for planning a response to a user's utterance using a digital assistant capable of executing an execution plan, in accordance with various embodiments. [Figure 6] is a flowchart of a process for executing an execution plan using a digital assistant including generative artificial intelligence, in accordance with various embodiments. [Figure 7] is a block diagram illustrating one pattern for implementing a cloud infrastructure as a service system, in accordance with at least one embodiment. [Figure 8] is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, in accordance with at least one embodiment. [Figure 9] is a block diagram illustrating yet another pattern for implementing a cloud infrastructure as a service system, in accordance with at least one embodiment. [Figure 10] is a block diagram illustrating still another pattern for implementing a cloud infrastructure as a service system, in accordance with at least one embodiment. [Figure 11] is a block diagram illustrating an exemplary computer system, in accordance with at least one embodiment. [Mode for Carrying Out the Invention]

[0020] Detailed Description In the following description, for illustrative purposes, specific details are set forth to provide a thorough understanding of certain embodiments. However, it will be apparent that various embodiments may be practiced without these specific details. The drawings and description are not intended to be limiting. The word "exemplary" is used herein to mean "serving as an example, instance, or illustration". Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs.

[0021] Introduction Artificial intelligence technology has broad applicability. For example, a digital assistant is an artificial intelligence-driven interface that helps users accomplish various tasks using natural language conversations. In general, for each digital assistant, a customer may collect one or more skills focused on specific types of tasks, such as tracking inventory, submitting time cards, and generating expense reports. When an end user engages with the digital assistant, the digital assistant evaluates the end user input for user intent, and directs the conversation to or from an appropriate skill based on the recognized intent of the user. However, there are several drawbacks of conventional intent-based skills, including limited understanding of natural language, inability to handle unknown inputs, limited ability to conduct unscripted natural conversations, and challenges in incorporating external knowledge.

[0022] The emergence of Large-Scale Language Models (LLMs) like GPT-4® has propelled the field of chatbot design to unprecedented levels of complexity, overcoming the shortcomings of traditional intent-based skills and others. LLMs are neural networks employing a transformer architecture, specifically designed to process and generate sequential data such as text or words in conversation. LLMs are trained on a wide range of text data and are steadily improving their ability to generate text that closely resembles human-written or spoken language. While LLMs excel at predicting the next word in a sequence, it is important to note that their outputs are not guaranteed to be perfectly accurate. Their text generation relies on patterns and information learned from training data, which can be incomplete, erroneous, or outdated, because their knowledge is limited to the training dataset. LLMs do not have the ability to retrieve facts from memory. Instead, their focus is on generating text that appears contextually appropriate.

[0023] To address this limitation, LLMs can be enhanced by tools that allow them to access external knowledge sources and train them to understand and respond to user queries in a contextually relevant manner. This enhancement can be achieved through various means, including knowledge graphs, custom knowledge bases, application programming interfaces (APIs), web crawling, or scraping. The enhanced LLM is commonly referred to as an "agent." Once configured, agents can be deployed in artificial intelligence-based systems such as chatbot applications. Users interact with the chatbot, asking questions or making requests, and the agent generates responses based on a combination of its base LLM capabilities and access to external knowledge. This combination of powerful language generation and access to real-time information allows chatbots to provide more accurate, relevant, and contextually appropriate responses across a wide range of applications and domains.

[0024] For each digital assistant, a user may assemble one or more agents. An agent, which at least partially includes one or more Large Language Models (LLMs), is an individual bot that provides human-like conversational capabilities for various types of tasks, such as tracking inventory, submitting time cards, updating accounts, and creating expense reports. Agents are primarily defined using natural language. Users, such as developers, can create functional agents by pointing them to assets such as application programming interfaces (APIs), knowledge base assets such as documents, URLs, and images, data stores, and previous conversations. Assets are imported into the agent, and then, because the agent is LLM-based, the user can customize the agent again using natural language to provide additional API customization for dialogue and routing / reasoning. Operations performed by an agent are accomplished through the execution of one or more actions. Behavior can be either explicitly authored (e.g., behavior created to generate natural language text or audio responses in replies to authored natural language prompts such as the query "What is the XYZ impact on my 401k contribution limit?") or implicit when an asset is imported (e.g., behavior created for the Change Contribution and Get Contribution API, available through an API asset, configured to change a user's 401k contribution).

[0025] When an end user interacts with a digital assistant, the digital assistant evaluates the end user input and routes the conversation to and from the appropriate agent. Digital assistants can be made available to end users through various channels such as Facebook Messenger, Skype Mobile Messenger, or Short Message Service (SMS), and through application interfaces developed to include digital assistants, for example, using a Digital Assistant Software Development Kit (SDK). The channels facilitate the back-and-forth exchange of chats from the end user to the digital assistant and its various agents. During these back-and-forth exchanges, the selected agent receives the processed input in the form of a query, processes this query, and generates a response. This is done by the agent's LLM, which predicts the most contextually relevant and grammatically correct response based on training data and incoming input (e.g., query and configuration data). The generated response may undergo post-processing to ensure compliance with guidelines, policies, and formatting standards. This step helps make the response more coherent and user-friendly. The final response is delivered to the user through the appropriate channel, whether it is a text-based chat interface, a voice-based system, or another medium. According to various embodiments, the digital assistant maintains the conversational context, enabling further interaction and dynamic back-and-forth exchanges between the user and the agent, where later interactions can be built upon earlier ones.

[0026] Digital assistants, such as those described above, can receive one or more inputs from the end user, such as utterances. One or more inputs may indicate that the end user wants the digital assistant to perform two or more actions, such as two, three, four, or more actions. For example, the end user might input a utterance to the digital assistant indicating that they want to order a pizza and want to know about any special items related to pizza. Performing two or more actions based on input to the digital assistant can be difficult. For example, determining the set of actions to perform and the order in which the actions are performed can be difficult. Therefore, different approaches are needed to address these and other challenges.

[0027] An execution plan can be used to address the aforementioned problems. A digital assistant may include a planning module, or can be communicatively coupled to a planning module that can be configured to generate an execution plan. An execution plan may include a set of actions to be performed, the order in which the set of actions should be performed, and assets such as APIs and knowledge used to perform the set of actions. An execution plan may be generated by a generative model, such as a large-scale language model, in response to the digital assistant receiving input from an end user. The generative model can receive utterances from the input and generate an execution plan based on those utterances. The digital assistant can receive an execution plan from the generative model and perform the actions contained in the execution plan. In some embodiments, using a generative model to generate an execution plan can enhance the functionality of the digital assistant, or other appropriate technical field, by providing a more flexible experience for the end user. For example, all possible actions, or combinations and sequences of actions, may not need to be explicitly programmed into the digital assistant to provide a response to an input query. Additionally or alternatively, using a generative model can facilitate broader access to assets, knowledge, etc., to enable the digital assistant to provide broader and higher-quality responses to input from the end user. This improves the technology field by facilitating digital interactions between users and computer resources such as chatbots.

[0028] A digital assistant can use an execution plan to perform a set of actions in response to receiving input from an end user. An end user may input one or more utterances to a digital assistant that may be configured to generate and communicate responses to one or more utterances. In some embodiments, responding to one or more utterances may require the digital assistant to perform a set of actions that may include one, two, three, four, or more actions. Each action may be associated with different assets, such as APIs or knowledge bases. The digital assistant may use a generative model, such as a large-scale language model, to generate and execute an execution plan.

[0029] A digital assistant, or an associated generative model, may have access to a semantic context and a memory store to receive a set of potential actions that the digital assistant can perform. In some embodiments, the digital assistant may semantically search the semantic context, and the memory store may receive a set of potential actions, knowledge or a knowledge base, a set of assets associated with the set of potential actions, etc. The digital assistant may cause the generative model to receive a set of potential actions and input from an end user, and the generative model may be configured to generate an execution plan. In some embodiments, the execution plan may include (i) a set of actions to be performed in response to input from an end user and / or (ii) an order in which the set of actions in (i) should be performed.

[0030] Where used herein, when an action is “based on” something, this means that the action is based at least in part on at least a part of that something. Where used herein, the terms “similarly,” “substantially,” “almost,” and “about” are defined as to be understood by those skilled in the art, to be approximately, but not necessarily, the specified (and including the specified as a whole). In any disclosed embodiment, the terms “similarly,” “substantially,” “almost,” and “about” may be replaced by “within a certain percentage” of the specified, the percentages including 0.1, 1, 5, and 10 percent.

[0031] Digital Assistant and Knowledge Dialogue A bot (also called an agent, chatbot, chatterbot, or talkbot) is a computer program that can converse with end users. Bots can typically respond to natural language messages (e.g., questions or comments) through messaging applications that use natural language messaging. Businesses may use one or more bot systems to communicate with end users through messaging applications. The messaging application, which may also be called a channel, may be a messaging application that the end user has already installed, is familiar with, and prefers. Therefore, end users do not need to download and install a new application to chat with the bot system. Messaging applications may include, for example, over-the-top (OTT) messaging channels (such as Facebook® Messenger, Facebook WhatsApp, WeChat®, Line®, Kik, Telegram®, Talk, Skype®, Slack®, or SMS), virtual private assistants (such as Amazon Dot, Echo, or Show, Google® Home, or Apple HomePod), mobile and web app extensions that extend native or hybrid / responsive mobile or web applications with chat capabilities, or voice-based input (such as devices or apps with interfaces that use Siri®, Cortana®, Google Voice, or other speech input for interaction).

[0032] In some examples, a bot system may be associated with a Uniform Resource Identifier (URI). A URI may use a string to identify a bot system. A URI may be used as a webhook for one or more messaging application systems. A URI may include, for example, a Uniform Resource Locator (URL) or Uniform Resource Name (URN). A bot system may be designed to receive messages (e.g., Hypertext Transfer Protocol (HTTP) post-call messages) from a messaging application system. HTTP post-call messages may be directed from the messaging application system to the URI. In some embodiments, messages may differ from HTTP post-call messages. For example, a bot system may receive messages from the Short Message Service (SMS). While the description herein may refer to communications that a bot system receives as messages, it should be understood that messages may be HTTP post-call messages, SMS messages, or any other type of communication between two systems.

[0033] End users can interact with bot systems through conversational interactions (sometimes called conversational user interfaces (UIs)), much like interactions between people. In some cases, an interaction might involve the end user saying "hello" to the bot, the bot responding "hi," and asking the end user what they would like done. In other cases, the interaction might be a transactional interaction with a banking bot, such as transferring cash from one account to another; an informational interaction with an HR bot, such as checking a vacation balance; or an interaction with a retail bot, such as discussing returning a purchased item or seeking technical support.

[0034] In some embodiments, a bot system may intelligently handle end-user interactions without interaction with the bot system's administrator or developer. For example, an end-user may send one or more messages to the bot system to achieve a desired goal. The messages may contain certain content, such as text, emojis, voice, images, videos, or other means of conveying the message. In some embodiments, the bot system may convert the content into a standardized format (e.g., Representative State Transfer (REST) ​​or an API call to an enterprise service with appropriate parameters) and generate a natural language response. The bot system may instruct the end-user to provide additional input parameters or request other additional information. In some embodiments, the bot system may initiate communication with the end-user rather than passively responding to the end-user utterance. Described herein are various techniques for identifying explicit calls to a bot system and determining inputs for the called bot system. In some embodiments, explicit call analysis is performed by a master bot based on detecting the call name in the utterance. In response to the detection of an invocation name, the utterance may be refined or preprocessed for input to a bot identified as relevant to the invocation name and / or communication.

[0035] Figure 1 is a simplified block diagram of an environment 100 incorporating a digital assistant system according to one embodiment. Environment 100 includes a Digital Assistant Builder Platform (DABP) 105 that enables a user 110 to generate and deploy a digital assistant system 115. For the purposes of this disclosure, a digital assistant is an entity that helps users of the digital assistant accomplish various tasks through natural language conversation. The DABP and the digital assistant may be implemented using software only (for example, the digital assistant is a digital entity implemented using programs, code, or instructions executable by one or more processors), using hardware, or using a combination of hardware and software. In some examples, environment 100 is part of an Infrastructure as a Service (IaaS) cloud service (described in detail later), and the DABP and the digital assistant may be implemented as part of the IaaS by leveraging scalable computing resources and storage capabilities provided by the IaaS provider to process and manage large amounts of data and complex computations. This setup enables DABP and digital assistants to deliver real-time responsive interactions while ensuring high availability, security, and performance scalability to meet changing demand levels. Digital assistants can be embodied or implemented in various physical systems or devices, such as computers, mobile phones, watches, appliances, and vehicles. Digital assistants are sometimes also called chatbot systems. Therefore, for the purposes of this disclosure, the terms digital assistant and chatbot system are interchangeable.

[0036] DABP105 can be used to generate one or more digital assistant (or DA) systems. For example, as shown in Figure 1, a user 110 representing a particular company can use DABP105 to generate and deploy a digital assistant 115A for users of that particular company. For example, DABP105 could be used by a bank to generate one or more digital assistants for use by the bank's customers, such as for changing 401k savings. The same DABP105 platform can be used by numerous companies to generate digital assistants. As another example, the owner of a restaurant, such as a pizzeria, could use DABP105 to generate and deploy a digital assistant 115B that enables the restaurant's customers to order food (e.g., order a pizza).

[0037] To generate one or more digital assistant systems 115, DABP 105 includes a set of tools 120 that enable the acquisition of LLMs, agent creation, asset identification, and deployment of the digital assistant systems within a service architecture for users (described in detail herein with respect to Figure 3) via a computing platform such as a cloud computing platform, which is described in detail with respect to Figures 7–11. In some examples, tools 120 may be used to access pre-trained and / or fine-tuned LLMs from a data repository or computing system. The pre-trained LLMs serve as foundational elements, possessing a broad range of language understanding drawn from massive datasets. This capability allows the model to generate coherent responses across various topics and facilitates transfer learning. Pre-trained models offer cost-effectiveness and flexibility, which allows for scalable refinement and continuous pre-training with new data, often establishing benchmarks in natural language processing (NLP) tasks. Conversely, finely tuned models, in particular, are trained for specific tasks or industries (e.g., planning that leverages LLM's contextual learning capabilities, knowledge or information retrieval for agents, response generation for human-like conversations, etc.), improving performance in specific applications and enabling efficient learning from smaller, more specialized datasets. Fine-tuning offers advantages such as task specialization, data efficiency, faster training times, model customization, and resource efficiency. In some embodiments, fine-tuning may be particularly advantageous for niche applications and ongoing augmentation.

[0038] In other applications, Tool 120 may be used to pre-train and / or fine-tune LLMs. Tool 120 or any subset thereof may be standalone or part of a machine learning operationalization framework that includes hardware components such as a processor (e.g., CPU, GPU, TPU, FPGA, or any combination), memory, and storage. This framework manipulates software or computer program instructions (e.g., TensorFlow, PyTorch, Keras, etc.) to execute arithmetic, logical, and input / output commands for training, validating, and deploying machine learning models in a production environment. In one application, Tool 120 uses a cloud platform such as Oracle Cloud Infrastructure (OCI) to train, validate, and deploy models. Leveraging a cloud platform makes machine learning more accessible, flexible, and cost-effective, which can facilitate faster model development and deployment for developers.

[0039] Tool 120 further includes a prompt-based agent composition unit for creating agents and their associated actions that end users will ultimately call (e.g., prompts such as Tell me a joke, implicit Change Contribution, and Get Contribution API calls). Agents (e.g., a 401k contribution change agent) can primarily be defined as a compilation of agent artifacts using natural language within the prompt-based agent composition unit. User 110 can quickly create functional agents by providing agent artifact information, parameters, and configuration and by pointing to assets. Assets can be or contain resources, such as applications for retrieving knowledge, APIs for interfacing with files and / or documents, and data stores for interacting with data, which are available to the agent for performing actions. Assets are imported, and then User 110 can again use natural language to provide additional API customization for dialogue and routing / reasoning. Most of what an agent does may require performing actions. Actions can be either explicit actions written using natural language (similar to creating agent artifacts, e.g., the "What is the effect of XYZ on the 401k savings limit?" action in the "401k Savings Agent" figure below) or implicit actions created when an asset is imported (automatically imported by pointing to a given asset based on metadata and / or specifications associated with the asset, e.g., actions created for the savings modification and savings retrieval APIs in the "401k Savings Agent" figure below). Design-time users can easily create explicit actions.For example, a user might select the "rich text" behavior type (see Table 1 for a list of exemplary behavior types), and create a named artifact such as "What is the effect of XYZ on my 401k limit?" when the user learns that a new FAQ needs to be added because it is not currently in the knowledge documents (assets) that the agent references (and therefore not implicitly added as a behavior).

[0040] [Table 1]

[0041] There are various ways in which agents and assets can be associated with or added to a digital assistant 115. In some cases, agents may be developed by a company and then added to a digital assistant using DABP 105. In other cases, agents may be developed and created using DABP 105 and then added to a digital assistant created using DABP 105. In yet another case, DABP 105 provides an online digital store (called the "Agent Store") that offers a variety of pre-built agents directed towards a wide range of tasks and actions. Agents provided through the Agent Store may also expose various cloud services. To add an agent to a digital assistant generated using DABP 105, a DABP 105 user 110 can access assets via tool 120, select a specific asset for the agent, initiate some mock chat conversations with the agent, and indicate that the agent should be added to a digital assistant created using DABP 105.

[0042] When deployed in a production environment such as the architecture described in Figure 2, a digital assistant such as the digital assistant 115A built using DABP 105 can be used to perform various tasks through natural language-based conversation between the digital assistant 115A and its user 125. As described above, the digital assistant 115A shown in Figure 1 can be made available or accessible to the user 125 through a variety of different channels, including, but not limited to, a certain application, a social media platform, various messaging services and applications, and other applications or channels. A single digital assistant may have multiple channels configured for this purpose so that it can operate in different services and be accessed by different services simultaneously.

[0043] As part of a conversation, user 125 may provide one or more user inputs 130 to the digital assistant 115A and receive responses 135 from the digital assistant 115A. The conversation may include one or more of the user inputs 130 and responses 135. Through these conversations, user 125 may request one or more tasks to be performed by the digital assistant 115A, and in response, the digital assistant 115A is configured to perform the tasks requested by the user and respond to user 125 with an appropriate response using one or more LLMs 140.

[0044] User input 130 is generally in natural language form and may be called a utterance, prompt, query, request, etc. User input 130 can be in text form, such as when the user types a sentence, question, text fragment, or even a single word and provides it as input to the digital assistant 115A. In some embodiments, user input 130 can be in audio input or utterance form, such as when the user says or speaks something that is provided as input to the digital assistant 115A. User input 130 is generally in the language spoken by the user 125. For example, user input 130 may be English or some other language. When user input 130 is in utterance form, the utterance input is converted to text form user input 130 in that particular language, and the text utterance is then processed by the digital assistant 115A. Various speech-to-text processing techniques may be used to convert the utterance or audio input to text utterance, and the text utterance is then processed by the digital assistant 115A. In some embodiments, speech-to-text conversion may be performed by the digital assistant 115A itself. For the purposes of this disclosure, it is assumed that user input 130 is either a text utterance directly provided by the user 125 of the digital assistant 115A, or the result of conversion of an input utterance into text format. However, this is not intended to be restrictive or limiting in any way.

[0045] User input 130 may be used by the digital assistant 115A to determine a list of candidate agents 145A-N. The list of candidate agents (e.g., 145A-N) includes agents configured to perform one or more actions that could potentially facilitate a response 135 to user input 130. The list may be determined by performing a search, such as a semantic search, in a context and memory store having one or more indices containing metadata for all agents 145 available to the digital assistant 115A. The metadata for candidate agents 145A-N in the list of candidate agents is then combined with the user input to construct an input prompt for one or more LLMs 140.

[0046] The digital assistant 115A is configured to use one or more LLMs 140 to apply NLP techniques to text and / or utterances to understand input prompts and to apply natural language understanding (NLU), including syntactic and semantic analysis of the text and / or utterances, to determine the meaning of user input 130. Determining the meaning of an utterance may require identifying the user's goals, one or more user intentions, the context surrounding various words or phrases or sentences, one or more entities corresponding to the utterance, etc. NLU processing may include parsing the received user input 130 to understand the structure and meaning of the utterance, and refining and modifying the utterance to construct a more understandable form (e.g., logical form) or structure for the utterance. The NLU processing performed may include various NLP-related processes such as sentence analysis (e.g., tokenization, lexicography, identifying part-of-speech tags for the sentence, identifying named entities in the sentence, generating dependency trees to represent the sentence structure, splitting the sentence into clauses, analyzing individual clauses, resolving anaphora, performing chunking, etc.). In one example, NLU processing or any part of it is performed by LLM140 itself. In other examples, LLM140 uses other resources to perform parts of the NLU processing. For example, the syntax and structure of an input utterance can be identified by processing the sentence using parsers, part-of-speech tagging tools, named entity recognition models, pre-trained language models such as BERT, etc.

[0047] By understanding the meaning of the utterance, one or more LLMs 140 generate an execution plan, which identifies one or more agents (e.g., agent 145A) from a list of candidate agents and performs and executes one or more actions or operations in response to the understood meaning or user objective. One or more actions or operations are then performed by the digital assistant 115A in one or more assets (e.g., asset 150A - knowledge, API, SQL operation, etc.) and / or context and memory stores. The execution of one or more actions or operations generates output data from one or more assets and / or relevant context and memory information from the context and memory store, including the context for the current conversation with the digital assistant 115A. The output data and relevant context and memory information are then combined with user input 130 to construct an output prompt for one or more LLMs 140. Based on the output data and relevant context and memory information, as well as user input 130, the LLMs 140 synthesize a response 135 to user input 130. Next, response 135 is sent to user 125 either as an individual response or as part of a conversation with user 125.

[0048] For example, user input 130 may request that a pizza be ordered by providing a statement such as "I want to order a pizza." Upon receiving such a statement, the digital assistant 115A is configured to understand the meaning or goal of the statement and take appropriate action. Appropriate action may require providing a response 135 to the user, along with a question requesting user input such as the type of pizza the user wants to order, the size of the pizza, and any toppings. The question requested from the user may be generated by performing an action through an agent (e.g., agent 145A) on a knowledge asset (e.g., a pizza restaurant menu) to retrieve information related to ordering a pizza (e.g., the user must provide the type, size, toppings, etc., in order to order a pizza). The response 135 provided by the digital assistant 115A may be in natural language format and may typically be in the same language as the user input 130. As part of generating these responses 135, the digital assistant 115A may perform natural language generation (NLG) using one or more LLMs 140. For a user ordering a pizza through a conversation between the user and the digital assistant 115A, the digital assistant 115A may provide all the necessary information for ordering the pizza and then guide the user so that the pizza is ordered at the end of the conversation. The order may be placed by performing an action via an agent (e.g., agent 145A) in an API asset (e.g., an API for ordering pizza) to upload or provide the pizza order to the restaurant's ordering system. The digital assistant 115A may terminate the conversation by generating a final response 135 that provides the user 125 with information indicating that the pizza has been ordered.

[0049] The various examples provided in this disclosure illustrate and / or illustrate speech in English, but this means only that they are examples. In some embodiments, the digital assistant 115 may also process speech in languages ​​other than English. The digital assistant 115 may provide subsystems (e.g., components that perform NLU functions) configured to process for different languages. These subsystems may be implemented as pluggable units that can be invoked using service calls from the NLU core server. This includes making the NLU processing flexible and scalable for each language and allowing for different orders of processing. Language packs may be provided for individual languages, and language packs may register a list of subsystems that may be provided from the NLU core server.

[0050] The embodiment in Figure 1 shows, but is not limited to, a digital assistant 115A comprising one or more LLMs 140 and one or more agents 145A-N. The digital assistant may include various other components that provide the functionality of the digital assistant (e.g., other systems and subsystems which will be described in more detail with respect to Figure 2). The digital assistant 115A, its systems and subsystems may be implemented in software only (e.g., code and instructions stored on a computer-readable medium and executable by one or more processors), in hardware only, or in a combination of software and hardware.

[0051] Figure 2 is an example architecture for a computing environment 200 for a digital assistant implemented by generative artificial intelligence in various embodiments. As shown in Figure 2, infrastructure and various services and features can be used to enable a user to interact with a digital assistant (e.g., digital assistant 115A as described with respect to Figure 1) based at least in part on a series of prompts such as a conversation. Below is a detailed walkthrough of the conversation flow and the roles and responsibilities of the components, services, models, etc. of the computing environment 200 within the conversation flow. In this walkthrough, assume that a user named "David" is interested in changing his 401k savings, and in utterance 202, David provides the digital assistant with the following input: "Hi, how are you, I'd like to change my 401k savings."

[0052] Speech 202 can be communicated to a digital assistant (e.g., via a text dialog box or microphone) and provided as input to an input pipeline 208. The input pipeline 208 is used by the digital assistant to create an execution plan 210, which identifies one or more agents to address the request in speech 202 and one or more actions for the one or more agents to perform in response to the request. A two-step approach can be taken via the input pipeline 208 to generate the execution plan 210. First, a search 212 can be performed to identify a list of candidate agents. Search 212 involves querying the context and index 213 of the memory store 214 based on speech 202. In some examples, search 212 is a semantic search performed using words from speech 202. The semantic search uses NLP and selectively machine learning techniques to understand the meaning of speech 202 and retrieve relevant information from the context and memory store 214. Traditional keyword-based search relies on an exact match between words in a query and data in the context and memory store 214, whereas semantic search, in contrast, considers the relationship between words, the query context, synonyms, and other linguistic nuances. This allows the digital assistant to provide more accurate and contextually relevant results, enabling a more effective understanding of the user's intent in their utterance 202.

[0053] The context and memory store 214 is implemented using a data framework for connecting external data to the LLM 216, facilitating users to plug in custom data sources. The data framework provides a rich and efficient search mechanism on data from various sources such as files, documents, data stores, and APIs. The data can be external (e.g., corporate assets) and / or internal (e.g., user preferences, memory, digital assistant, and agent metadata). In some examples, the data includes metadata extracted from artifacts 217 associated with the digital assistant and its agents 218 (e.g., 218a and 218b). The artifacts 217 for the digital assistant include information about the general capabilities of the digital assistant and specific information about the capabilities of each agent 218 (e.g., behaviors) available to the digital assistant (e.g., agent artifact). Additionally or alternatively, artifact 217 may include parameters or information associated with artifact 217, which may be used to define agent 218, where parameters or information associated with artifact 217 may include name, description, one or more actions, one or more assets, one or more customizations, etc. In some examples, the data further includes metadata extracted from assets 219 associated with the digital assistant and its agent 218 (e.g., 218a and 218b). Assets 219 may be resources such as API 220, files and / or documents 222, data store 223, etc., that are available to agent 218 for the execution of actions (e.g., actions 225a, 225b, and 225c). The data is indexed as index 213 in the context and memory store 214, where index 213 is a data structure that provides a quick and efficient way to look up and retrieve specific data records within the data.As a result, the context and memory store 214 provides a searchable, comprehensive record of the capabilities of all agents and associated assets available to the digital assistant to respond to requests.

[0054] The results of search 212 include a list of candidate agents that are not only available to the digital assistant to respond to the request but also potentially facilitate the generation of a response to utterance 202. The list of candidate agents includes the context associated with each candidate agent and metadata from the memory store 214 (e.g., metadata extracted from artifact 217 and asset 219). The list may be limited to a predetermined number of candidate agents that satisfy the query (e.g., the top 10) or may include all agents that satisfy the query. To construct the input prompt 227 for LLM 216, the list of candidate agents with relevant metadata is attached to utterance 202. In some examples, the context 229 relating to utterance 202 is additionally attached to the list of candidate agents and utterance 202. The context 229 is searchable from the context and memory store 214 and includes user session information, dialogue state, conversation or context history, user information, or any combination thereof. Search 212 is important for the digital assistant. This is because the digital assistant filters out agents that are less likely to be able to easily generate a response to utterance 202. This filter ensures that the number of tokens (e.g., word tokens) generated from input prompt 227 remains below the maximum token limit or the context limit set for LLM 216. The token limit represents the maximum amount of text that can be input into the LLM. This limit is of a technical nature and arises from computational constraints such as memory and processing resources, thereby ensuring that the LLM can treat the input prompt as input.

[0055] The second step of the two-step approach is for LLM216 to generate an execution plan 210 based on the input prompt 227. LLM216 has a deep generative model architecture (e.g., a reversible or autoregressive architecture) for generating the execution plan 210. In some examples, LLM216 has over 100 billion parameters and generates the execution plan 210 using autoregressive language modeling within a transformer architecture, allowing LLM216 to capture complex patterns and dependencies in the input prompt 227. LLM216's ability to generate the execution plan 210 is the result of training on diverse and extensive text data, enabling LLM to understand human language across a wide range of contexts. During training, LLM216 learns to predict the next word in a given sequence where the context of the preceding word is given. This process requires adjusting the model's parameters (weights and biases) based on the error between the prediction and the actual next word in the training data. When LLM216 receives input, such as an input prompt 227, it tokenizes the text into smaller units, such as words or subwords. Each token is then represented as a vector in a higher-dimensional space. LLM216 processes the input sequence token by token, maintaining an internal representation of the context. LLM216's attention mechanism allows it to weight the importance of different tokens in the context that will generate the next word. For each token in the vocabulary, LLM216 computes a probability distribution based on learned parameters. This probability distribution represents the likelihood that each token is the next word given the context. To generate an execution plan 210, LLM216 samples tokens from the computed probability distribution. The sampled tokens become the next word in the generated sequence. This process is repeated many times, with each newly generated token influencing the context for generating subsequent tokens. LLM216 can continue generating tokens until a predetermined length or stopping condition is reached.

[0056] In some instances, as shown in Figure 2, LLM216 may be unable to generate a complete execution plan 210 due to a lack of information, such as when more information is needed to determine the appropriate agent for a response or to perform one or more actions. In this particular instance, LLM216 determines that in order to change the 401k contribution as a user request, it needs to understand whether the user wants to change the contribution by a percentage or by a certain amount. To obtain this information, LLM216 (or another LLM, such as LLM236) generates an end-user response 235 ("I'm fine. Do you want to change the contribution by a percentage or by a certain amount? [Percentage][Amount]") to an input prompt 227 that provides the missing information so that LLM216 can generate a complete execution plan 210. In some instances, the response may be represented in a GUI dialog box with one or more GUI elements that allow for easier responses by the user. In other instances, the response may be represented in a GUI dialog box that allows the user to reply using a dialog box (or alternative means such as a microphone). In this particular example, the user responds with an additional query 238 (What is my current 401k contribution? Also, what is my contribution limit?) to gather additional information so that the user can reply to response 235. The subsequent response—additional query 238—is entered into input pipeline 208, where the same process described above is performed with respect to utterance 202, but this time in the context of the previous utterance / reply from the user's conversation with the digital assistant (e.g., utterance 202 and response 235). Now, as shown in Figure 2, LLM 216 has all the information it needs and can generate a complete execution plan 210.

[0057] The execution plan 210 includes an ordered list of agents and / or actions that can be used and / or executed to adequately respond to requests such as an additional query 238. For example, as shown in Figure 2, the execution plan 210 may be an ordered list including a first agent 242a that can execute a first action 244a via the relevant asset, and a second agent 242b that can execute a second action 244b via the relevant asset. The agents, and by extension the actions, may be ordered such that the first action 244a is executed by the first agent 242a before the second action 244b is executed by the second agent 242b. In some examples, the execution plan 210 may be ordered based on the dependencies indicated by the agents and / or actions included in the execution plan 210. For example, if executing the second agent 242b depends on, or otherwise requires, the output generated by the first agent 242a performing the first operation 244a, the execution plan 210 may order the first agent 242a and the second agent 242b to comply with that dependency. Other examples of dependencies are possible, as should be understood.

[0058] The execution plan 210 is then sent to the execution engine 250 for execution. The execution engine 250 includes a number of engines, including a natural language-to-programming language translator 252, a knowledge engine 254, an API engine 256, a prompt engine 258, etc., to execute the agent's actions and execute the execution plan 210. For example, a natural language-to-programming language translator 252, such as a Conversation to Oracle Meaning Representation Language (C2OMRL) model, may be used by the agent to translate natural language into an intermediate logical form (e.g., OMRL), convert the intermediate logical form into a system programming language (e.g., SQL), and execute actions and / or execute the system programming language on assets 219, such as a data store 223, to obtain data or information (e.g., execute an SQL query). The knowledge engine 254 may be used by the agent to obtain data or information from context and memory stores 214 or assets 219, such as files / documents 222. The API engine 256 may be used by the agent to call API 220 to perform actions and / or obtain data or information, and to interface with applications such as retirement fund account management applications. The prompt engine 258 may be used by the agent to construct prompts for input to LLMs, such as LLMs, in the context and memory store 214 or asset 219, in order to perform actions and / or obtain data or information.

[0059] The execution engine 250 implements the execution plan 210 by using the appropriate engine to run each agent and / or perform each action in an order based on an ordered list of agents and / or actions. To facilitate this implementation, the execution engine 250 is communicatively connected to the agents (e.g., 242a, 242b, etc.), the context and memory store 214, and the assets 219 (e.g., via a public and / or provision network). For example, as shown in Figure 2, when the execution engine 250 implements the execution plan 210, the execution engine 250 first uses the API engine 256 to run agent 242a and action 244a to call API 220 and interface with the retirement fund account management application to retrieve the user's current 401k contributions. The execution engine 250 can then use the knowledge engine 254 to run agent 242b and action 244b to retrieve knowledge about the 401k contribution limits. In some instances, knowledge is retrieved by the knowledge engine 254 from asset 219 (e.g., file / document 222). In other instances (as in this particular instance), knowledge is retrieved by the knowledge engine 254 from context and memory store 214. Knowledge retrieval and operation execution using context and memory store 214 can be carried out using a variety of techniques, including internal task mapping and / or machine learning models such as additional LLM models. For example, a query for "What is my 401k limit?" and the associated agent may be mapped to a "semantic search" knowledge task type to search index 213 within context and memory store 214 for a response to a given query. As another example, a request such as "Can you summarize the key points related to my 401k?" may be or include a "summarization" knowledge task type that can be mapped to a different index within context and memory store 214 having an LLM trained to produce a natural language response (e.g., a summary of key points related to my 401k) to a given query.Over time, libraries of generic end-user tasks or behavioral types (e.g., semantic search, summarization, comparison / contrast, heterogeneous data synthesis, etc.) can be constructed to ensure that the indexes and models in the context and memory store 214 are optimized for various tasks or behavioral types.

[0060] The result of executing the execution plan 210 is output data 269 (e.g., results of the operation, data, information, etc.) sent to the output pipeline 270 to generate the end-user response 272. For example, output data 269 from assets 219 (knowledge, APIs, dialog history, etc.) and related information from the context and memory store 214 may be sent to the output pipeline 270. The output data 269 is attached to the utterance 202 to construct an output prompt 274 for input to the LLM 236. In some examples, context 229 relating to the utterance 202 is additionally attached to the output data 269 and the utterance 202. The context 229 is searchable from the context and memory store 214 and includes user session information, dialog state, conversation or context history, user information, or any combination thereof. The LLM 236 generates the response 272 based on the output prompt 274. In some examples, the LLM 236 is the same or similar model as the LLM 216. In other examples, LLM236 differs from LLM216 (e.g., trained on different sets of data, trained on different architectures, trained for one or more different tasks, etc.). In any example, LLM236 has a deep generative model architecture (e.g., a reversible or autoregressive architecture) for generating response 272 using a training and generation process similar to that described above for LLM216. In some examples, LLM236 has more than 100 billion parameters and generates response 272 using autoregressive language modeling within a transformer architecture, allowing LLM236 to capture complex patterns and dependencies in output prompt 274.

[0061] In some examples, the end-user response 272 may be in the format of a conversational message model (CMM) and may be output as a rich multi-model response. The CMM defines various message types that a digital assistant can send to a user (outbound) and that a user can send to a digital assistant (inbound). In one example, the CMM identifies the following message types: • Text: Basic text message • Card: Card display including title, and optionally description, image, and link. • Attachment: Message containing a media URL (file, image, video, or audio) • Location: Messages containing geolocation coordinates • Postback: Message containing a postback payload Messages defined in CMM are channel-agnostic and can be generated using CMM syntax. Channel-specific connectors convert CMM messages into the format required by a specific channel, enabling users to run digital assistants across multiple channels without having to generate a separate message format for each channel.

[0062] Finally, the output pipeline 270 sends a response 272 to the end user via a user device or interface, etc. In some instances, the response 272 is provided within a GUI dialog box, allowing the user to view and reply using the dialog box (or alternative means such as a microphone). In other instances, the response 272 is provided within a GUI dialog box with one or more GUI elements, allowing for easier response by the user. In this particular instance, the first response 272 to the additional query 238 (How much is my current 401k contribution? Also, can you tell me my contribution limit?) is provided within a GUI dialog box. Additionally, to follow up on obtaining the information still requested for the initial statement 202, LLM 236 generates another response 272 prompting the user for the missing information (Do you want to change your contribution by percentage or amount? [Percentage][Amount]).

[0063] The embodiment of the computing environment 200 in Figure 2 shows a digital assistant interacting in a specific conversational flow, but this is not intended to be restrictive and is simply provided to facilitate a better understanding of the roles and responsibilities of the computing environment 200's components, services, models, etc., within the conversational flow.

[0064] Block diagram for a computing environment including a digital assistant Figure 3 is a simplified block diagram of a computing environment including a digital assistant 300 capable of executing execution plans to respond to user utterances in various embodiments. In some embodiments, the utterance may be provided by the user to the digital assistant 300 via input 302. Input 302 may be or may include natural language utterances, which may include text input, voice input, image input, or any other appropriate input for the digital assistant 300. For example, input 302 may include text input provided by the user via a keyboard or touchscreen of a computing device used by the user. In other examples, input 302 may include spoken words provided by the user via a microphone of the computing device. In other examples, input 302 may include image data, video data, or other media provided by the user via the computing device. Additionally or alternatively, input 302 may include instructions for actions to be performed by the digital assistant 300 on behalf of the user. For example, input 302 may include instructions that the user wants to order a pizza, instructions that the user wants to renew their retirement account contributions, or other appropriate instructions.

[0065] Input 302 may be provided to the planner 304 of the digital assistant 300. The planner 304 may generate an execution plan based on input 302 and the context provided to the planner 304. The planner 304 may receive input 302 and make calls to the semantic context and memory store 306 to retrieve the context. In some embodiments, the semantic context and memory store 306 includes one or more assets 308 which may be similar to or identical to asset 219. The planner 304 may provide the semantic context and memory store 306 with at least a portion of input 302, and the semantic context and memory store 306 may perform a semantic search in the assets 308 and / or other knowledge contained in the semantic context and memory store 306. The semantic search may generate a list of candidate actions from all actions that can be performed through one or more of the assets 308, which may be used to address input 302 or any subset thereof. In some embodiments, candidate actions may be generated based solely on contextual information. For example, input 302 may be compared with action metadata to generate a candidate action.

[0066] Planner 304 may use candidate actions to form input prompts for a generative artificial intelligence model. The generative artificial intelligence model may be or may contain multiple generative artificial intelligence models 310, which may include one or more large language models (LLMs). Planner 304 may be communicably coupled to multiple generative artificial intelligence models 310 via a Common Language Model Interface Layer (CLMI layer 312). The CLMI layer 312 may be an adapter layer that allows Planner 304 to call various different generative artificial intelligence models that may be included in the multiple generative artificial intelligence models 310. For example, Planner 304 may generate an input prompt and provide the input prompt to the CLMI layer 312, which can convert the input prompt into a model-specific input prompt to be input to a particular generative artificial intelligence model. Planner 304 may receive an output from a particular generative artificial intelligence model that can be used to generate an execution plan. The output may be or may contain an execution plan. In other embodiments, the output may be used as input by Planner 304 to enable Planner 304 to generate an execution plan. The output may include a list of one or more executable actions based on the statements contained in input 302. In some embodiments, the execution plan may include an ordered list of actions to be performed to address input 302.

[0067] The planner 304 can send the execution plan to the execution engine 314 in order to execute the execution plan. The execution engine 314 may perform an iterative process for each executable operation included in the execution plan. For example, for each executable operation, the execution engine 314 may identify an operation type, invoke one or more states for executing the operation type, and execute the executable operation using assets to obtain output. The execution engine 314 may be communicatively coupled to an operation executor 316, which may be configured to execute at least part of the iterative process. For example, the operation executor 316 may identify one or more operation types for each executable operation included in the execution plan. In a particular example, the operation executor 316 may identify a first operation type 318a for a first executable operation of the execution plan. The first operation type 318a may be or include a semantic operation such as summarizing text or other appropriate semantic operation. Additionally or alternatively, the operation executor 316 may identify a second operation type 318b for a second executable operation of the execution plan. The second operation type 318b may require calling an API, such as an API for making adjustments to an account, or other appropriate API. Additionally or alternatively, the operation executor 316 may identify a third operation type 318c for a third executable operation of the execution plan. The third operation type 318c may be or include a knowledge operation, such as providing an answer to a technical question, or other appropriate knowledge operation. In some embodiments, the third operation type 318c may require making a call to at least one of a plurality of generative artificial intelligence models 310 to retrieve specific knowledge or a specific answer. In other embodiments, the third operation type 318c may require making a call to a semantic context and a memory store 306 or other knowledge document.

[0068] The action executor 316 may continue the iterative process based on the action type indicated by the executable action included in the execution plan. Once the action executor 316 identifies the action type, it may identify and / or invoke one or more states for each executable action based on the action type. The action state may require an indication of whether the action can or has been executed. For example, the states for a particular executable action may include “Preparing,” “Ready,” “Executing,” “Success,” “Failure,” or any other appropriate state. Based on the invoked state of the executable action, the action executor 316 may determine whether the executable action is ready to be executed, and if the executable action is not ready to be executed, the action executor 316 may identify any missing information or assets necessary to proceed with executing the executable action. In response to determining that it is ready to perform a executable operation, and in response to determining that there are no dependencies for the executable operation (or that existing dependencies have been met), the operation executor 316 may perform the executable operation to produce an output.

[0069] The operation executor 316 can execute each executable operation or any subset thereof included in the execution plan to generate a set of outputs. The set of outputs may include knowledge outputs, semantic outputs, API outputs, and other appropriate outputs. The operation executor 316 may provide the set of outputs to the output engine 320. The output engine 320 may be configured to generate a second input prompt based on the set of outputs. The second input prompt may be provided to at least one of a plurality of generative artificial intelligence models 310 to generate a response 322 to input 302. The output engine 320 may make a call to at least one generative artificial intelligence model, thereby causing the at least one generative artificial intelligence model to generate a response 322, which may be provided to the user in response to input 302. In some embodiments, the at least one generative artificial intelligence model used to generate the response 322 may be similar to, identical to, or otherwise the same as, the at least one generative artificial intelligence model used to generate outputs for generating the execution plan.

[0070] Figure 4 is a simplified block diagram showing data flows for updating semantic context and memory store 306 for a digital assistant 300 that can execute execution plans to respond to user utterances, according to various embodiments. As shown in Figure 4, entity 402 can provide different types of inputs for updating semantic context and memory store 306. The first data flow 400a represents a knowledge update for semantic context and memory store 306, and the second data flow 400b represents an API update for semantic context and memory store 306.

[0071] As shown in the first data flow 400a, entity 402 can provide knowledge input 404 for updating the semantic context and memory store 306. Entity 402 may provide knowledge input 404 via a computing device configured to provide a UI / API 406. The UI / API 406 may be or include a user interface that can be used to manage APIs with respect to the digital assistant 300 or otherwise manage updates to the semantic context and memory store 306. Knowledge input 404 may include updates to rules, additional information that can be provided to the user, and any other appropriate knowledge input. The UI / API 406 can receive knowledge input 404 and provide knowledge input 404 or a converted version thereof to the intake pipeline 408. The intake pipeline 408 may be communicatively coupled to one or more LLMs 410 that may be similar to or identical to one or more generative artificial intelligence models contained in a plurality of generative artificial intelligence models 310. The intake pipeline 408 may generate input prompts based on the knowledge input 404 that can be provided to one or more LLMs 410 to produce outputs. In some embodiments, one or more LLMs 410 may be configured to generate an output based on an input prompt, the output may be or may include content that can be stored in a semantic context and memory store 306 based on a knowledge input 404. The content may include the substance of the knowledge input 404 in a concise and common format for storage in the semantic context and memory store 306. Additionally or alternatively, one or more LLMs 410 may generate a summary of the knowledge input 404, the summary may be provided to the UI / API 406.

[0072] Content and indexes based on summaries can be stored in the semantic context and memory store 306. The semantic context and memory store 306 may include the document store 412, the metadata index 414, and any other appropriate data repositories and / or indexes. Content generated by one or more LLMs 410 may be sent to the document store 412 by the intake pipeline 408 for storage, and the UI / API 406 may send indexes to the metadata index 414 for storage. The content may be accessible to the digital assistant 300 via index searches, etc., in order to respond to future inputs related to the knowledge input 404. Additionally or alternatively, the UI / API 406 may send summaries to the ATP 416. The ATP 416 may be or include a data repository capable of storing descriptions of assets and knowledge stored in the semantic context and memory store 306.

[0073] As shown in the second data flow 400b, entity 402 may provide an API input 418 to update the semantic context and memory store 306. Entity 402 may provide the API input 418 via a computing device configured to provide the UI / API 406. The UI / API 406 may be or include a user interface that can be used to manage APIs with respect to the digital assistant 300 or otherwise to manage updates to the semantic context and memory store 306. The API input 418 may include additional assets that require the API or otherwise include updates to APIs that can be invoked by the digital assistant 300. For example, the API input 418 may include instructions that enable the digital assistant 300 to make a new API call that requires a new asset. In a particular example, the API input 418 may instruct the digital assistant 300 to update a new type of account. The UI / API 406 may store artifacts or semantic object models related to the API input 418 in ATP 416. Additionally or alternatively, UI / API 406 can generate or identify metadata based on API input 418, and UI / API 406 can send indices requiring metadata to the semantic context and metadata index 414 of memory store 306.

[0074] Figure 5 is a simplified block diagram of an example of a data flow for planning responses to user utterances using a digital assistant 300 capable of executing execution plans in various embodiments. As shown in Figure 5, input 502 may be received, for example, from the user of the digital assistant 300. In some embodiments, input 502 may be or include natural language, such as natural language text, natural language audio, or other appropriate form of natural language. Input 502 may be received by the action planner 504 via a generative artificial intelligence dialogue manager 506, etc. The generative artificial intelligence dialogue manager 506 may be or include an LLM-based dialogue manager, which can be an entry point for user input, can detect existing actions, can rewrite queries, and can perform action fulfillment. For example, if the generative artificial intelligence dialogue manager 506 determines that an action is not currently being performed or is not scheduled to be performed, it may provide input 502 or any subset or variation thereof to a candidate action generator 508.

[0075] The candidate action generator 508 can perform or cause a semantic search based on the input 502, or any subset or variation thereof. For example, the candidate action generator 508 may generate a query and send it to the semantic context and memory store 306, which then parses one or more indices to identify a candidate action 509 based on the input 502, etc. The query may require parsing and / or searching through the action and metadata index 510 to identify the candidate action 509. In some embodiments, the semantic search may require searching within the asset 512 to identify the candidate action 509. For example, the query may include a task indicated by the input 502, which may cause the semantic context and memory store 306 to compare the indicated task with metadata about the asset 512, thereby identifying the candidate action 509 using only context such as metadata about the asset 512. In a particular example, a query might include a task such as updating an account balance, and a semantic search might require searching for assets 512 for a specific asset, such as an API asset, that have metadata indicating that a particular asset can update an account balance. In such an example, the results of the semantic search might include candidate actions 509 that describe specific actions that can be performed by the particular asset.

[0076] Candidate action 509 may also be influenced by data stored in short-term memory 514 and / or long-term memory 516. For example, past access data may be retrieved by the candidate action generator 508 for use when determining candidate action 509. Past access data may include historical data indicating actions previously selected by other users in response to other inputs provided by other users. For example, if a particular action has been selected most of the time in the past in response to similar inputs, the candidate action generator 508 may include the particular action in candidate action 509, regardless of whether the metadata associated with the particular action, or the assets capable of performing the particular action, are similar to the input 502 or query provided by the candidate action generator 508.

[0077] Candidate actions 509, which include actions selected by the candidate action generator 508 based on past access data and the similarity between the actions and queries provided to initiate a semantic search, may be provided to the generative artificial intelligence planner 518. The generative artificial intelligence planner 518 can receive the candidate actions 509 and generate an execution plan 520 based on the actions included in the candidate actions 509. For example, the generative artificial intelligence planner 518 can determine whether each action of the candidate actions 509, or any subset thereof, is available and can generate an ordered list of available actions as the execution plan 520. In some embodiments, the generative artificial intelligence planner 518 can identify any dependencies that exist between the actions included in the candidate actions 509 and can include these dependencies in the execution plan 520. In some embodiments, for each executable operation included in the candidate operation 509, the generating artificial intelligence planner 518 may generate an artifact representing the executable operation, the artifact may include any dependent instructions, whether the executable operation is available or ready to be executed, if any, what additional information is needed to convert the state of the executable operation to ready to be executed, and / or any other appropriate instructions.

[0078] The execution plan 520 may be provided to an execution engine, such as an execution engine 314, which can execute the operations contained in the execution plan 520. In some embodiments, the execution engine can then execute the operations contained in the execution plan 520 that have been indicated as ready to be executed. That is, the execution engine may execute the operations contained in the execution plan 520 that have called a ready to be executed state, such as having no dependencies (or all dependencies being satisfied). An action tracker 522 can track the progress of executing the execution plan 520. For example, the action tracker 522 may determine whether an operation has been executed, whether the executed operation was successful or unsuccessful, etc. The status of the operations contained in the execution plan 520 may be saved and continuously updated or maintained in short-term memory 514 for future or repeated use of the generating artificial intelligence planner 518.

[0079] Flowchart for executing the execution plan Figure 6 is a flowchart of process 600 for executing an execution plan using a digital assistant, including generative artificial intelligence in various embodiments. The processes shown in Figure 6 may be carried out in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of each system, hardware, or combination thereof. The software may be stored in a non-temporary storage medium (e.g., a memory device). The processes shown in Figure 6 and described below are illustrative and not intended to be limiting. Figure 6 shows various processing steps performed in a particular sequence or order, but this is not intended to be limiting. In some alternative embodiments, the steps may be performed in some different order, or some steps may be performed at least partially in parallel. In some embodiments, the processes shown in Figure 6 may be carried out by one or more of the components, computing devices, services, etc., such as the digital assistant, first and / or second generative artificial intelligence models (LLMs), as exemplified and described with respect to Figures 1 to 5.

[0080] In 602, a list containing one or more executable actions is generated by a first generative artificial intelligence model. The list of one or more executable actions may be generated by the first generative artificial intelligence model based on a first prompt containing a natural language utterance provided by a user of the digital assistant. In some examples, the first prompt may contain a natural language utterance extended by another prompt, thereby causing the first generative artificial intelligence model to output a list containing one or more executable actions. The list containing one or more executable actions may contain one or more executable actions, each executable action may be associated with an asset that can be accessed or invoked by the digital assistant. Executable actions may include actions that can be performed by an execution engine 314, etc., to perform a task indicated by a natural language utterance. In certain examples, tasks may include providing information requested by the user, updating an account based on a request from the user, etc. In some embodiments, the planner 304 may generate a first prompt and send the first prompt to the first generative artificial intelligence model, thereby causing the first generative artificial intelligence model to output a list containing one or more executable actions. In some embodiments, generating a list of one or more executable actions may include selecting one or more executable actions from a list of candidate actions determined via a semantic search of semantic indices that may be contained in the semantic context and memory store 306.

[0081] In 604, an execution plan is created, which includes one or more executable actions. An execution plan that may be similar to or identical to execution plan 520 may be an ordered list of one or more executable actions, or may include such a list. In some embodiments, creating an execution plan may require evaluating one or more executable actions. The evaluation may include evaluating one or more executable actions based on one or more ongoing conversation paths, if any, initiated by the user. The evaluation may also include evaluating one or more executable actions based on any currently active execution plan. Evaluating one or more executable actions may require determining whether similar actions are scheduled to be executed in an ongoing conversation path or in a currently active execution plan, or have been executed previously, compared to one or more executable actions.

[0082] In some embodiments, creating an execution plan may, in response to an evaluation determining that a natural language utterance is part of an ongoing conversation path, additionally incorporate one or more executable actions into the currently active execution plan associated with the ongoing conversation path. The currently active execution plan may, after incorporating one or more executable actions, be or include an ordered list of one or more executable actions and one or more previous actions. In some embodiments, creating an execution plan may, in response to an evaluation determining that a natural language utterance is not part of an ongoing conversation path, additionally create a new execution plan which may, or may include, an ordered list of one or more executable actions.

[0083] In some embodiments, creating an execution plan may additionally include identifying one or more executable actions that provide information or knowledge for generating a response to a natural language utterance, based at least in part on metadata associated with the candidate agent actions in the list of candidate agent actions. Additionally or alternatively, creating an execution plan may additionally include generating a structured output for the execution plan by creating an ordered list of one or more executable actions and a set of dependencies among the one or more executable actions.

[0084] In 606, the execution plan is executed using an iterative process for each of the executable actions of one or more executable actions. In some embodiments, the iterative process may include identifying an action type for an executable action, invoking one or more states configured to execute the action type, and, by one or more states, executing the executable action using assets to obtain an output. An action type may represent a workflow or a sequence or set of states to be invoked for the corresponding executable action. For example, if the corresponding executable action has a first action type, the digital assistant may use a first set of states to be invoked as a workflow for executing the executable action, and if the corresponding executable action has a second action type, the digital assistant may use a second set of states to be invoked as a workflow for executing the corresponding executable action, and the first set of states and the second set of states may be different from each other.

[0085] One or more states may include information indicating whether a particular action is ready to be performed, whether it requires more information or additional assets to be performed, whether it has been performed (e.g., successfully or unsuccessfully), or whether it is currently being performed. For example, one or more states may be invoked to perform a particular type of action. A first state may be invoked to identify whether an executable action having a particular type of action has been performed in order to generate a response. If, in response to invoking the first state, it is determined that the executable action has been performed and a response has been generated, the iterative process may proceed. If, in response to invoking the first state, it is determined that the executable action has not been performed or a response has not been generated, a second state may be invoked to determine whether one or more parameters are available for the executable action. If one or more parameters are not available, the digital assistant may generate a response requesting one or more parameters from the user. In other embodiments, if one or more parameters are not available, the digital assistant may generate a prompt for the generative artificial intelligence model to identify or generate one or more parameters.

[0086] One or more states may be used to perform executable actions with an asset to obtain an output. For example, a third state, which may be different from the first and / or second states described above, may be invoked to generate an output. The third state may be an execution state that causes a digital assistant to make a call to the asset or otherwise initiate an operation using the asset to produce an output. In some embodiments, the output may be added to a set of outputs provided to an output engine that may be used to generate a response. The set of outputs may include outputs generated by performing each executable action included in the execution plan.

[0087] In some embodiments, the iterative process may additionally include determining whether one or more parameters are available for a executable operation. Certain states may be invoked to identify one or more parameters or to determine that one or more parameters are not available. In embodiments where one or more parameters are available, the iterative process may additionally include invoking one or more states as described above and performing a executable operation based on one or more parameters. In an example where one or more parameters are not available, the iterative process may additionally include retrieving one or more unavailable parameters, then invoking one or more states and performing a executable operation based on one or more parameters. In some embodiments, retrieving one or more parameters may include generating a natural language request to a user to retrieve one or more parameters for a executable operation and receiving a response from the user, which may include one or more parameters. In some embodiments, the iterative process may additionally include determining, based on a set of dependencies among one or more executable operations, that there is one or more dependencies between a executable operation and at least one other executable operation among one or more executable operations. A executable operation may be executed sequentially according to one or more dependencies that have been determined to exist between an executable operation and at least one other executable operation.

[0088] In 608, a second prompt is generated based on the output obtained by performing one or more executable operations. The second prompt may be generated by an output engine, which can generate the second prompt based on a set of outputs. The second prompt may include each of the outputs in the set of outputs and may include an extended natural language or other input to cause a generative artificial intelligence model to generate a desired output.

[0089] In 610, the response to a natural language utterance based on a second prompt is generated by a second generative artificial intelligence model. In some embodiments, the second generative artificial intelligence model may be similar to or identical to the first generative artificial intelligence model. In other embodiments, the second generative artificial intelligence model may be different from the first generative artificial intelligence model. A second prompt can be provided to the second generative artificial intelligence model, thereby causing the second generative artificial intelligence model to generate a response. In some embodiments, the response may be or include natural language text, fields, links, or other appropriate components for the response. The natural language text may be or include words, phrases, sentences, etc., that respond to a natural language utterance. In an example where the digital assistant can request additional information from the user, the response may include, along with the natural language text, fields to allow the user to input information, links to a given response, or a digital location to find the answer. The digital assistant can send the response to a computing device associated with the user for purposes such as presenting the response to the user or requesting additional information from the user.

[0090] Example architecture for implementing cloud infrastructure As described above, Infrastructure as a Service (IaaS) is a specific type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the internet). In the IaaS model, a cloud computing provider can host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). In some cases, the IaaS provider may also supply various services to attach to these infrastructure components (exemplary services include billing software, monitoring software, logging software, load balancing software, clustering software, etc.). Therefore, since these services can be policy-driven, IaaS users may be able to enforce policies, thereby driving load balancing and maintaining application availability and performance.

[0091] In some cases, IaaS customers may access resources and services over a wide area network (WAN), such as the internet, and use the cloud provider's services to install the rest of their application stack. For example, by logging into the IaaS platform, a user can create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as databases, create storage buckets for workloads and backups, and install enterprise software on those VMs. The customer can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.

[0092] In most cases, the cloud computing model requires the participation of a cloud provider. A cloud provider may, but does not have to be, a third-party service specializing in providing IaaS (e.g., offering, leasing, or selling). An entity could also choose to deploy a private cloud and become its own provider of infrastructure services.

[0093] In some cases, IaaS deployment is the process of deploying a new application or a new version of an application to a prepared application server, etc. It may also include the process of preparing the server (e.g., installing libraries, daemons, etc.). This is often managed by the cloud provider under the hypervisor layer (e.g., servers, storage, network hardware, and virtualization). Therefore, the customer may be responsible for handling (OS), middleware, and / or application deployment (e.g., in self-service virtual machines, which can be spun up on demand).

[0094] In some cases, IaaS provisioning may refer to acquiring computers or virtual hosts for use and then installing the necessary libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may need to be done first.

[0095] In some cases, there are two distinct challenges to IaaS provisioning. First, there is the initial challenge of provisioning an initial set of infrastructure before everything is operational. Second, once everything is provisioned, there is the challenge of evolving the existing infrastructure (e.g., adding new services, modifying services, removing services, etc.). In some cases, these two challenges can be addressed by allowing the infrastructure configuration to be defined declaratively. In other words, the infrastructure (e.g., which components are needed and how they interact) can be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., which resources depend on which and how they work together) can be described declaratively. In some examples, once the topology is defined, it is possible to generate workflows that produce and / or manage the different components described in the configuration files.

[0096] In some examples, infrastructure can have many interconnected elements. For example, there may be one or more virtual private clouds (VPCs), also known as core networks (e.g., a potentially on-demand pool of configurable and / or shared computing resources). In some examples, there may be one or more inbound / outbound traffic group rules and one or more virtual machines (VMs) provisioned to define how inbound and / or outbound traffic on the network is set up. Other infrastructure elements such as load balancers and databases may also be provisioned. Infrastructure can evolve exponentially as more and more infrastructure elements are desired and / or added.

[0097] In some cases, sequential deployment techniques may be used to enable the deployment of infrastructure code across various virtual computing environments. Additionally, the techniques described can enable infrastructure management within these environments. In some cases, a service team may write code that is to be deployed to one or more, but often many, different production environments (e.g., across various different geographical locations, sometimes spread across the globe). However, in some cases, the infrastructure to which the code is deployed may need to be set up first. In some cases, provisioning may be done manually, provisioning tools may be used to provision resources, and / or deployment tools may be used to deploy the code once the infrastructure is provisioned.

[0098] Figure 7 is a block diagram 700 showing an exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 702 can be communicatively coupled to a secure host tenancy 704, which may include a virtual cloud network (VCN) 706 and a secure host subnet 708. In some examples, the service operator 702 may use one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, cellular phone, iPad®, computing tablet, personal digital assistant (PDA)) or wearable devices (e.g., Google Glass® head-mounted display), which may run software such as Microsoft Windows Mobile® and / or various mobile operating systems such as iOS®, Windows Phone, Android, BlackBerry 8, Palm OS, which may use the Internet, email, short message service (SMS), BlackBerry®, or other enabled communication protocols. Alternatively, a client computing device can be a general-purpose personal computer, including, for example, personal computers and / or laptop computers running various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux® operating systems. A client computing device can also be a workstation computer running any of the various commercially available UNIX® or UNIX-like operating systems, including, without limitation, various GNU / Linux operating systems such as Google Chrome OS.Alternatively, or in addition, the client computing device may be any other electronic device, such as a thin client computer, an internet-connected gaming system (e.g., a Microsoft Xbox gaming console with or without a Kinect® gesture input device), and / or a personal messaging device, that can communicate over a network that can access the VCN706 and / or the Internet.

[0099] VCN706 may include a local peering gateway (LPG) 710 that can communicately connect to Secure Shell (SSH) VCN712 via LPG710 contained within SSH VCN712. SSH VCN712 may include an SSH subnet 714, and SSH VCN712 may communicately connect to control plane VCN716 via LPG710 contained within control plane VCN716. Furthermore, SSH VCN712 may communicately connect to data plane VCN718 via LPG710. Control plane VCN716 and data plane VCN718 may be contained within a service tenancy 719 that can be owned and / or operated by an IaaS provider.

[0100] The control plane VCN 716 may include a control plane demilitarized zone (DMZ) tier 720 that functions as a perimeter network (e.g., the portion of the corporate network between the corporate intranet and the external network). DMZ-based servers may have limited responsibilities and may help contain breaches. Additionally, the DMZ tier 720 may include a control plane application tier 724 that may include one or more load balancer (LB) subnets 722, an application subnet 726, and a control plane data tier 728 that may include a database (DB) subnet 730 (e.g., a front-end DB subnet and / or a back-end DB subnet). The LB subnet 722 included in the control plane DMZ tier 720 may be communicatively coupled to the application subnet 726 included in the control plane application tier 724 and an internet gateway 734 that may be included in the control plane VCN 716, and the application subnet 726 may be communicatively coupled to the DB subnet 730 included in the control plane data tier 728, a service gateway 736, and a network address translation (NAT) gateway 738. The control plane VCN716 may include a service gateway 736 and a NAT gateway 738.

[0101] The control plane VCN 716 may include a data plane mirror app tier 740, which may include an app subnet 726. The app subnet 726 included in the data plane mirror app tier 740 may include a virtual network interface controller (VNIC) 742, which may run a compute instance 744. The compute instance 744 can connect the app subnet 726 of the data plane mirror app tier 740 to the app subnet 726 that may be included in the data plane app tier 746 in a communicative manner.

[0102] The data plane VCN718 may include a data plane application tier 746, a data plane DMZ tier 748, and a data plane data tier 750. The data plane DMZ tier 748 may include an LB subnet 722 that can be communicatively coupled to the application subnet 726 of the data plane application tier 746 and the internet gateway 734 of the data plane VCN718. The application subnet 726 may also be communicatively coupled to the service gateway 736 of the data plane VCN718 and the NAT gateway 738 of the data plane VCN718. The data plane data tier 750 may also include a DB subnet 730 that can be communicatively coupled to the application subnet 726 of the data plane application tier 746.

[0103] The Internet gateway 734 of the control plane VCN716 and data plane VCN718 may be communicatively coupled to a metadata management service 752, which can be communicatively coupled to the public internet 754. The public internet 754 may be communicatively coupled to the NAT gateway 738 of the control plane VCN716 and data plane VCN718. The service gateway 736 of the control plane VCN716 and data plane VCN718 may be communicatively coupled to a cloud service 756.

[0104] In some cases, a service gateway 736 of the control plane VCN716 or data plane VCN718 can make application programming interface (API) calls to a cloud service 756 without going through the public internet 754. API calls from the service gateway 736 to the cloud service 756 can be one-way. The service gateway 736 can make an API call to the cloud service 756, and the cloud service 756 can send the requested data to the service gateway 736. However, the cloud service 756 cannot initiate an API call to the service gateway 736.

[0105] In some examples, secure host tenancy 704 may be directly connected to service tenancy 719, which may otherwise be isolated. Secure host subnet 708 may communicate with SSH subnet 714 via LPG 710, which may enable bidirectional communication on otherwise isolated systems. Connecting secure host subnet 708 to SSH subnet 714 may provide secure host subnet 708 with access to other entities within service tenancy 719.

[0106] The control plane VCN716 may allow users of service tenancy 719 to set up or otherwise provision desired resources. Desired resources provisioned in the control plane VCN716 may be deployed or otherwise used in the data plane VCN718. In some examples, the control plane VCN716 may be isolated from the data plane VCN718, and the data plane mirror app tier 740 of the control plane VCN716 may communicate with the data plane app tier 746 of the data plane VCN718 via VNIC742, which may be included in the data plane mirror app tier 740 and the data plane app tier 746.

[0107] In some cases, a system user or customer may request operations, such as create, read, update, or delete (CRUD), via the public internet 754, which can communicate the request to the metadata management service 752. The metadata management service 752 can communicate the request to the control plane VCN 716 via the internet gateway 734. The request may be received by an LB subnet 722 included in the control plane DMZ tier 720. The LB subnet 722 may determine that the request is valid, and in response to this determination, the LB subnet 722 may forward the request to an application subnet 726 included in the control plane application tier 724. If the request is authenticated and requires a call to the public internet 754, the call to the public internet 754 may be forwarded to the NAT gateway 738, which can then make the call to the public internet 754. Metadata that may be desired to be stored by the request may be stored in the DB subnet 730.

[0108] In some cases, the data plane mirror app tier 740 can facilitate direct communication between the control plane VCN716 and the data plane VCN718. For example, changes, updates, or other appropriate modifications to the configuration may be desired to be applied to resources contained in the data plane VCN718. Through VNIC742, the control plane VCN716 can communicate directly with the resources contained in the data plane VCN718, thereby enabling it to perform changes, updates, or other appropriate modifications to the configuration of those resources.

[0109] In some embodiments, the control plane VCN716 and data plane VCN718 may be included in the service tenancy 719. In this case, the system user or customer may not own or operate the control plane VCN716 or the data plane VCN718. Instead, the IaaS provider may own or operate the control plane VCN716 and the data plane VCN718, and both may be included in the service tenancy 719. This embodiment may enable network isolation, which may prevent a user or customer from interacting with resources of other users or other customers. This embodiment may also enable the system user or customer to store databases privately without having to rely on the public internet 754 for storage, which may not have the desired level of threat protection.

[0110] In another embodiment, the LB subnet 722 included in the control plane VCN 716 can be configured to receive signals from the service gateway 736. In this embodiment, the control plane VCN 716 and the data plane VCN 718 can be configured to be called by the IaaS provider's customer without calling the public internet 754. The IaaS provider's customer may desire this embodiment because the database used by the customer may be stored in a service tenancy 719 that can be controlled by the IaaS provider and isolated from the public internet 754.

[0111] Figure 8 is a block diagram 800 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 802 (e.g., service operator 702 in Figure 7) may be communicatively coupled to a secure host tenancy 804 (e.g., secure host tenancy 704 in Figure 7) which may include a virtual cloud network (VCN) 806 (e.g., VCN706 in Figure 7) and a secure host subnet 808 (e.g., secure host subnet 708 in Figure 7). The VCN 806 may include a local peering gateway (LPG) 810 (e.g., LPG710 in Figure 7) which may be communicatively coupled to a secure shell (SSH) VCN 812 (e.g., SSH VCN712 in Figure 7) via an LPG 710 contained within an SSH VCN 812. SSH VCN812 may include SSH subnet 814 (e.g., SSH subnet 714 in Figure 7), and SSH VCN812 may be communicably coupled to control plane VCN816 (e.g., control plane VCN716 in Figure 7) via LPG810 included in control plane VCN816. Control plane VCN816 may include service tenancy 819 (e.g., service tenancy 719 in Figure 7), and data plane VCN818 (e.g., data plane VCN718 in Figure 7) may include customer tenancy 821, which may be owned or operated by a user or customer of the system.

[0112] The control plane VCN816 may include a control plane DMZ tier 820 (e.g., control plane DMZ tier 720 in Figure 7) which can include an LB subnet 822 (e.g., LB subnet 722 in Figure 7), a control plane application tier 824 (e.g., control plane application tier 724 in Figure 7) which can include an application subnet 826 (e.g., application subnet 726 in Figure 7), and a control plane data tier 828 (e.g., control plane data tier 728 in Figure 7) which can include a database (DB) subnet 830 (e.g., similar to DB subnet 730 in Figure 7). The LB subnet 822 included in the control plane DMZ tier 820 can be communicatively coupled to the application subnet 826 included in the control plane application tier 824 and to the Internet gateway 834 (e.g., Internet gateway 734 in Figure 7), which may be included in the control plane VCN 816. The application subnet 826 can be communicatively coupled to the DB subnet 830 included in the control plane data tier 828, to the service gateway 836 (e.g., service gateway 736 in Figure 7), and to the network address translation (NAT) gateway 838 (e.g., NAT gateway 738 in Figure 7). The control plane VCN 816 may include the service gateway 836 and the NAT gateway 838.

[0113] The control plane VCN 816 may include a data plane mirror app tier 840 (e.g., data plane mirror app tier 740 in Figure 7) which may include an app subnet 826. The app subnet 826 included in the data plane mirror app tier 840 may include a virtual network interface controller (VNIC) 842 (e.g., VNIC 742) which may run a compute instance 844 (e.g., similar to compute instance 744 in Figure 7). The compute instance 844 may facilitate communication between the app subnet 826 of the data plane mirror app tier 840 and the app subnet 826 that may be included in the data plane app tier 846 (e.g., data plane app tier 746 in Figure 7) via the VNIC 842 included in the data plane mirror app tier 840 and the VNIC 842 included in the data plane app tier 846.

[0114] The Internet gateway 834 included in the control plane VCN816 can be communicatively coupled to a metadata management service 852 (e.g., metadata management service 752 in Figure 7), which can be communicatively coupled to the public internet 854 (e.g., public internet 754 in Figure 7). The public internet 854 can be communicatively coupled to a NAT gateway 838 included in the control plane VCN816. The service gateway 836 included in the control plane VCN816 can be communicatively coupled to a cloud service 856 (e.g., cloud service 756 in Figure 7).

[0115] In some examples, the data plane VCN818 may be included in a customer tenancy 821. In this case, the IaaS provider may provide a control plane VCN816 for each customer, and the IaaS provider may set up a unique compute instance 844 included in a service tenancy 819 for each customer. Each compute instance 844 may enable communication between the control plane VCN816 included in the service tenancy 819 and the data plane VCN818 included in the customer tenancy 821. The compute instance 844 may enable resources provisioned in the control plane VCN816 included in the service tenancy 819 to be deployed or otherwise used in the data plane VCN818 included in the customer tenancy 821.

[0116] In another example, an IaaS provider's customer may have a database located in customer tenancy 821. In this example, control plane VCN 816 may include a data plane mirror app tier 840 that can include app subnet 826. The data plane mirror app tier 840 may reside in data plane VCN 818, but does not have to reside in data plane VCN 818. That is, the data plane mirror app tier 840 may have access to customer tenancy 821, but does not have to reside in data plane VCN 818 or may be owned or operated by the IaaS provider's customer. The data plane mirror app tier 840 may be configured to make calls to data plane VCN 818, but does not have to be configured to make calls to any entity included in control plane VCN 816. Customers may wish to deploy or otherwise use resources in the data plane VCN818 provisioned in the control plane VCN816, and the data plane mirror app tier 840 can facilitate the customer's desired deployment or other use of resources.

[0117] In some embodiments, a customer of the IaaS provider can apply filters to the data plane VCN818. In this embodiment, the customer can determine what the data plane VCN818 can access, and the customer can restrict access from the data plane VCN818 to the public internet 854. The IaaS provider may not be able to apply filters or, otherwise, may not be able to control the data plane VCN818's access to any external networks or databases. Applying filters and controls by the customer to the data plane VCN818 included in the customer tenancy 821 can help isolate the data plane VCN818 from other customers and the public internet 854.

[0118] In some embodiments, cloud service 856 may be called by service gateway 836 to access services that may not be present on the public internet 854, control plane VCN 816, or data plane VCN 818. The connection between cloud service 856 and control plane VCN 816 or data plane VCN 818 may not be live or continuous. Cloud service 856 may reside on different networks owned or operated by the IaaS provider. Cloud service 856 may be configured to receive calls from service gateway 836 and not to receive calls from the public internet 854. Some cloud services 856 may be isolated from other cloud services 856, and control plane VCN 816 may be isolated from cloud services 856 that may not be in the same region as control plane VCN 816. For example, control plane VCN 816 may be located in "Region 1", and cloud service "Deployment 5" may be located in Region 1 and "Region 2". If a call to deployment 5 is made by a service gateway 836 included in the control plane VCN816 located in region 1, the call may be sent to deployment 5 in region 1. In this example, the control plane VCN816, or deployment 5 in region 1, may not be communicatively coupled to deployment 5 in region 2, or may not communicate with deployment 5 in region 2.

[0119] Figure 9 is a block diagram 900 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 902 (e.g., service operator 702 in Figure 7) may be communicatively coupled to a secure host tenancy 904 (e.g., secure host tenancy 704 in Figure 7) which may include a virtual cloud network (VCN) 906 (e.g., VCN706 in Figure 7) and a secure host subnet 908 (e.g., secure host subnet 708 in Figure 7). VCN906 may include an LPG910 (e.g., LPG710 in Figure 7) which may be communicatively coupled to an SSH VCN912 (e.g., SSH VCN712 in Figure 7) via an LPG910 contained in an SSH VCN912. SSH VCN912 may include SSH subnet 914 (for example, SSH subnet 714 in Figure 7), and SSH VCN912 may be communicably coupled to control plane VCN916 (for example, control plane VCN716 in Figure 7) via LPG910 included in control plane VCN916, and to data plane VCN918 (for example, data plane 718 in Figure 7) via LPG910 included in data plane VCN918. Control plane VCN916 and data plane VCN918 may be included in service tenancy 919 (for example, service tenancy 719 in Figure 7).

[0120] The control plane VCN916 may include a control plane DMZ tier 920 (e.g., control plane DMZ tier 720 in Figure 7) which may include a load balancer (LB) subnet 922 (e.g., LB subnet 722 in Figure 7), a control plane application tier 924 (e.g., control plane application tier 724 in Figure 7) which may include an application subnet 926 (e.g., similar to application subnet 726 in Figure 7), and a control plane data tier 928 (e.g., control plane data tier 728 in Figure 7) which may include a DB subnet 930. The LB subnet 922 included in the control plane DMZ tier 920 can be communicatively coupled to the application subnet 926 included in the control plane application tier 924 and to the Internet gateway 934 (e.g., Internet gateway 734 in Figure 7), which may be included in the control plane VCN 916. The application subnet 926 can be communicatively coupled to the DB subnet 930 included in the control plane data tier 928, to the service gateway 936 (e.g., the service gateway in Figure 7), and to the network address translation (NAT) gateway 938 (e.g., NAT gateway 738 in Figure 7). The control plane VCN 916 may include the service gateway 936 and the NAT gateway 938.

[0121] The data plane VCN918 may include data plane application tier 946 (e.g., data plane application tier 746 in Figure 7), data plane DMZ tier 948 (e.g., data plane DMZ tier 748 in Figure 7), and data plane data tier 950 (e.g., data plane data tier 750 in Figure 7). The data plane DMZ tier 948 may include an LB subnet 922 that can be communicatively coupled to the trusted application subnet 960 and untrusted application subnet 962 of data plane application tier 946, and to the internet gateway 934 included in data plane VCN918. The trusted application subnet 960 may be communicatively coupled to the service gateway 936 included in data plane VCN918, the NAT gateway 938 included in data plane VCN918, and the DB subnet 930 included in data plane data tier 950. The untrusted application subnet 962 may be communicatively coupled to the service gateway 936 included in data plane VCN918 and the DB subnet 930 included in data plane data tier 950. The data plane data tier 950 may include a DB subnet 930 that can be communicatively coupled to a service gateway 936 included in the data plane VCN 918.

[0122] An untrusted application subnet 962 may include one or more primary VNICs 964(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 966(1)-(N). Each tenant VM 966(1)-(N) may be communicatively coupled to each application subnet 967(1)-(N) that can be included in each container exit VCN 968(1)-(N) that can be included in each customer tenancy 970(1)-(N). Each secondary VNIC 972(1)-(N) can facilitate communication between the untrusted application subnet 962 included in the data plane VCN 918 and the application subnets included in the container exit VCN 968(1)-(N). Each container exit VCN 968(1)-(N) may include a NAT gateway 938 that can be communicatively coupled to the public internet 954 (e.g., public internet 754 in Figure 7).

[0123] The Internet gateway 934, included in both the control plane VCN916 and the data plane VCN918, can be communicatively coupled to a metadata management service 952 (e.g., the metadata management system 752 in Figure 7), which can be communicatively coupled to the public internet 954. The public internet 954 can be communicatively coupled to a NAT gateway 938, included in both the control plane VCN916 and the data plane VCN918. The service gateway 936, included in both the control plane VCN916 and the data plane VCN918, can be communicatively coupled to a cloud service 956.

[0124] In some embodiments, the data plane VCN918 may be integrated with the customer tenancy 970. This integration may be beneficial or desirable for the IaaS provider's customer in several cases, such as when support may be desired when executing code. The customer may provide code that may perform actions that could be disruptive, communicate with other customer resources, or otherwise produce undesirable effects. In response, the IaaS provider may decide whether to execute the code provided to the IaaS provider by the customer.

[0125] In some examples, an IaaS provider's customer may request temporary network access to the IaaS provider and a function to be attached to dataplane application tier 946. The code to perform the function may run in VM966(1)~(N), and the code may not be configured to run anywhere else on dataplane VCN918. Each VM966(1)~(N) may be connected to one customer tenancy 970. Each container 971(1)~(N) contained within VM966(1)~(N) may be configured to run the code. In this case, dual isolation may exist (for example, a container 971(1)~(N) that runs the code may be contained within a VM966(1)~(N) that is at least in an untrusted application subnet 962), which may help prevent incorrect or otherwise undesirable code from damaging the IaaS provider's network or the network of a different customer. Containers 971(1)-(N) may be communicatively coupled to customer tenancy 970 and may be configured to send or receive data from customer tenancy 970. Containers 971(1)-(N) do not have to be configured to send or receive data from any other entities in the data plane VCN918. Once code execution is complete, the IaaS provider may clear or otherwise discard containers 971(1)-(N).

[0126] In some embodiments, a trusted application subnet 960 may execute code that may be owned or operated by the IaaS provider. In this embodiment, the trusted application subnet 960 may be communicatively coupled to a DB subnet 930 and may be configured to perform CRUD operations in the DB subnet 930. An untrusted application subnet 962 may be communicatively coupled to a DB subnet 930, but in this embodiment, the untrusted application subnet may be configured to perform read operations in the DB subnet 930. Containers 971(1)~(N) that may be contained in each customer's VM966(1)~(N) and may execute code from the customer do not have to be communicatively coupled to the DB subnet 930.

[0127] In other embodiments, the control plane VCN916 and the data plane VCN918 do not have to be directly and communicatively coupled. In this embodiment, direct communication between the control plane VCN916 and the data plane VCN918 is not required. However, communication can be carried out indirectly through at least one method. The LPG910 may be established by the IaaS provider, which can facilitate communication between the control plane VCN916 and the data plane VCN918. In another example, the control plane VCN916 or the data plane VCN918 can make a call to the cloud service 956 via the service gateway 936. For example, a call from the control plane VCN916 to the cloud service 956 may include a request for a service that can communicate with the data plane VCN918.

[0128] Figure 10 is a block diagram 1000 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 1002 (e.g., service operator 702 in Figure 7) may be communicatively coupled to a secure host tenancy 1004 (e.g., secure host tenancy 704 in Figure 7) and a secure host subnet 1008 (e.g., secure host subnet 708 in Figure 7), which may include a virtual cloud network (VCN) 1006 (e.g., VCN 706 in Figure 7). VCN 1006 may include an LPG 1010 (e.g., LPG 710 in Figure 7) which may be communicatively coupled to an SSH VCN 1012 (e.g., SSH VCN 712 in Figure 7) via an LPG 1010 contained in an SSH VCN 1012. SSH VCN1012 may include SSH subnet 1014 (for example, SSH subnet 714 in Figure 7), and SSH VCN1012 may be communicably coupled to control plane VCN1016 (for example, control plane VCN716 in Figure 7) via LPG1010 included in control plane VCN1016, and to data plane VCN1018 (for example, data plane 718 in Figure 7) via LPG1010 included in data plane VCN1018. Control plane VCN1016 and data plane VCN1018 may be included in service tenancy 1019 (for example, service tenancy 719 in Figure 7).

[0129] The control plane VCN1016 may include a control plane DMZ tier 1020 (e.g., control plane DMZ tier 720 in Figure 7) which can include an LB subnet 1022 (e.g., LB subnet 722 in Figure 7), a control plane application tier 1024 (e.g., control plane application tier 724 in Figure 7) which can include an application subnet 1026 (e.g., application subnet 726 in Figure 7), and a control plane data tier 1028 (e.g., control plane data tier 728 in Figure 7) which can include a DB subnet 1030 (e.g., DB subnet 930 in Figure 9). The LB subnet 1022 included in the control plane DMZ tier 1020 can be communicatively coupled to the application subnet 1026 included in the control plane application tier 1024 and to an internet gateway 1034 (e.g., internet gateway 734 in Figure 7) which may be included in the control plane VCN 1016. The application subnet 1026 can be communicatively coupled to the DB subnet 1030 included in the control plane data tier 1028, to a service gateway 1036 (e.g., service gateway in Figure 7) and to a network address translation (NAT) gateway 1038 (e.g., NAT gateway 738 in Figure 7). The control plane VCN 1016 may include the service gateway 1036 and the NAT gateway 1038.

[0130] The data plane VCN 1018 may include a data plane application tier 1046 (e.g., data plane application tier 746 in Figure 7), a data plane DMZ tier 1048 (e.g., data plane DMZ tier 748 in Figure 7), and a data plane data tier 1050 (e.g., data plane data tier 750 in Figure 7). The data plane DMZ tier 1048 may include an LB subnet 1022, which may be communicably coupled to the trusted application subnet 1060 (e.g., trusted application subnet 960 in Figure 9) and untrusted application subnet 1062 (e.g., untrusted application subnet 962 in Figure 9) of the data plane application tier 1046, and to the internet gateway 1034 included in the data plane VCN 1018. A trusted application subnet 1060 may be communicatively coupled to a service gateway 1036 included in data plane VCN 1018, a NAT gateway 1038 also included in data plane VCN 1018, and a DB subnet 1030 included in data plane data tier 1050. An untrusted application subnet 1062 may be communicatively coupled to a service gateway 1036 included in data plane VCN 1018 and a DB subnet 1030 included in data plane data tier 1050. Data plane data tier 1050 may include a DB subnet 1030 that can be communicatively coupled to a service gateway 1036 included in data plane VCN 1018.

[0131] An untrusted application subnet 1062 may include primary VNICs 1064(1)-(N) that can be communicatively connected to tenant virtual machines (VMs) 1066(1)-(N) within the untrusted application subnet 1062. Each tenant VM 1066(1)-(N) can execute code in its respective container 1067(1)-(N) and may be communicatively connected to an application subnet 1026 that can be included in a data plane application tier 1046 that can be included in a container exit VCN 1068. Each secondary VNIC 1072(1)-(N) can facilitate communication between the untrusted application subnet 1062 included in the data plane VCN 1018 and the application subnet included in the container exit VCN 1068. The container exit VCN may include a NAT gateway 1038 that can be communicatively connected to the public internet 1054 (e.g., public internet 754 in Figure 7).

[0132] The Internet gateway 1034, which is included in both the control plane VCN 1016 and the data plane VCN 1018, can be communicatively coupled to a metadata management service 1052 (for example, the metadata management system 752 in Figure 7), which can be communicatively coupled to the public internet 1054. The public internet 1054 can be communicatively coupled to a NAT gateway 1038, which is included in both the control plane VCN 1016 and the data plane VCN 1018. The service gateway 1036, which is included in both the control plane VCN 1016 and the data plane VCN 1018, can be communicatively coupled to a cloud service 1056.

[0133] In some examples, the pattern shown by the architecture of block diagram 1000 in Figure 10 may be considered an exception to the pattern shown by the architecture of block diagram 900 in Figure 9, and may be desirable for the IaaS provider's customers when the IaaS provider cannot communicate directly with the customers (e.g., a disconnected region). Each container 1067(1)~(N) contained within VM 1066(1)~(N) for each customer can be accessed by the customer in real time. Each container 1067(1)~(N) may be configured to make calls to each secondary VNIC 1072(1)~(N) contained within application subnet 1026 of data plane application tier 1046, which may be contained within container exit VCN 1068. The secondary VNICs 1072(1)~(N) can send calls to NAT gateway 1038, which can send calls to the public internet 1054. In this example, containers 1067(1)-(N), which can be accessed by customers in real time, can be isolated from the control plane VCN1016 and from other entities included in the data plane VCN1018. Containers 1067(1)-(N) may also be isolated from resources from other customers.

[0134] In another example, a customer can use containers 1067(1)-(N) to call cloud service 1056. In this example, the customer may execute code in containers 1067(1)-(N) that request a service from cloud service 1056. Containers 1067(1)-(N) can send this request to secondary VNICs 1072(1)-(N), which can send the request to the NAT gateway, which can send the request to the public internet 1054. The public internet 1054 can send the request to LB subnet 1022, which is included in control plane VCN 1016, via internet gateway 1034. In response to determining that the request is valid, the LB subnet can send the request to application subnet 1026, which can send the request to cloud service 1056 via service gateway 1036.

[0135] It should be recognized that the illustrated IaaS architectures 700, 800, 900, and 1000 may have components other than those shown. Furthermore, the illustrated embodiments are only some examples of cloud infrastructure systems that may incorporate embodiments of the disclosure. In some other embodiments, the IaaS system may have more or fewer components than those shown, may combine two or more components, or may have different configurations or arrangements of components.

[0136] In one embodiment, the IaaS system described herein may include a set of applications, middleware, and database service offerings delivered to the customer in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such an IaaS system is Oracle Cloud Infrastructure (OCI) provided by the assignee.

[0137] Examples of computer systems or devices Figure 11 shows an exemplary computer system 1100 in which various embodiments can be implemented. System 1100 can be used to implement any of the computer systems and processing systems described above. As shown, the computer system 1100 includes a processing unit 1104 that communicates with a number of peripheral subsystems via a bus subsystem 1102. These peripheral subsystems may include a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, and a communication subsystem 1124. The storage subsystem 1118 includes a tangible computer-readable storage medium 1122 and system memory 1110.

[0138] The bus subsystem 1102 provides a mechanism for various components and subsystems of the computer system 1100 to communicate with each other as intended. Although the bus subsystem 1102 is schematically shown as a single bus, alternative embodiments of the bus system may utilize multiple buses. The bus subsystem 1102 may be one of several types of bus structures, including a memory bus or memory controller, peripheral bus, and local bus, using any of various bus architectures. For example, such architectures may include industry standard architecture (ISA) buses, microchannel architecture (MCA) buses, enhanced ISA (EISA) buses, video electronics standards association (VESA) local buses, and peripheral component interconnect (PCI) buses, which can be implemented as mezzanine buses manufactured in accordance with the IEEE P1386.1 standard.

[0139] A processing unit 1104, which can be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 1100. One or more processors may be included in the processing unit 1104. These processors may include single-core or multi-core processors. In one embodiment, the processing unit 1104 may be implemented as one or more independent processing units 1132 and / or 1134, each containing a single-core or multi-core processor. In another embodiment, the processing unit 1104 may be implemented as a quad-core processing unit formed by integrating two dual-core processors onto a single chip.

[0140] In various embodiments, the processing unit 1104 can execute various programs in response to program code and can maintain a large number of programs or processes running simultaneously. At any given time, some or all of the program code to be executed may reside in the processor 1104 and / or the storage subsystem 1118. Through appropriate programming, the processor 1104 can provide the various functions described above. The computer system 1100 may also include a processing acceleration unit 1106, which may include a digital signal processor (DSP), a dedicated processor, and / or similar.

[0141] The I / O subsystem 1108 may include user interface input devices and user interface output devices. User interface input devices may include pointing devices such as keyboards, mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices such as Microsoft Kinect® motion sensors, which enable users to control and interact with input devices such as Microsoft Xbox® 360 game controllers through a natural user interface using gestures and speech commands. User interface input devices may also include eye gesture recognition devices such as Google Glass® blink detectors, which detect eye movements from the user (e.g., blinks when taking photos and / or making menu selections) and translate eye gestures as input to an input device (e.g., Google Glass®). In addition, the user interface input device may include a voice recognition sensing device that enables the user to interact with a voice recognition system (e.g., Siri® Navigator) through voice commands.

[0142] User interface input devices may include, without limitation, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tables, and audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. In addition, user interface input devices may also include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, positron emission tomography, and medical ultrasound devices. User interface input devices may also include, for example, audio input devices such as MIDI keyboards and digital music players.

[0143] User interface output devices may include display subsystems, indicator lights, or non-visual displays, such as audio output devices. Display subsystems may include cathode ray tubes (CRTs), flat panel devices, such as liquid crystal displays (LCDs) or plasma displays, projection devices, touchscreens, etc. Generally, the use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from the computer system 1100 to a user or other computer. For example, user interface output devices may, without limitation, include various display devices that visually convey text, graphic, and / or audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, audio output devices, and modems.

[0144] The computer system 1100 may include a storage subsystem 1118 that provides a tangible, non-temporary, computer-readable storage medium for storing software and data constructs that provide the functionality of the embodiments described in this disclosure. The soft wafer may include programs, code modules, instructions, scripts, etc., that provide the above-described functionality when executed by one or more cores or processors of the processing unit 1104. The storage subsystem 1118 may provide a repository for storing data used in accordance with this disclosure.

[0145] As shown in the example in Figure 11, the storage subsystem 1118 may include various components, including system memory 1110, computer-readable storage media 1122, and computer-readable storage media reader 1120. System memory 1110 may store program instructions that can be loaded and executed by processing unit 1104. System memory 1110 may also store data used during the execution of instructions and / or data generated during the execution of program instructions. Various different types of programs, including but not limited to client applications, web browsers, mid-tier applications, relational database management systems (RDBMS), virtual machines, containers, etc., may be loaded into system memory 1110.

[0146] System memory 1110 may also store operating systems 1116. Examples of operating systems 1116 may include various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (without limitation, including various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or mobile operating systems, such as iOS, Windows® Phone, Android® OS, BlackBerry® OS, and Palm® OS. In one implementation where computer system 1100 runs one or more virtual machines, a virtual machine with a guest operating system (GOS) may be loaded into system memory 1110 and executed by one or more processors or cores of processing unit 1104.

[0147] The system memory 1110 can have different configurations depending on the type of computer system 1100. For example, the system memory 1110 may be volatile memory (such as random access memory (RAM)) and / or non-volatile memory (such as read-only memory (ROM) or flash memory). Different types of RAM configurations may be provided, including static random access memory (SRAM), dynamic random access memory (DRAM), and others. In some implementations, the system memory 1110 may include a basic input / output system (BIOS) that contains basic routines to help communicate information between elements within the computer system 1100, such as during startup.

[0148] The computer-readable storage medium 1122 may represent a storage medium for storing computer-readable information for use by the computer system 1100, including remote, local, fixed, and / or removable storage devices, and instructions executable by the processing unit 1104 of the computer system 1100, both temporarily and / or more permanently.

[0149] The computer-readable storage medium 1122 may include any suitable medium known or used in the art, including storage mediums and communication mediums, for example, but not limited to, volatile and non-volatile, removable and non-removable mediums that are implemented in any way or technique for storing and / or transmitting information. This may include tangible computer-readable storage mediums, such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technologies, CD-ROM, digital versatile disk (DVD), or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media.

[0150] For example, the computer-readable storage medium 1122 may include a hard disk drive that reads from or writes to a non-removable non-volatile magnetic medium, a magnetic disk drive that reads from or writes to a removable non-volatile magnetic disk, and an optical disk drive that reads from or writes to a removable non-volatile optical disk such as a CD-ROM, DVD, or Blu-ray® disc, or other optical medium. The computer-readable storage medium 1122 may also include, but is not limited to, a Zip® drive, a flash memory card, a Universal Serial Bus (USB) flash drive, a Secure Digital (SD) card, a DVD disc, a digital videotape, etc. The computer-readable storage medium 1122 may also include solid-state drives (SSDs) based on non-volatile memory, such as flash memory-based SSDs, enterprise flash drives, solid-state ROMs, etc., and SSDs based on volatile memory, such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. Disk drives and their associated computer-readable media can provide non-volatile storage for computer-readable instructions, data structures, program modules, and other data for the computer system 1100.

[0151] Machine-readable instructions executable by one or more processors or cores of the processing unit 1104 may be stored in a non-temporary computer-readable storage medium. The non-temporary computer-readable storage medium may include physically tangible memory or storage devices, including volatile memory storage devices and / or non-volatile storage devices. Examples of non-temporary computer-readable storage media include magnetic storage media (e.g., disks or tapes), optical storage media (e.g., DVDs, CDs), various types of RAM, ROM, or flash memory, hard drives, floppy drives, removable memory drives (e.g., USB drives), or other types of storage devices.

[0152] The communication subsystem 1124 provides interfaces to other computer systems and networks. The communication subsystem 1124 functions as an interface for receiving data from other systems and transmitting data from computer system 1100 to other systems. For example, the communication subsystem 1124 may enable computer system 1100 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 1124 may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., using cellular phone technology, state-of-the-art data network technologies such as 3G, 4G, or EDGE (enhanced data rates for global evolution), WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), Global Positioning System (GPS) receiver components, and / or other components). In some embodiments, the communication subsystem 1124 may provide wired network connectivity (e.g., Ethernet®) in addition to or instead of wireless interfaces.

[0153] In some embodiments, the communication subsystem 1124 may receive input communications in the form of structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., for one or more users who may use the computer system 1100.

[0154] For example, the communication subsystem 1124 may be configured to receive real-time data feeds 1126 from users of social networks and / or other communication services, such as Twitter® feeds, Facebook® updates, web feeds, such as Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party sources.

[0155] In addition, the communication subsystem 1124 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1128 and / or event update 1130 of real-time events, which may be inherently continuous or infinite with no clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, and automotive traffic monitoring.

[0156] The communication subsystem 1124 may be configured to output structured and / or unstructured data feeds 1126, event streams 128, event updates 1130, etc., to one or more databases that can communicate with one or more streaming data source computers coupled to the computer system 1100.

[0157] The computer system 1110 can be one of a variety of types, including handheld portable devices (e.g., iPhone® mobile phones, iPad® computing tablets, PDAs), wearable devices (e.g., Google Glass® head-mounted displays), PCs, workstations, mainframes, kiosks, server racks, or any other data processing systems.

[0158] Due to the ever-changing nature of computers and networks, the description of the illustrated computer system 1100 is intended only as a specific example. Many other configurations are possible, having more or fewer components than the illustrated system. For example, customized hardware may also be used and / or certain elements may be implemented in hardware, firmware, software (including applets), or a combination thereof. Furthermore, connections to other computing devices, such as network input / output devices, may be used. Based on the disclosures and teachings provided herein, those skilled in the art will recognize other ways and / or methods for implementing various embodiments.

[0159] While specific embodiments are described, various modifications, changes, alternative configurations, and equivalents are possible. The embodiments are not limited to operations within a particular data processing environment, but are free to operate within multiple data processing environments. In addition, while certain embodiments are described using a specific set of transactions and steps, this is not intended to be limiting. While some flowcharts describe operations as sequential processes, many of the operations can be performed in parallel or simultaneously. Furthermore, the order of operations can be changed. Processes may have additional steps not included in the drawings. The various features and aspects of the embodiments described above can be used individually or in combination.

[0160] Furthermore, while some embodiments are described using specific combinations of hardware and software, it should be recognized that other combinations of hardware and software are also possible. Some embodiments may be implemented using hardware alone, software alone, or a combination thereof. The various processes described herein can be implemented in any combination on the same processor or on different processors.

[0161] When a device, system, component, or module is described as being configured to perform a certain operation or function, such configuration can be achieved, for example, by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as a microprocessor) to perform the operation by executing computer instructions or code, or by a processor or core programmed to execute code or instructions stored in a non-temporary memory medium, or by a combination thereof. Processes can communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.

[0162] Embodiments may be carried out by using a computer program product that includes a computer program / instruction that, when executed by a processor, causes the processor to perform any of the methods described in the disclosure.

[0163] Certain details are provided in this disclosure to provide a full understanding of the embodiments. However, embodiments may be carried out without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary details to avoid obscuring the embodiments. This description provides only exemplary embodiments and is not intended to limit the scope, applicability, or configuration of other embodiments. Rather, the foregoing description of embodiments provides an authoritative explanation for carrying out various embodiments. Various modifications may be made in the function and arrangement of elements.

[0164] Therefore, the specification and drawings should be considered illustrative, not restrictive. However, it will become clear that additions, reductions, deletions, and other modifications and changes may be made to the specification and drawings without departing from the broader intent and scope set forth in the claims. Thus, although specific embodiments are described, these embodiments are not intended to be restrictive. Various modifications and equivalents are included in the following claims.

Claims

1. A method by which a computer performs an action. The first generative artificial intelligence model generates a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by the user. Creating an execution plan that includes the aforementioned one-paragraph executable operation, This includes executing the execution plan, wherein executing the execution plan includes performing an iterative process for each of the one or more executable operations, The aforementioned iterative process is Identifying the type of operation for a feasible operation, Calling one or more states configured to perform the aforementioned operation type, This includes performing the executable operation using the asset to obtain an output in one or more of the aforementioned states, The aforementioned method, A second prompt is generated based on the output obtained from executing each of the one or more executable operations. A method performed by a computer, further comprising a second generative artificial intelligence model generating a response to the natural language utterance based on the second prompt.

2. Creating the execution plan includes evaluating the one or more executable actions, The evaluation includes evaluating the one or more executable actions based on one or more ongoing conversation paths initiated by the user and any currently valid execution plans, Creating the aforementioned execution plan further involves (i) When the evaluation determines that the natural language utterance is part of an ongoing conversation path, the evaluation includes incorporating the one or more executable actions into a currently active execution plan associated with the ongoing conversation path, wherein the currently active execution plan includes an ordered list of the one or more executable actions and one or more previous actions, or the execution plan is created by (ii) When the evaluation determines that the natural language utterance is not part of an ongoing conversation path, the computer method of execution according to claim 1, comprising creating a new execution plan including an ordered list of one or more executable actions.

3. The aforementioned iterative process further, To determine whether one or more parameters are available for the aforementioned feasible operation, When one or more of the above parameters are available, the one or more states are invoked, and the executable operation is performed based on the one or more of the above parameters. A method performed by a computer according to claim 1, comprising: when one or more of the parameters for the executable operation are unavailable, obtaining one or more of the unavailable parameters; then calling one or more states; and performing the executable operation based on the one or more parameters.

4. A method performed by a computer according to claim 3, wherein obtaining the one or more parameters includes generating a natural language request to the user to obtain the one or more parameters for the executable operation, and receiving a response from the user containing the one or more parameters.

5. Calling one or more states configured to perform the aforementioned operation type is, To generate a response, the first state is invoked to identify that the executable operation has not yet been performed, This includes calling a second state to determine whether one or more parameters are available for the aforementioned executable operation, Performing the executable operation using the asset to obtain the output includes calling a third state to generate the output, A method performed by a computer according to any one of claims 1 to 4, wherein the first state, the second state, and the third state are different from each other.

6. Generating the list involves selecting one or more executable actions from a list of candidate agent actions determined by using a semantic index, and creating the execution plan further involves Identifying one or more executable actions that provide information or knowledge for generating the response to the natural language utterance, based at least in part on metadata associated with the candidate agent actions in the list of candidate agent actions, A method performed by a computer according to any one of claims 1 to 4, comprising generating structured output for the execution plan by creating an ordered list of the one or more executable operations and a set of dependencies among the one or more executable operations.

7. The computer method according to claim 6, wherein the iterative process further includes determining that there is one or more dependencies between the executable operation and at least one other executable operation of the one or more executable operations based on the set of dependencies in the one or more executable operations, and the executable operations are executed sequentially in accordance with the one or more dependencies that have been determined to exist between the executable operation and at least one other executable operation.

8. It is a system, One or more processors, The system includes one or more computer-readable media that, when executed by the one or more processors, stores instructions that cause the system to perform an operation, and the operation is A first generative artificial intelligence model generates a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by the user. Creating an execution plan that includes the aforementioned one-paragraph executable operation, This includes executing the execution plan, wherein executing the execution plan includes performing an iterative process for each of the one or more executable operations, The aforementioned iterative process is Identifying the type of operation for a feasible operation, Calling one or more states configured to perform the aforementioned operation type, The operation includes performing the executable operation using the asset to obtain an output in one or more of the aforementioned states, A second prompt is generated based on the output obtained from executing each of the one or more executable operations. A system further comprising generating a response to the natural language utterance based on the second prompt using a second generative artificial intelligence model.

9. The operation for creating the execution plan includes evaluating one or more executable actions, The evaluation includes evaluating the one or more executable actions based on one or more ongoing conversation paths initiated by the user and any currently valid execution plans, The operation that creates the aforementioned execution plan further includes: (i) When the evaluation determines that the natural language utterance is part of an ongoing conversation path, the evaluation includes incorporating the one or more executable actions into a currently active execution plan associated with the ongoing conversation path, the currently active execution plan including an ordered list of the one or more executable actions and one or more previous actions, or the operation that creates the execution plan (ii) The system according to claim 8, which, when the evaluation determines that the natural language utterance is not part of an ongoing conversation path, comprises creating a new execution plan including an ordered list of one or more executable actions.

10. The aforementioned iterative process further, To determine whether one or more parameters are available for the aforementioned feasible operation, When one or more of the above parameters are available, the one or more states are invoked, and the executable operation is performed based on the one or more of the above parameters. The system according to claim 8, which includes, when one or more of the parameters for the executable operation are unavailable, obtaining one or more of the unavailable parameters, then calling one or more states, and performing the executable operation based on the one or more parameters.

11. The system according to claim 10, wherein the operation for obtaining one or more parameters includes generating a natural language request to the user for obtaining the one or more parameters for the executable operation, and receiving a response from the user including the one or more parameters.

12. An operation that invokes one or more states configured to perform the aforementioned operation type is: To generate a response, the first state is invoked to identify that the executable operation has not yet been performed, This includes calling a second state to determine whether one or more parameters are available for the aforementioned executable operation, An operation that uses the asset to perform the executable action in order to obtain the output includes calling a third state to generate the output, The system according to any one of claims 8 to 11, wherein the first state, the second state, and the third state are different from each other.

13. The operation to generate the list includes selecting one or more executable actions from a list of candidate agent actions determined by using a semantic index, and the operation to create the execution plan further includes, Identifying one or more executable actions that provide information or knowledge for generating the response to the natural language utterance, based at least in part on metadata associated with the candidate agent actions in the list of candidate agent actions, The system according to any one of claims 8 to 11, comprising generating structured output for the execution plan by creating an ordered list of the one or more executable operations and a set of dependencies among the one or more executable operations.

14. The system according to claim 13, wherein the iterative process further includes determining that there is one or more dependencies between the executable operation and at least one other executable operation of the one or more executable operations based on the set of dependencies in the one or more executable operations, and the executable operations are executed sequentially in accordance with the one or more dependencies that have been determined to exist between the executable operation and at least one other executable operation.

15. One or more non-temporary computer-readable media that, when executed by one or more processors, store instructions causing the one or more processors to perform an operation, wherein the operation is A first generative artificial intelligence model generates a list of one or more executable actions based on a first prompt, which includes a natural language utterance provided by the user. Creating an execution plan that includes the aforementioned one-paragraph executable operation, This includes executing the execution plan, wherein executing the execution plan includes performing an iterative process for each of the one or more executable operations, The aforementioned iterative process is Identifying the type of operation for a feasible operation, Calling one or more states configured to perform the aforementioned operation type, This includes performing the executable operation using the asset to obtain an output in one or more of the aforementioned states, A second prompt is generated based on the output obtained from executing each of the one or more executable operations. One or more non-temporary computer-readable media, comprising generating a response to the natural language utterance based on the second prompt using a second generative artificial intelligence model.

16. The operation for creating the execution plan includes evaluating one or more executable actions, The evaluation includes evaluating the one or more executable actions based on one or more ongoing conversation paths initiated by the user and any currently valid execution plans, The operation that creates the aforementioned execution plan further includes: (i) When the evaluation determines that the natural language utterance is part of an ongoing conversation path, the evaluation includes incorporating the one or more executable actions into a currently active execution plan associated with the ongoing conversation path, the currently active execution plan including an ordered list of the one or more executable actions and one or more previous actions, or the operation that creates the execution plan (ii) When the evaluation determines that the natural language utterance is not part of an ongoing conversation path, the evaluation comprises creating a new execution plan comprising an ordered list of the one or more executable actions, according to claim 15.

17. The aforementioned iterative process further, To determine whether one or more parameters are available for the aforementioned feasible operation, When one or more of the above parameters are available, the one or more states are invoked, and the executable operation is performed based on the one or more of the above parameters. One or more non-temporary computer-readable media according to claim 15, comprising: when one or more of the one or more parameters for the executable operation are unavailable, obtaining one or more unavailable parameters; then calling one or more states; and performing the executable operation based on the one or more parameters, wherein obtaining one or more parameters comprises generating a natural language request to the user to obtain one or more parameters for the executable operation; and receiving a response from the user containing the one or more parameters.

18. An operation that invokes one or more states configured to perform the aforementioned operation type is: To generate a response, the first state is invoked to identify that the executable operation has not yet been performed, This includes calling a second state to determine whether one or more parameters are available for the aforementioned executable operation, An operation that uses the asset to perform the executable action in order to obtain the output includes calling a third state to generate the output, The first state, the second state, and the third state are different from each other, one or more non-temporary computer-readable media according to any one of claims 15 to 17.

19. The operation to generate the list includes selecting one or more executable actions from a list of candidate agent actions determined by using a semantic index, and the operation to create the execution plan further includes, Identifying one or more executable actions that provide information or knowledge for generating the response to the natural language utterance, based at least in part on metadata associated with the candidate agent actions in the list of candidate agent actions, One or more non-temporary computer-readable media according to any one of claims 15 to 17, comprising generating structured output for the execution plan by creating an ordered list of the one or more executable operations and a set of dependencies among the one or more executable operations.

20. The iterative process further includes determining that there is one or more dependencies between the executable operation and at least one other executable operation of the one or more executable operations based on the set of dependencies in the one or more executable operations, and the executable operations are executed sequentially in accordance with the one or more dependencies that have been determined to exist between the executable operation and at least one other executable operation, according to one or more non-temporary computer-readable media according to claim 19.

21. An apparatus comprising means for performing the operation of a computer-based method as described in any one of claims 1 to 7.

22. A computer program product that, when executed by a processor, includes computer instructions that perform the operations of the computer method described in any one of claims 1 to 7.