How is Dream licensed?
DeepPavlov Dream is an open-source software licensed under Apache 2.0.
What are the main advantages of DeepPavlov Dream?
We provide an open-source Apache 2.0-based, multi-skill platform that enables development of complex open-domain dialog systems. DeepPavlov Dream allows for combining different response generation methods, adding pre- and post-filters, utilizing Wikidata and custom knowledge graphs, designing custom dialog management algorithms, integrating large language models~(LLMs) to production-ready dialog systems. DeepPavlov Dream also provides simple integration with load-balancing tools that is crucial for LLMs-based dialog systems in production. We are also working towards text-based and multimodal experiences like robotics.
Is Dream just a witty API for ChatGPT? Can it work without ChatGPT and other LLMs?
Dream is a multi-skill platform that facilitates the development of the AI assistants. Skill is an end-to-end module that addresses a specific problem/domain; for example, weather skill responds about weather, while pizza ordering skill helps ordering pizza. Now, ChatGPT is two separate, though related things: a product and a model. While OpenAI didn't reveal how ChatGPT as a product works, we, based on our long time experience building AI assistants and platforms, believe that ChatGPT as product internally might be designed quite similar to an AI assistant built on top of Dream. As a product, ChatGPT gives you responses based on the input: if user asks something inappropriate, it responds you very quickly while for other user queries it usually takes time to generate its response. Usually, this is done by pre-filtering and analysing user inputs, and then re-directing response to separate modules. In Dream, we call them Skills. In ChatGPT (as a product) they might be called Response Generators or something else entirely. One of the modules in ChatGPT as a product might be the one that directly talks to ChatGPT's underlying LLM (gpt-3.5-turbo). Such a module can be designed in a way not that different from the way we've designed our Generative AI Skills: this module uses config (pre-defined in case of ChatGPT as a product) that defines the behavior of the system, like temperature, number of tokens to generate etc.
So, to conclude, Dream is a multi-skill platform; it faciliates development of the AI assistants which can use the power of various LLMs. You can think of Dream as a way to build your own ChatGPT-like product but in it you would have total control over all of the aspects: pre-filters, post-filters, fallback responses. You can use different LLMs, or even use your own one. In addition to that, you’re not limited to using LLMs to generate responses: you can build your own scenario-driven skills, too, by utilizing our DFF or 3rd party frameworks. In a sense, with DeepPavlov Dream, you have total flexibility in building an AI assistant of your dream.
How is DeepPavlov Dream different from RASA?
DeepPavlov Dream is a multi-skill AI assistant platform that allows you to build complex multi-skill AI assistants. Skills can use different mechanisms to generate responses and control the dialog over the course of the interaction with the user: LLMs, simple rule-based approaches, scenario-driven systems, retrieval systems etc. The most obvious use case here can be a bank AI assistant, or an AI assistant similar to Amazon Alexa or Google Assistant. In contrast, RASA is a framework that incorporates two ways of controlling the dialog by the means of ML and rules, and can be seen as an engine for the skills in Dream platform. The most obvious use case here can be an HR chatbot inside a company, or a sales chatbot on a website.
How is Dream different from LangChain?
Dream is a multi-skill platform designed to support development of the AI assistants with the support of different engines for response generation including but not limited to LLMs, scenario-driven frameworks, simple rule-based systems, ML systems etc. Langchain is a framework designed to support development of LLM-based apps, with some of these apps being simple AI assistants. Dream is a platform which means that you can assemble your own multi-skill AI assistant with it, and then deploy it to AWS using Kubernetes (or on-premises), and you get a highly scalable multi-skill AI assistant from the day one. In contrast, Langchain is a framework that has to be incapsulated into the system that will be deployed in AWS (or on-premises).
Why is Dream not in PyPi and we can't install it via pip?
DeepPavlov Dream is not a single Python library, it's a multi-skill platform for building AI Assistants. Let's use a car analogy to better understand the difference between the platform and the framework. Imagine that you want to build a car. Here, you have two options: grab a chassis that you can then build upon, or build it from scratch. When you build a car from scratch, you can either build everything from scratch, or you can re-use existing tech to build specific components. Now, platform can be seen as chassis, while framework can be seen as an existing tech you can use to build specific components for a car.
In PyPi, you’ll usually find frameworks that enable you to build specific components for your own solutions. But platforms are more complex, and they usually are taken as is and then adapted to a particular problem you have to solve. Dream is a multi-skill platform designed to facilitate development of the AI assistants; you are expected to clone it to your own machine, pick out-of-the-box components, build your own ones, combine then into a working solution, and then deploy and run it, at scale.
How does DeepPavlov Dream support multi-skill AI assistants?
DeepPavlov Dream supports multi-skill AI assistants by enabling the incorporation of multiple skills with prompt-based definitions and language model selection. Skill switching can be done via similarity-based methods or language models, and the final response through ranking or language model assistance.
Can I use Dream in my company/startup for commercial purposes?
Yes because DeepPavlov Dream is an open-source software licensed under Apache 2.0.
How can I use Dream for my enterprise/startup?
You can use it to quickly build your own scalable AI assistant. You can pick any engine for its skills, you can tune its Skill and Response Selectors, you can tune its Annotators, and completely change the dialog strategy to adapt it to your specific needs.
Which Dream components are available via proxy
The components from [the main Dream distribution](https://github.com/deeppavlov/dream/tree/main/assistant_dists/dream) are deployed on our own servers and provided to our users. You can read more about proxy usage here
If I use Dream via proxy, how and where is my data stored?
The dialogs with users are stored on your side because agent and database containers (mongo) are raised locally even using proxy. We utilize stateless paradigm, so we do not store inputs and outputs of other components.
What kind of load can the system handle?
During the participation in Amazon Alexa Prize Socialbot Grand Challenges 3 and 4, the socialbot DREAM built using the DeepPavlov Dream tech, supported 7-10 RPS.
Can you provide examples of real applications where Dream has been used in production?
Dream was used twice as a socialbot that ran 24/7 for more than a half of year during team's participation in the Amazon Alexa Prize Socialbot Grand Challenges 3 and 4 in North America.
What is the Architecture of the dialog systems?
Dialog system architecture usually contains:
- Annotators for text analysis
- Skills for response generation
- Skill and Response Selectors for dialog strategy
You can check components that are used in Dream here
What is an Annotator?
Annotators extract different features from user utterance (e.g., topics classification, entity extraction, KB connection).
What is a Skill Selector?
Skill Selector chooses a set of skill that will try to produce hypotheses for the current context.
What is a Skill?
Skills are components providing responses to the current context with help of Generative Services (e.g., GPT-J, GPT-3, ChatGPT).
What is a Candidate Annotator?
Candidate Annotators extract useful for evaluation features from the hypotheses.
How many skills can contain an Assistant?
Multi-skill AI Assistants can contain multiple skills each of which is defined by the single prompt and selected LLM. Switching between available skills is implemented within a similarity-based approach. On each step multiple skills can be selected for generation. A final response among generated possible responses is selected via a ranking-based approach.
Why might some response candidates be filtered out?
Possible responses are filtered by a toxicity detector. In case of absence of non-toxic generated candidates, we provide default responses, so called fallbacks.
Can I create my own customized skills for a distribution?
Yes, you can. Click here to check the guide out
How and when does the conversation data get saved to a database?
The dialogs with users are stored on your side because agent and database containers (we use Mongo DB) are raised locally even using proxy. We utilize stateless paradigm, so we do not store inputs and outputs of other components.
How does Dream handle unfinished sessions?
In an unfinished dialogue, by default we will wait for this user's response.
Can Dream support multy-user chats?
As for now, Dream only supports single-user chats. The dialogue with several users will not work yet, but if there are requests and interest, we can change it in the future. You can send a request via submitting a feature request
When adding a skill, do I need to edit the Skill Selector code? Or can I just add the skill to the config file?
When creating new custom skill, you'll need to add it to several config files, such as `docker-compose-override.yml` and `pipeline_conf.json`.
The examples could be found in this guide (step 3 and further)
When adding a skill, do I need to edit the Skill Selector code? Or can I just add the skill to the config file?
When creating new custom skill, you'll need to add it to several config files, such as `docker-compose-override.yml` and `pipeline_conf.json`.
The examples could be found in this guide (step 3 and further)
Is Dream multimodal? Does it have ASR?
Dream has ASR annotator along its other annotators. Currently we focus on adding intelligent components to conversational systems that expand the Assistant's skillset. One of such examples is a voice skill
Will the session reset if the user changes the topic of the dialogue? Will the previous context be lost?
No, the context of a dialogue will not be lost or reset. We define a dialogue as a set of utterances from the user and the bot, and changing the topic does not trigger resetting the session, the bot will adapt to the new one, without forgetting the previous context.
Here is more info on how we define a dialogue.
How do I choose correct type of Response Selector?
If you want to do build a script-based Assistant, then best choice is to use tag-based Response Selector
If your Assistant contains LLM-based skills, you'll need ranking-based or LLM-based Response Selector