Extensible Chatbot Framework
The composable chatbot extension system addresses the inflexibility and maintenance challenges of monolithic architectures by enabling extensions to work together in a pipeline, improving integration and responsiveness with third-party services.
Patent Information
- Application Number
- JP2025536471
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-01-31
- Filing Date
- 2023-12-22
- Publication Date
- 2026-02-10
AI Technical Summary
Existing chatbot extension architectures are monolithic, inflexible, difficult to maintain, and prone to errors, especially when integrating with third-party services.
A composable chatbot extension system where extensions can be composed in a pipeline, allowing them to leverage each other's functionality, process inputs and outputs, and interact through standardized metadata and configurations, enabling flexible and efficient integration with third-party services.
The system facilitates easier maintenance, improved debugging, and seamless integration of third-party services by allowing extensions to work together in a flexible and standardized manner, enhancing the chatbot's responsiveness and accuracy.
Smart Images

Figure 2026504794000001_ABST
Abstract
Description
[Background technology]
[0001] background A chatbot is a computer program designed to simulate a conversation. It receives prompts such as "What time is it?" and responds with responses such as "It's 2 p.m." Chatbots can be integrated within various platforms, such as websites, messaging apps, and productivity apps. The earliest chatbots were developed in the 1960s and were based on simple rule-based systems. However, with advances in artificial intelligence (AI) and natural language processing (NLP) techniques, chatbots have become more sophisticated, able to understand human input and respond to it in a more natural manner.
[0002] Extensions allow developers to extend a chatbot's feature set. For example, a weather extension allows users to ask if it will rain. A weather extension may register to be invoked when weather-related keywords are detected in a prompt. However, existing chatbot extension architectures are monolithic - a single extension is responsible for providing a response to a prompt. This monolithic architecture is inflexible, difficult to maintain, and hard to debug.
[0003] Chatbots can also be extended through custom integration with other services. However, this requires gaining an understanding of each third-party service. Furthermore, the custom code written to integrate with each third-party service is often error-prone and difficult to maintain.
[0004] It is with respect to these and other considerations that the disclosure made herein is presented. Summary of the Invention [Means for solving the problem]
[0005] overview A system for composable chatbot extensions is disclosed. Chatbot extensions are composed by providing the output of one extension as input to another. This defines a pipeline of extensions that accept prompts as input and provide responses as output. Composability leverages functionality provided by other extensions, logs output, runs tasks in parallel, and makes it easier to test extensions. Depending on the configuration, each extension declares the input it accepts, the output it produces, and any modifications it makes to data passed through the pipeline. Extensions may also declare their preferred location in the pipeline, allowing developers to choose whether to respond to raw prompts as quickly as possible or to wait and receive intermediate results produced by other extensions. At the end of the pipeline, a response is provided to the user via the chatbot.
[0006] In some configurations, the chatbot itself is implemented using composable extensions. This allows third-party extensions that are not part of the chatbot itself to deeply integrate with the chatbot without having to write custom integration code. For example, a chatbot may expose an integration point that invokes a third-party extension as a fallback when the chatbot does not know how to respond to a prompt. A third-party extension may integrate at any point—from the time the prompt first arrives until the response is provided—or at any step along the way. For example, a pizza-ordering extension could be invoked as soon as a prompt is received, or could register to wait to see what classifications or other metadata are generated by other extensions.
[0007] When a pipeline contains more than one extension, the chatbot attempts to process them in their requested order. At the same time, the chatbot may analyze each extension's declared input, output, and modifications and invoke them in the order that most satisfies the declared inputs. For example, an extension that posts chatbot responses to social media accounts may require that the prompts it receives as input be considered non-offensive. Another extension may declare that the prompts are non-offensive. The chatbot may identify that the social media extension's input requirements are satisfied by the aggression detection extension, and therefore, it will invoke the aggression detection extension first.
[0008] In addition to the prompt itself, the chatbot may provide the extension with some or all of the conversation history. The conversation history may include messages already exchanged with the user and pending content responses generated by the chatbot extension but not yet returned to the user. The chatbot may also provide metadata to the extension. The extension may use the metadata and conversation history to improve the quality of the responses it generates. For example, the conversation history adds context to the most recent prompt, while the metadata indicates what other extensions have decided regarding the prompt.
[0009] An extension may add a new message to a conversation, modify a message created by another extension but not yet returned to the client, or add or modify metadata. For example, an extension that helps a user order pizza may add a new message to a conversation asking for the user's favorite toppings. An extension that filters out offensive content may modify an existing message in a conversation to omit offensive language. An extension that analyzes responses for accuracy may add metadata indicating that a claim made by a previous extension has been verified by an external source.
[0010] Depending on the configuration, extensions perform these actions according to standards defined by the chatbot. Standardization allows extensions from different parties to interact with each other. For example, an extension may use standardized key names when inserting key-value pairs into a JavaScript Object Notation (JSON) file containing a response. Subsequent extensions in the extension pipeline can then reliably retrieve the stored data in a standardized manner. Different standards are contemplated for different actions that a chatbot extension may perform, such as naming a field in a JSON file that stores an address "Address."
[0011] An extension can also declare the level of granularity at which it receives text generated by previous extensions. An extension can wait for the previous extension in the pipeline to create a complete response before starting. Alternatively, an extension can choose to receive subsections of a response, such as paragraphs, sentences, or tokens, as they are generated. Processing a response as a stream of subsections allows an extension to begin processing significantly sooner than waiting for the complete response. This is particularly useful when responses are generated by a generative language model, which can take seconds or even minutes to respond to a single prompt. For example, a speech processing extension that verbalizes a response can choose to receive the output of a previous extension as a stream of sentences or words, allowing the response to be spoken as it is generated.
[0012] Features and technical advantages other than those explicitly described above will become apparent from reading the following detailed description and examining the associated drawings. This Summary is provided to convey, in a simplified form, a selection of concepts that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The term "technique" may refer to, for example, systems, methods, computer-readable instructions, modules, algorithms, hardware logic, and / or operations as permitted by the context described above and throughout this document.
[0013] BRIEF DESCRIPTION OF THE DRAWINGS DETAILED DESCRIPTION OF THE INVENTION The detailed description will be described with reference to the accompanying drawings. In the drawings, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same reference number in different drawings refers to similar or identical elements. Reference made to individual elements of a plurality of elements may use a reference number having a letter from the series of letters to refer to each individual element. Generic reference to elements may use a particular reference number without the series of letters. [Brief explanation of the drawings]
[0014] [Figure 1] Figure 1 shows a chatbot extended with chatbot extensions. [Figure 2] Figure 2 shows the configuration file for the chatbot extension. [Figure 3] Figure 3 shows the pipeline of a chatbot extension that processes prompts. [Figure 4] Figure 4 shows the request provided to the chatbot extension. [Figure 5] Figure 5 shows the response received from the chatbot extension. [Figure 6]FIG. 6 is a flow diagram of an example method for an extensible chatbot framework. [Figure 7] FIG. 7 is a computer architecture diagram illustrating an exemplary computer hardware and software architecture for a computing system capable of implementing aspects of the techniques and technologies presented herein. [Figure 8] FIG. 8 illustrates a distributed computing environment capable of implementing aspects of the techniques and technologies presented herein. DETAILED DESCRIPTION OF THE INVENTION
[0015] Detailed Description Extensions are applications developed by first or third parties that can be added to a chatbot to extend its functionality. Previous chatbot extensions were typically invoked using keywords. For example, if an extension registers to use the keyword "weather," then it can be invoked with the prompt "What's the weather like today?" The extension then returns a response to the chatbot to be displayed. These types of extensions lack reusability, increasing their cost. They are also inflexible and more difficult to troubleshoot when something goes wrong. In contrast, the chatbot extensions of the present disclosure are composable, allowing extensions to build on the output of other extensions.
[0016] Figure 1 shows a chatbot enhanced with chatbot extensions. A user 102 operating a computing device 104 navigates a browser 106 to a chatbot website 108. The chatbot website 108 is an example of an application that utilizes a generative language model to interact with a user in a human-like manner. Typically, the chatbot 140 used by the chatbot website 108 is located on a remote computing device, although it may also be implemented by the computing device 104.
[0017] The chatbot user interface 110 includes a prompt 112 entered in a prompt input box 114. Clicking a send button 116 or otherwise initiating its associated trigger causes the prompt 112 to be sent to the chatbot 140. The chatbot user interface 110 shows a history of messages between the user 102 and the chatbot 140, including prompts 122 and responses 124.
[0018] Chatbot 140 contains configurations 142—one or more configurations 152 registered by extensions 150. Extensions 150 extend the capabilities of chatbot 140. As explained in more detail below, extensions 150 are composable in that the output of one extension can be used as input to another extension. Chatbot extensions are also composable in that they read and write metadata as requests are passed through the extension pipeline.
[0019] In some configurations, chatbot extensions 150 interact with chatbot 140 without registering configuration 152. In this scenario, one or more chatbot extensions 150 may provide prompts to chatbot 140 similar to how a user would provide prompts to chatbot 140. Responses provided by chatbot 140 may be further processed by extensions 150 according to configuration 152. These responses may then be provided to other chatbot extensions 150, which may or may not invoke chatbot 140, allowing multiple chatbot extensions 150 to form a chain of extensions. Each extension in a chain of extensions may invoke chatbot 140 before returning a response to the subsequent chatbot extension 150 or to the user.
[0020] 2 shows a configuration file for a chatbot extension. The configuration file 152A may include one or more of an identifier 202, a name 204, a uniform resource locator (URL) 206, a priority ranking 208, a template 210, a header 214, a filter 216, and / or an output 218. The configuration file 152 may be a JSON file, an XML file, or any other human-readable markup file. The configuration file 152 may also be computer-readable.
[0021] The identifier 202 can be any unique sequence of numbers or characters that can be used to reference a particular chatbot extension. The name 204 refers to a descriptive name of the chatbot extension 150A associated with the configuration 152.
[0022] URL 206 is an HTTP endpoint that can be used by chatbot 140 to invoke chatbot extension 150A. While web-based chatbot extensions are referenced throughout this document, this is merely one example of a technique for referencing chatbot extensions. Other techniques, such as referencing a local executable file, are contemplated as well. When chatbot 140 determines to invoke a particular chatbot extension 150, it may do so by sending an HTTP request to URL 206. Depending on the configuration, URL 206 also describes the HTTP verb or other connection parameters that can be used to invoke the target chatbot extension.
[0023] When multiple chatbot extensions 150 are registered with the chatbot 140, a priority 208 is used to determine the order in which they are executed. The priority 208 may be a rank. In some configurations, extensions associated with a lower ranking are executed first. Extensions with the same rank may be executed in parallel.
[0024] In some configurations, chatbots adhere to conventions that assign specific priority ranks to specific points in the pipeline of extensions. By adhering to these conventions, extensions can coordinate when they will execute relative to each other and relative to important events in the extension pipeline.
[0025] For example, a priority of -1 may be assigned to an extension that adds or modifies metadata. An extension that responds to a user's message before any other components execute may have a priority of 100. This may include no-code or low-code extensions that "hard-code" a particular response, such as returning a predetermined greeting or returning the chatbot 140's IP address, respectively. In some configurations, the chatbot 140 is itself implemented using composable chatbot extensions. In some configurations, the composable chatbot extensions that implement the chatbot 140 are part of a pipeline of extensions. Examples of these built-in extensions include natural language understanding (NLU) extensions, extensions that interface with traditional search engines, extensions that obtain responses from generative language models, or the like. A priority of 2010 may be associated with an extension that responds to a user's message after rules are executed but before any other main components of the chatbot execute.
[0026] The 6100 priority may provide content based on NLU classification, which may extract intent and entities from the prompt. If the chatbot 140 is unsure how to address a prompt, generating a response based on NLU classification may be a fallback.
[0027] A rank of 8100 may be associated with an extension ranking responses generated by previously executed extensions and selecting the best one to use as the chatbot 140's response. A rank of 10100 may add a new message after all components are finished. An extension with a priority rank of 20020 may modify the chatbot 140's final response. An extension with a priority rank of 30010 may augment a response with suggested user responses or user responses that will auto-complete the user's message. An extension with a rank of 30100 may generate a callout to attract the user's attention. The specific priority ranks listed above are examples, and other values are contemplated as well. Additionally, other types of actions are contemplated as well.
[0028] Templates 210 are text strings that are inserted with reference to data contained within a request. Templates 210 allow responses to be dynamically generated based on structured data obtained from the context in which the user 102 is working and from data generated by previous extensions. Templates 210 can be used to implement “low-code” extensions—extensions that do not invoke HTTP-based services but instead calculate responses based on received requests and templates contained within the configuration file itself. For example, if an extension is provided with a conversation of messages already exchanged between the user 102 and the chatbot 140, then template 210 can generate output based on the text of one or more of the messages in the conversation.
[0029] The header 214 contains string key-value pairs that can be referenced by the filter 216 , the template 210 , or other dynamic aspects of the extension 150 .
[0030] A filter 216 is a condition that determines whether a corresponding chatbot extension 150 will process a particular request. If a filter 216 is not listed, then the corresponding extension 150 will always be invoked. Similar to a template that generates output in response to a request, a filter may reference data contained in the request. For example, a filter may return "true" if any of the messages in the conversation contain the text "hey." If multiple filters 216 are present, they may be configured to be satisfied if all of the filters evaluate to true or if at least one of the filters evaluates to true. In some configurations, a filter references data in the request by a JSON path. Additionally or alternatively, regular expressions may be used in determining whether an associated extension should be invoked for a particular request.
[0031] A filter may be based on text contained in one or more previous messages in a conversation, the number of previous messages, or the content of a particular message (such as the first or last message in a conversation). A filter may also reference content origin properties. For example, an extension may be selectively executed when the content origin of a message in a conversation is a particular search engine. A filter may also be based on metadata generated by previous extensions, such as NLU classification, whether a prompt or previous response was offensive, or the like.
[0032] Outputs 218 indicate the output of the no-code and low-code extensions. As mentioned above, no-code extensions return hard-coded values, such as string literals. Low-code extensions use templates to dynamically generate responses based on string literals in the template, template operators such as string concatenation, and references to data sent in the request being processed.
[0033] FIG. 3 illustrates a pipeline 300 of a chatbot extension 150 processing a prompt 312 of a request 310A. As shown, the pipeline 300 includes extension 150A, extension 150B, and extension 150C. These extensions may be ordered based on their relative priority values 208. As each extension executes, a response 320 is received and incorporated into the subsequent request 310. For example, the response 320A generated by extension 150A may include a message generated by extension 150A. This message may be added to the conversation contained in request 310B. The message may be added according to a standard defined by the chatbot 140. In this manner, extension 150B has access to the output of extension 150A. Extension 150B generates a response 320B, which may be added to request 310B for transmission to extension 150C. Request 310B also includes response 320A and the contents of request 310A, allowing extension 150C to access all of the data generated by extensions 150A and 150B.
[0034] Although generative language models appear confident and definitive, they are not always completely accurate. One use case for composable chatbot extensions is to double-check factual claims made by generative language models. Extension 150B is shown connecting to an external information source 340, such as a search engine, online dictionary, or the like. Extension 150B can use this information to verify the content of response 320A.
[0035] The extension pipeline 300 emits an output 330, which may include one or more messages, which may be returned to the browser 106 for display to the user 102.
[0036] In some configurations, chatbot extension 150 leverages chatbot 140 without registering to be invoked. For example, extension 150A receives request 310A, which includes prompt 312. Extension 150A may modify prompt 314 before forwarding it to chatbot 140. For example, extension 150A may sanitize prompt 312 to remove offensive language. Extension 150A may then receive response 322 from chatbot 140. Response 322 may then be modified before providing response 320A to chatbot extension 150B. Extension 150B may also invoke chatbot 140 while responding to request 310A.
[0037] 4 shows a request 400 provided to a chatbot extension 150. The request 400 includes a conversation 402 and a pending content response 404. The conversation 402 includes a message 412 and an identifier 410. The conversation 402 contains messages for 12 that have already been exchanged between the user 120 and the chatbot 140. The identifier 410 is a unique identifier used by templates, filters, and other chatbot extensions to reference a particular conversation. The pending content response 404 includes a response generated by a previously executed chatbot extension 150 but that has not yet been returned to the browser 106.
[0038] Message 420 is one of messages 412. Message 420 includes a message identifier 422, an author 424, text 426, and metadata 430. Message identifier 422 is a unique letter or string of characters that can be used to reference a particular message. Author 424 is a description of the chatbot extension 150 that generated the particular message. Text 426 includes the actual text of the message.
[0039] Metadata 430 includes an indication 432 that text 426 is offensive and an indication 434 of a natural language understanding classification of text 426. For example, offensive 432 may be set to true by an extension if it is deemed to contain religiously offensive statements. NLU classification 434 may include entities identified within text 426, such as named entities, geographic regions, dates and times, intent, sentiment, and the like.
[0040] Subsequent extensions 150 may access metadata 430 and act accordingly. For example, extension 150B may determine that one of the messages 412 generated by extension 150A is offensive. Extension 150B may store this indication in the corresponding metadata 430. Extension 150C may then attempt to modify the offensive message.
[0041] FIG. 5 shows a response 500 received from a chatbot extension 150. The response 500 includes a response 502 and a message 504 to override. Each response 520 includes a response identifier 522, an author 524, a user interface element 526, and a message 528. The response identifier 522 identifies the response 520. The author 524 is the human-readable name of the chatbot extension 150 that generated the response 520. The UI element 526 can be markup, such as HTML. The UI element 526 can be some intermediate description of a user interface that renders the response 520, such as an adaptive card. The user interface element 526 can be generated by the template 210 or can be hard-coded. The message 528 includes the text of the response 520. The message 528 can be provided to the chatbot user interface 110 for display.
[0042] The message to be overwritten 540 of the message to be overwritten 504 includes a message identifier 542, an author 544, text 546, metadata 530, rewrite text 550, and a content origin 552. The extension 150 may overwrite part or all of the message by, for example, removing emojis, correcting grammar, removing forbidden language, etc. The message identifier 542 and author 544 are unique identifiers and names associated with the particular message to be overwritten. The text 546 contains the text of the message before it was overwritten. The metadata 530 is similar to the metadata 430 described above in connection with FIG. 4. The message metadata 530 can be changed after the message is generated, just as the text of the message can be changed. The rewrite text 550 includes the text that replaces the original text 546. The content origin 552 includes the name of the chatbot extension 150 that changed the text and / or metadata of the existing message.
[0043] 6, the routine 600 begins at operation 602. At operation 602, a first configuration 152A of a first chatbot extension 150A and a second configuration 152B of a second chatbot extension 150B are received. In this manner, the chatbot 140 can invoke the extensions 150 by obtaining a URL or other identifier from the corresponding configuration 152.
[0044] Next, in operation 604, a chatbot prompt 312 is received from the client device 104. The chatbot prompt 312 may be initiated by the user 102. The chatbot prompt 312 may be simple or complex and may reference previously entered prompts 312 or responses 320 that are part of a conversation. For example, the chatbot prompt 312 may request the chatbot 140 to write a song, explain bioelectricity, or solve a math problem.
[0045] Next, at operation 606, the first chatbot extension 150A is provided with a prompt 312. Depending on the configuration, filters 216 and other rules described herein are used to determine which extensions 150 to invoke. Rankings and / or dependencies between extensions 150 may be used to determine the order in which they are to be invoked. These filters 216 and rules may be obtained from the configuration 152 registered with the chatbot 140.
[0046] Next, at operation 608, a first response 320A is received from the first chatbot extension 150A. Some extensions, such as those from which the chatbot 140 is composed, may use a generative language model to create a response 320A to the prompt. Other extensions 150 may sanitize the prompt 312 or a response 320 generated by a previous extension. Other extensions 150 may perform linguistic analysis, add or remove emojis, or perform any of a number of actions that could be applied as the chatbot 140 generates a response 320 to the user-provided prompt 312.
[0047] Next, at operation 610, the second chatbot extension 150B is provided with the prompt 312 and the first response 320A. In this manner, the results of the first extension 150A can be used by the second extension 150B. For example, the first extension 150A can remove the offensive language and return the resulting text in the first response 320A. The second chatbot extension 150B can then use the first response 320A to synthesize speech, post to a social networking account, or perform some other action on the sanitized results.
[0048] Next, at operation 612, a second response 320B is received from the second chatbot extension 150B. The second response is responsive to the action performed by the second chatbot extension 150B.
[0049] Next, at operation 614, the message 528 of the second response 320B is provided to the client 104 for display within the chatbot user interface 110.
[0050] The particular implementation of the techniques disclosed herein is a matter of choice dependent on the performance and other requirements of the computing device. Accordingly, the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These states, operations, structural devices, acts, and modules may be embodied in hardware, software, firmware, special purpose digital logic, or any combination thereof. It should be understood that more or fewer operations may be performed than shown in the figures and described herein. These operations may also be performed in a different order than described herein.
[0051] It should also be understood that the illustrated methods may terminate at any time and may not be performed in their entirety. Some or all of the operations of the methods, and / or substantially equivalent operations, may be performed by execution of computer-readable instructions contained on a computer storage medium, as defined below. The term "computer-readable instructions," and variations thereof, when used in the description and claims, are used broadly herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions may be implemented on a variety of system configurations, including single-processor or multiprocessor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, and the like. Thus, it should be understood that the logical operations described herein are implemented as (1) a series of computer-implemented acts or program modules executing on a computing system and / or (2) interconnected machine logic circuits or circuit modules within a computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These operations, structural devices, acts, and modules may be implemented in software, firmware, special purpose digital logic, or any combination thereof.
[0052] For example, the operations of routine 600 are described herein as being performed, at least in part, by modules that perform the features disclosed herein, and can be functionality created by a dynamic link library (DLL), a static link library, an application programming interface (API), a compiled program, an interpreted program, a script, or any other executable set of instructions. Data can be stored in data structures in one or more memory components. Data can be retrieved from the data structures by addressing a link or reference to the data structures.
[0053] Although the following examples refer to components in the figures, it should be understood that the operations of routine 600 may also be implemented in many other ways. For example, routine 600 may be implemented, at least in part, by a processor of another remote computer or by local circuitry. Additionally, one or more of the operations of routine 600 may alternatively or additionally be implemented, at least in part, by a chipset operating alone or in conjunction with other software modules. In the examples described below, one or more modules of a computing system may receive and / or process data as disclosed herein. Any services, circuits, or applications suitable for providing the techniques disclosed herein may be used in the operations described herein.
[0054] 7 shows further details of an exemplary computer architecture 700 for a device, such as a computer or server, configured as part of the systems described herein, capable of executing computer instructions (e.g., modules or program components described herein). The computer architecture 700 shown in FIG. 7 includes a processing unit 702, a system memory 704 including random access memory 706 (“RAM”) and read-only memory (“ROM”) 708, and a system bus 710 coupling memory 704 to the processing unit 702.
[0055] A processing unit, such as processing unit 702, may represent, for example, a CPU-type processing unit, a GPU-type processing unit, a field-programmable gate array (FPGA), another type of digital signal processor (DSP), or other hardware logic component that may be driven by a CPU, in some cases. For example, without limitation, exemplary types of hardware logic components that may be used include application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), etc.
[0056] A basic input / output system, containing the basic routines that help to transfer information between elements within computer architecture 700, such as during start-up, is stored in ROM 708. Computer architecture 700 further includes a mass storage device 712 for storing operating system 714, applications 716, modules 718, and other data described herein.
[0057] Mass storage device 712 is connected to processing unit 702 through a mass storage controller connected to bus 710. Mass storage device 712 and its associated computer-readable media provide non-volatile storage for computer architecture 700. Although the descriptions of computer-readable media contained herein refer to mass storage devices, those skilled in the art should understand that computer-readable media can be any available computer-readable storage or communication media that can be accessed by computer architecture 700.
[0058] Computer-readable media may include computer-readable storage media and / or communication media, including one or more of volatile memory, nonvolatile memory, and / or other permanent and / or auxiliary, removable and non-removable computer storage media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Thus, a computer storage medium may include, but is not limited to, random access memory (RAM), static random-access memory (SRAM), dynamic random-access memory (DRAM), phase change memory (PCM), read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, compact disc read-only memory (CD-ROM), digital versatile disc (DVD), and the like. This includes media in tangible and / or physical form contained within a device and / or hardware component that is part of a device or external to a device, including a storage device such as a hard disk, optical card or other optical storage medium, magnetic cassette, magnetic tape, magnetic disk storage, magnetic card or other magnetic storage device or medium, solid state memory device, storage array, network attached storage, storage area network, hosted computer storage, or any other storage memory, storage device, and / or storage medium that can be used to store and maintain information for access by a computing device.
[0059] In contrast to computer-readable storage media, communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transmission mechanism. As defined herein, computer storage media does not include communication media. That is, computer-readable storage media, in and of itself, does not include communication media consisting solely of a modulated data signal, carrier wave, or propagating signal.
[0060] According to various configurations, computer architecture 700 may operate in a networked environment using logical connections to remote computers through network 720. Computer architecture 700 may connect to network 720 through a network interface unit 722 connected to bus 710. Computer architecture 700 may also include an input / output controller 724 for accepting and processing input from a number of other devices, including a keyboard, mouse, touch, or electronic stylus or pen. Similarly, input / output controller 724 may provide output to a display screen, a printer, or other type of output device.
[0061] It should be understood that the software components described herein, when loaded and executed within processing unit 702, may transform processing unit 702 and the entire computer architecture 700 from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. Processing unit 702 may be constructed from any number of transistors or other discrete circuit elements that may individually or collectively assume any number of states. More specifically, processing unit 702 may operate as a finite state machine in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may specify how processing unit 702 transitions between states, thereby transforming processing unit 702 by transforming the transistors or other discrete hardware elements that make up processing unit 702.
[0062] 8 illustrates an exemplary distributed computing environment 800 capable of executing the software components described herein. Thus, the distributed computing environment 800 illustrated in FIG. 8 may be utilized to execute any aspects of the software components presented herein. For example, the distributed computing environment 800 may be utilized to execute aspects of the software components described herein.
[0063] Thus, the distributed computing environment 800 may include a computing environment 802 operating on, in communication with, or as part of a network 804. The network 804 may include various access networks. One or more client devices 806A-806N (hereinafter collectively and / or generically referred to as "clients 806" and also referred to herein as computing devices 806) may communicate with the computing environment 802 over the network 804. In one illustrated configuration, the clients 806 include a computing device 806A, such as a laptop computer, desktop computer, or other computing device; a slate or tablet computing device ("tablet computing device") 806B; a mobile computing device 806C, such as a mobile phone, smartphone, or other mobile computing device; a server computer 806D; and / or other devices 806N. It should be understood that any number of clients 806 may be in communication with the computing environment 802.
[0064] In various examples, computing environment 802 includes a server 808, data storage 810, and one or more network interfaces 812. Server 808 may host various services, virtual machines, portals, and / or other resources. In the illustrated configuration, server 808 hosts a virtual machine 814, a web portal 816, a mailbox service 818, a storage service 820, and / or a social networking service 822. As shown in FIG. 8, server 808 may also host other services, applications, portals, and / or other resources (“other resources”) 824.
[0065] As described above, computing environment 802 can include data storage 810. According to various implementations, the functionality of data storage 810 is provided by one or more databases operating on or in communication with network 804. The functionality of data storage 810 can also be provided by one or more servers configured to host data for computing environment 802. Data storage 810 can include, host, or provide one or more real or virtual data stores 826A-826N (hereinafter collectively and / or generically referred to as "data store 826"). Data store 826 is configured to host data used or created by server 808 and / or other data. That is, data store 826 can also host or store web page documents, word documents, presentation documents, data structures, algorithms for execution by a recommendation engine, and / or other data utilized by any application program. Aspects of data store 826 can be associated with a service for storing files.
[0066] The computing environment 802 communicates with or can be accessed by a network interface 812. The network interface 812 can include various types of network hardware and software to support communications between two or more computing devices, including, but not limited to, computing devices and servers. It should be understood that the network interface 812 can also be utilized to connect to other types of networks and / or computer systems.
[0067] It should be understood that the distributed computing environment 800 described herein can provide any number of virtual computing resources and / or other distributed computing functionality that can be configured to execute any aspect of the software components disclosed herein. According to various implementations of the concepts and techniques disclosed herein, the distributed computing environment 800 provides the software functionality described herein as a service to computing devices. It should be understood that the computing devices can include real or virtual machines, including, but not limited to, server computers, web servers, personal computers, mobile computing devices, smartphones, and / or other devices. Thus, various configurations of the concepts and techniques disclosed herein enable, among other aspects, any device configured to access the distributed computing environment 800 to utilize the functionality described herein to provide the techniques disclosed herein.
[0068] This disclosure is supplemented by the following exemplary clauses: Example 1: A method comprising: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receiving a prompt; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to a second chatbot extension; receiving a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; and providing a message of the second response for display. Example 2: The method of example 1, further comprising determining to invoke a second chatbot extension based on a filter condition included in the second configuration evaluating to true. Example 3: The method of example 1, wherein metadata properties modified by a first chatbot extension are provided to a second chatbot extension. Example 4: The method of example 3, wherein the first configuration declares that the first chatbot extension modifies a metadata property. Example 5: The method of example 3, wherein the metadata property indicates whether the prompt includes offensive language. Example 6: The method of example 1, wherein a second chatbot extension is provided with a conversation of messages generated by a previous chatbot extension. Example 7: The method of example 6, wherein the second chatbot extension modifies the message conversation. Example 8: A computer-readable storage medium having stored thereon computer-executable instructions that, when executed by a processing system, cause the processing system to receive a prompt from a client device, modify the prompt, provide the modified prompt to a chatbot, receive a response from the chatbot, provide the modified prompt and the first response to a chatbot extension, and cause the chatbot extension to provide a message to the client device for display. Example 9: The computer-readable storage medium of example 8, wherein the chatbot extension issues a log entry based on the response. Example 10: The computer-readable storage medium of Example 8, wherein the chatbot is implemented using chatbot extensions and the second chatbot extension extends one of the chatbot extensions that implements the chatbot. Example 11: A processing system comprising: a processor; and a computer-readable storage medium having computer-executable instructions stored thereon that, when executed by the processor, cause the processing system to: receive a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receive a prompt from a client device; provide the prompt to the first chatbot extension; receive a first response from the first chatbot extension; provide the prompt and the first response to a second chatbot extension, wherein the first chatbot extension and the second chatbot extension comprise an extension pipeline; receive a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; and provide a message of the second response for display. Example 12: The processing system of example 11, wherein the prompt is provided to the extension pipeline and the second response is received from the extension pipeline. Example 13: The processing system of example 11, wherein the first configuration declares a preferred location of the first chatbot extension within the pipeline. Example 14: The processing system of Example 11, wherein the chatbot provides a set of metadata properties to the extension pipeline, and a second chatbot extension adds or modifies metadata properties to the set of metadata properties. Example 15: The processing system of Example 14, wherein the second chatbot extension determines that the first response is accurate based on analysis of an external source. Example 16: The processing system of example 15, wherein the metadata property indicates that the first response is accurate. Example 17: The processing system of example 11, wherein the first configuration registers the first chatbot extension to be invoked by the chatbot when the chatbot is unable to respond to a prompt. Example 18: The processing system of Example 11, wherein the first chatbot extension adds a first response to the conversation, the second chatbot adds a second response to the conversation, and providing a message of the second response for display includes providing the conversation for display. Example 19: The processing system of example 11, wherein the second configuration declares that the second chatbot extension should be invoked after the first chatbot extension is invoked. Example 20: The processing system of example 11, wherein the second chatbot extension receives a stream of subsections of the first response as the first response is generated.
[0069] While certain exemplary embodiments have been described, these embodiments are presented by way of example only and are not intended to limit the scope of the invention(s) disclosed herein. Therefore, nothing in the above description is intended to imply that any particular feature, characteristic, step, module, or block is essential or essential. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms, and various omissions, substitutions, and changes may be made in the form of the methods and systems described herein without departing from the spirit of the invention(s) disclosed herein. The accompanying claims and their equivalents are intended to cover such forms or modifications as would be within the scope and spirit of certain of the invention(s) disclosed herein.
[0070] It should be understood that any reference to a "first," "second," etc. element in the Summary and / or Detailed Description is not intended to, and should not be construed as, necessarily corresponding to any reference to a "first," "second," etc. element in the claims. Rather, any use of "first" and "second" in the Summary, Detailed Description, and / or claims may be used to distinguish between two different instances of the same element.
[0071] Finally, although various techniques have been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the accompanying representations is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed subject matter.
Claims
1. 1. A method comprising: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; Receiving a prompt; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to the second chatbot extension; receiving a second response from the second chatbot extension, the second response being generated based on the prompt and the first response; providing the second response message for display; and A method comprising:
2. 10. The method of claim 1, further comprising determining to invoke the second chatbot extension based on a filter condition included in the second configuration evaluating to true.
3. The method of claim 1 , wherein metadata properties modified by the first chatbot extension are provided to the second chatbot extension.
4. The method of claim 3 , wherein the first configuration declares that the first chatbot extension modifies the metadata property.
5. The method of claim 3 , wherein the metadata property indicates whether the prompt includes offensive language.
6. The method of claim 1 , wherein the second chatbot extension is provided with a conversation of messages generated by a previous chatbot extension.
7. The method of claim 6 , wherein the second chatbot extension modifies the conversation of a message.
8. 1. A computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by a processing system, causing the processing system to: receiving a prompt from the client device; modifying the prompt; providing the modified prompt to a chatbot; and receiving a response from the chatbot; providing the modified prompt and first response to a chatbot extension and causing the chatbot extension to provide a message to the client device for display; A computer-readable storage medium that causes the
9. The computer-readable storage medium of claim 8 , wherein the chatbot extension issues a log entry based on the response.
10. 9. The computer-readable storage medium of claim 8, wherein the chatbot is implemented using chatbot extensions, and a second chatbot extension extends one of the chatbot extensions that implements the chatbot.
11. 1. A processing system comprising: a processor; A computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by the processor, causing the processing system to: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receiving a prompt from the client device; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to the second chatbot extension, wherein the first chatbot extension and the second chatbot extension include an extension pipeline; receiving a second response from the second chatbot extension, the second response being generated based on the prompt and the first response; providing the second response message for display; and a computer-readable storage medium for causing the A processing system comprising:
12. The processing system of claim 11 , wherein the prompt is provided to the extension pipeline and the second response is received from the extension pipeline.
13. 12. The processing system of claim 11, wherein the first configuration declares a preferred location of the first chatbot extension within the pipeline.
14. 12. The processing system of claim 11, wherein a chatbot provides a set of metadata properties to the extension pipeline, and the second chatbot extension adds or modifies metadata properties to the set of metadata properties.
15. 15. The processing system of claim 14, wherein the second chatbot extension determines that the first response is accurate based on an analysis of an external source.
16. The processing system of claim 15 , wherein the metadata property indicates that the first response is accurate.
17. 12. The processing system of claim 11, wherein the first configuration registers the first chatbot extension to be invoked by the chatbot when the chatbot is unable to respond to the prompt.
18. 12. The processing system of claim 11, wherein the first chatbot extension adds the first response to a conversation, the second chatbot adds the second response to the conversation, and providing the message of the second response for display comprises providing the conversation for display.
19. 12. The processing system of claim 11, wherein the second configuration declares that the second chatbot extension should be invoked after the first chatbot extension is invoked.
20. 12. The processing system of claim 11, wherein the second chatbot extension receives a stream of subsections of the first response as the first response is generated.