Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(ux-writing): Adds conversation design and chatbot guidelines. #4206

Merged
merged 12 commits into from
Oct 10, 2024
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
id: Chatbots
section: AI
subsection: Conversation design
---

import { Button, Card, CardBody, CardFooter, CardTitle, Divider, Gallery, GalleryItem } from '@patternfly/react-core';
import ArrowRightIcon from '@patternfly/react-icons/dist/esm/icons/arrow-right-icon';

## Writing for chatbots

When chatbots are design to meet the needs of your users, they can improve the overall UX of your product, because they are convenient, efficient, and persistent.
edonehoo marked this conversation as resolved.
Show resolved Hide resolved

Chatbots are only as good as the writing that goes into them. The language they use must build trust and clearly establish the “rules” of the conversation.

There 2 main types of chatbots:

<Gallery hasGutter minWidths={{default:'400px'}}>
<GalleryItem>
<Card isFullHeight isLarge>
<CardTitle>Rule-based chatbots</CardTitle>
<CardBody>Bots that are based on a set of predefined rules. These use a planned, guided dialog, and have a script that the user must stay on. The script is written by a human, including any microcopy, rules, prompts, and responses.</CardBody>
<CardFooter> <Button component="a" href="https://www.patternfly.org/ux-writing/chatbots" variant="link" icon={<ArrowRightIcon />} iconPosition="end"> View chatbot writing guidelines </Button></CardFooter>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this link exist?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops, I actually meant to delete this page!

</Card>
</GalleryItem>
<GalleryItem>
<Card isFullHeight isLarge >
<CardTitle>AI-based chatbots</CardTitle>
<CardBody>Bots that use technologies like natural language processing and generative AI to parse user input and decide how to response. Often makes for a more natural, free flowing conversation, but relies on a trustworthy AI model.</CardBody>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<CardBody>Bots that use technologies like natural language processing and generative AI to parse user input and decide how to response. Often makes for a more natural, free flowing conversation, but relies on a trustworthy AI model.</CardBody>
<CardBody>Bots that use technologies like natural language processing and generative AI to parse user input and decide how to respond. Often makes for a more natural, free flowing conversation, but relies on a trustworthy AI model.</CardBody>

<CardFooter> <Button component="a" href="https://www.patternfly.org/" variant="link" icon={<ArrowRightIcon />} iconPosition="end"> Use our chatbot extension</Button> </CardFooter>
</Card>
</GalleryItem>
</Gallery>

## When should I use a chatbot?

It is important to only use chatbots when they add value to the user experience. Do not use chatbots simply for the sake of novelty. Your users aren't likely to be excited to interact with a new chatbot feature, unless it directly helps them.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It is important to only use chatbots when they add value to the user experience. Do not use chatbots simply for the sake of novelty. Your users aren't likely to be excited to interact with a new chatbot feature, unless it directly helps them.
It is important to only use chatbots when they add value to the user experience. Do not use chatbots simply for the sake of novelty. Your users aren't likely to be excited to interact with a new chatbot feature, unless it directly helps them.


Common chatbot uses include:
- Providing customer assistance, when waiting for human help would take longer
- Connecting users with resources, to streamline the process of searching for resources on their own
- Using natural language to share information with users (requires generative AI support)
- Assisting users with common, recurring tasks

Before building a chatbot, ask yourself the following questions:
- What are your users’ goals?
- How could a bot help your users reach their goals?
- How is a bot better than traditional contextual support, like wizards, modals, and so on?

| **Don't** | **Do** |
| --- | --- |
| Don't use a chatbot when users can accomplish tasks more efficiently through the UI. | Do use a chatbot to help resolve common problems more efficiently. |
| Don't use a chatbot for a complex or lengthy process. | Do use a chatbot to make it easier for users to complete routine tasks. |
| Don't use a chatbot for sensitive or emotional topics, that need real humans. | Do use a chatbot if users would benefit from on-demand help, quicker than humans can provide. |

## Chatbot personality and branding

