Designing Natural and Engaging Conversations
This guide is intended as an introduction to how to create conversations that are helpful and feel natural.
It's designed specifically with designers in mind, but it's also useful for anyone who wants to learn how to get the most out of Rasa.
Topics covered
- What makes a good conversation? CxD
- How CxD works with CALM
- How to write responses that feel human
- How to test and improve through feedback
What is Conversation Design (CxD)?
Conversation Design is the process of researching, conceptualizing, and creating conversational interactions between human users and AI. It is an interdisciplinary field drawing from UX design, linguistics, conversation analysis, content management, human-computer interaction, and related studies.
Conversation design is both human-centered and data-driven.
What is CALM?
Rasa CALM is a state-of-the-art hybrid approach to building conversational AI assistants. It combines 'flows' — predefined sets of steps to complete tasks that represent business processes — with the power of language models to:
- Understand user intentions
- Handle edge cases
- Repair conversations
- Generate responses where appropriate
To read more about CALM, see the CALM documentation.
How does CALM affect the CxD process?
As a conversation designer, each project starts with discovery, focusing on the use cases, scope, and tasks for the AI assistant. Extensive research is conducted on:
- Target audience interaction goals and needs
- Conversation habits
- Language styles
Outcomes of the Discovery Phase:
The research leads to user journeys that are converted into conversational flows — dynamic representations of possible conversation paths between the user and AI assistant. These flows execute Business Logic in CALM.
Designing with CALM:
You don't need complex flowcharts with many interlinked branches. Instead, each flow can focus on specific tasks, such as:
- Responding to user questions
- Connecting to a knowledge base for requested information
- Collecting user information in a series of steps
- Performing actions (e.g., checking a balance, blocking a card, booking an appointment)
- Transferring to a human operator
Building a Flow in CALM:
While building flows in CALM, you can predefine:
- The assistant's responses (which could also be generated)
- Information to collect from the user (slots) and subsequent actions
- How to act based on user inputs (logic)
- Next steps in the conversation (links)
CALM's Dialogue Understanding module leverages language models to interpret user statements and intentions. As a designer:
- You aren't required to build sets of intents, entities, and variations for every scenario.
- However, you can still do so for specific scenarios if desired.
LLM-Based CommandGenerator
:
The CommandGenerator
translates user input into commands that drive the conversation forward by triggering flows, operations, repair patterns, and more.
It considers:
- Conversation history
- Context
Key Customization Options:
- Prompting the LLM: Use flow descriptions and slot definitions to guide the LLM in generating appropriate commands. Learn more about prompting.
- Flow Retrieval: Pre-select relevant flows for a given conversation. Learn more about flow retrieval.
CxD Workflow in CALM
Outside of Rasa: Designer Responsibilities
- Gather data on user needs, language style, and conversational habits
- Define user personas, map content, and user journeys
- Create an AI assistant personality
- Write sample dialogues
- Draft conversational flows
- Plan error handling, escalation strategies, and handovers (if needed)
- Prepare user testing rounds and protocols
Inside Rasa: Builder Responsibilities
- Build flows based on designs and user journeys
- Write efficient flow and slot descriptions to guide the LLM
- Create responses (if needed) that align with personality guidelines
- Prompt the LLM to generate or rephrase responses (if needed)
- Customize conversation repair patterns per error handling strategies
- Write end-to-end (e2e) tests based on sample dialogues
- Connect the assistant to knowledge sources and implement RAG
- Instruct the LLM on generating texts for RAG responses
- Debug designs and test the assistant using Rasa Inspector