Chatbots should be aligned with the [PatternFly brand guidelines.](/ux-writing/brand-voice-and-tone) If your chatbot is designed for a Red Hat product, there are [additional Red Hat brand guidelines](https://www.redhat.com/en/about/brand/standards) that you should follow.

Additionally, you will need to customize a brand for your chatbot, including a name, personality, and avatar. Doing so will help users identify and understand the bot, and will also help you build a consistent bot identity.




Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
id: About conversation design
section: AI
subsection: Conversation design
---

# What is conversation design?

**Conversation design** is a subset of UX that's focused on the design of conversation between humans and technology, most often through chatbots or voicebots. The goal of conversation design is to create an interactive experience that resembles human-to-human conversation as much as possible.

It is important to align conversation design with the established [PatternFly brand voice and tone](/ux-writing/brand-voice-and-tone), as well as our [AI guidelines](/ai/ai-guidelines) and [principles.](/ai/about-ai)
rebeccaalpert marked this conversation as resolved.
Show resolved Hide resolved

## What do conversation designers do?

Often coming from the field of UX, **conversation designers** combine technical and writing skills with the fundamentals of user-centered design to ensure that the development and use of chatbots is centered on real user needs. They work on all text related to the conversational UI, including prompts, replies, and buttons.

Conversation designers work across the following phases of design.

- **Strategy:** Based on goals, expectations, and desires of users.
- Develop an understanding on your audience through existing research, personas, and interviews.
- Decide on an approach for the chatbot's personality, voice, and tone.
- Outline the paths that a user could take in a chatbot conversation, as well as the consequences of veering off a path.

- **Writing and design:** Following the strategy you develop, write the chatbot's dialog, including questions and responses.
- Typically write messages for welcome, opt-in, global help and stop requests, quick replies and buttons, and re-engagement messages.
- Start with an outline and fill in the gaps.
- By being reliable, predictable, and transparent, build trust and confidence that your chatbot can deliver what it says it will.

- **Prototyping and testing:** Create a working prototype, test it, and iterate as needed.
- Use a prototyping software to build the chatbot flows.
- Identify any points of friction or error.
- Check with stakeholders that the chatbot is helping users meet the right goals.

## Best practices

These best practices for conversation design will help ensure that your users needs are met and that their experience with your chatbot is positive and painless.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
These best practices for conversation design will help ensure that your users needs are met and that their experience with your chatbot is positive and painless.
These best practices for conversation design will help ensure that your users' needs are met and that their experience with your chatbot is positive and painless.


- Reference your chatbot's goal in your opening and keep it the focus throughout the conversation.
- Be clear. Keep it short and simple. Try to stick to 3 lines of text in a message. Only send 1 to 3 messages before allowing a user to provide input.
- Avoid open ended questions. If you ask any, make them very simple, increase pause time between messages, and tell users when they should type.
- Be direct. Limit choices for users as much as possible and provide examples when you can.
- Frame questions in terms of value for the user.
- Unlike traditional content design, *don't lead with the benefit.* End with the benefit to be sure that its read and acted upon. Users should be able to complete an action solely based on a chatbot's last sentence.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Unlike traditional content design, *don't lead with the benefit.* End with the benefit to be sure that its read and acted upon. Users should be able to complete an action solely based on a chatbot's last sentence.
- Unlike traditional content design, *don't lead with the benefit.* End with the benefit to be sure that it is read and acted upon. Users should be able to complete an action solely based on a chatbot's last sentence.

- If you ask for personal info, tell users "why" you're asking first.
- Establish conversation patterns and stick to them.
- Always have the last word.

Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
id: Conversation design
section: PatternFly-AI
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which sections do we want this and the chatbots.md files to appear in the nav? Should they be under patternfly-ai/conversation-design as different tabs?

if so, i think you should be able to do that by using

id: (page title)
section: PatternFly-AI
source: (page title again? ... really it's whatever you want to be on the tab)

---

import { Button, Flex, FlexItem } from '@patternfly/react-core';
import ArrowRightIcon from '@patternfly/react-icons/dist/esm/icons/arrow-right-icon';


# Conversation design guidelines

**Conversation design** is method of writing for conversational interfaces, like chatbots or voicebots. The goal of conversation design is to create an interactive experience that resembles human-to-human conversation as much as possible. Like traditional content design, conversation design is focused on using words to make experiences clear, concise, and well-timed.

Good conversation design combines content strategy, writing, and design to ensure that the development and use of chatbots is centered on real user needs. This includes making sure that all text related to the conversational UI supports easy engagement with chatbots, while staying aligned with brand standards.

When designing AI conversations alongside PatternFly-based projects, it is important to align with our established [brand voice and tone](/ux-writing/brand-voice-and-tone), as well as our [ethical guidelines for AI.](/patternfly-ai/ai-guidelines)
rebeccaalpert marked this conversation as resolved.
Show resolved Hide resolved

## Best practices

Following these best practices to help ensure that your users can complete their goals through an AI-based conversation:

- Be transparent about AI use.
- Be direct, brief, and consistent.
- Frame questions in terms of value for the user.
- If you ask for personal info, tell users "why" you're asking first.
- Always have the last word.

## Writing for chatbots

When chatbots are design to meet the needs of your users, they can improve the overall UX of your product, because they are convenient, efficient, and persistent.
edonehoo marked this conversation as resolved.
Show resolved Hide resolved

[Our virtual assistant extension](/patterfnfly-ai/chatbot/about-virtual-assistant) utilizes PatternFly components to create a foundation for an AI-based chatbot, with additional customization options.
edonehoo marked this conversation as resolved.
Show resolved Hide resolved

<Flex>
<FlexItem>
<Button component="a" href="/patternfly-ai/chatbot/about-chatbot" target="_blank" variant="primary" size="lg">Use the chatbot extension <ArrowRightIcon /></Button>
</FlexItem>
</Flex>

Chatbots are only as good as the writing that goes into them. The language they use must build trust, clearly establish the “rules” of the conversation, and support users' goals.

In addition to general microcopy, like headings or buttons, you will need to write:
- Welcome and goodbye messages.
- Bot prompts.
- AI disclosures.

### Welcome and goodbye messages

It is important to always welcome users to the chatbot experience, and (if applicable) to say goodbye when they've ended the chat. A goodbye message isn't always necessary, like in instances where users can "minimize" a chat window to come back to it later.

When you know your user's name, address them directly.

![Chatbot welcome message with user's name](./img/chatbot-welcome.png)

### Bot prompts

When writing your bot's prompts:

- Keep messages short and simple. Try to stick to 3 lines of text in a message and only send 3 messages at most before allowing a user to provide input.
- Be direct and limit choices for users as much as possible.
- Unlike traditional content design, *don't lead with the benefit.* End with the benefit to be sure that its read and acted upon. Users should be able to complete an action solely based on a chatbot's last sentence.
- Frame any questions from the bot in terms of value for the user.
- Provide examples when relevant.
- Avoid open ended questions. If you ask any, make them very simple, increase pause time between messages, and tell users when they should type.
- Utilize different methods of presenting information, like cards or buttons. You don't have to always use plain text in your messages; sometimes different message types can be more convenient and engaging.

![Chatbot prompt examples](./img/chatbot-prompts.png)

### AI disclosure

Make sure to disclose any use of AI in chatbots. Our users should be able to trust that we are honest and transparent with them as much as possible.

- Use labels and other visual styling cues to clearly identify AI features.
- Add necessary legal disclosures where you can, like in the chatbot footer.
- Display an indicator when the bot is "thinking" or "typing", so that users know to expect feedback.
edonehoo marked this conversation as resolved.
Show resolved Hide resolved
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ if (process.env.EXTENSIONS_ONLY === 'true') {
{ section: 'get-started' },
{ section: 'design-foundations' },
{ section: 'tokens' },
{ section: 'PatternFly-AI' },
{ section: 'accessibility' },
{ section: 'UX writing' },
{ section: 'components' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ module.exports = (sourceMD, sourceProps, sourceFunctionDocs) => {

sourceMD(path.join(contentBase, 'tokens/**/*.md'), 'tokens');

sourceMD(path.join(contentBase, 'PatternFly-AI/**/*.md'), 'PatternFly-AI');

// Gallery pages
const galleryBase = path.join(__dirname, "../patternfly-docs/pages");
sourceMD(path.join(galleryBase, "landing-pages/**/*.md"), "landing-pages");
Expand Down
Loading