...
When you have implemented the first 10 capabilities of your conversational agent, it is up to you to add one or more additional capabilities (see Agent Capability 11+: Extend Your Agent below) that you decide your conversational agent should have. We provide some general suggestions to help you get started to think about some useful capabilities that you can add.
Starting your NLU Pipeline
Summary Description
The first step is to get your conversational agent up and running. There is one ingredient that is still missing, but required before you can run the code provided to you. You need to create your own Dialogflow agent that you will use throughout the project and connect it to the MARBEL agent that manages the dialog (or conversation) between a user and your agent. When you have created this agent, you will be able to run your agent. Next, you will also be asked to put something in the agenda of the MARBEL agent to get things going. And, last but not least, you need to add code for creating an initial start screen (a simple webpage). When you have done this too, you can run your conversational agent and should see the start webpage that you created. Your agent won’t do any talking yet, though. It is just a first step.
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Insert the start pattern into the agenda of your MARBEL agent. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Make a Start webpage. |
Instructions
Building Your Intent and Slot Classifier
- TODO
MARBEL Agent in Eclipse
Greet, and Self-Identify
Summary Description
Natural conversations are typically opened. Our agent should not just straight away embark on the task of recommending a recipe. It should first secure the attention of its user. Opening a conversation is a basic conversational competence. A common way of opening a conversation is by greeting each other. You should provide your agent with this basic conversational competence too. It should, moreover, be able to introduce itself to its user as in the following conversational pattern. A welcoming webpage should also be created.
...
* insert your agent’s name here
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement two greeting patterns, and a Prolog rule for generating a self-identification. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Make a welcoming page. |
Instructions
Request a Random Recipe Recommendation
Summary Description
The second capability will enable the agent to recommend a recipe when a user does not care (to refine) what kind of recipe they are looking for (see the example conversational pattern below). A new pattern will be introduced to this purpose for selecting a recipe, and a new intent should be added to your Dialogflow agent to enable understanding user requests for recommending “just some recipe”. Quite some work will need to be done for introducing the first code needed for retrieving recipes from the recipe database. The first versions of two new pages will also need to be created. One page for making clear to the user that they should inform the agent about features of recipes that help refine the selection of recipes and clarify what the user is looking for. Another page for asking a user to (dis)confirm that the recipe that the agent has selected and recommends to the user is what the user is looking for.
...
* insert a recipe name here (from the agent’s database)
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement a first recipe recommendation pattern and related text responses. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Make a page that is displayed while recipe recommendation is ongoing and a page that is shown when the user needs to confirm it likes a recipe that is recommended by the agent. |
Instructions
Select Recipes by Name
Summary Description
Instead of leaving it up to the agent to suggest a recipe and choose one out of all remaining recipes, a user also can mention a specific recipe themselves and ask the agent to present that. This means that the Dialogflow agent should have knowledge of all of the recipes that are in the database too. We will make this available to that agent by adding a recipe entity (type). That will also enable the agent to recognize these recipes in user expressions.
...
* insert name of a recipe from the recipe database here, such as “artichoke and pine nut pasta”
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement a second recipe recommendation pattern. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
- |
Instructions
Unexpected Intents
Summary Description
A conversational agent should be able to handle dialog moves of users that do not necessarily fit into the currently active pattern. Such moves are “unexpected” in the sense that they do not fit into a conversational pattern, but should be expected as users will almost always slightly deviate from a rigidly framed pattern. Typical examples are expressions of appreciation and requests for information about how the agent can assist a user (a capability check). A second type of unexpected move is not due to user behavior but due to failures of speech recognition. Dialogflow will match with a so-called default fallback intent in cases where it is unable to recognize what a user says as and cannot classify it as one of the (other) intents of the agent. There is another case that we will look into too where what a user says does not seem to fit into the conversational context. Again, we can capture the “unexpected” in patterns, which will enable the conversational agent to handle them:
...
U: Have you read the Hobbit?
A: What do you mean?
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement patterns for handling “unexpected” intents and repair mechanisms for misunderstandings. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
- |
Instructions
Filter Recipes by Ingredients and Cuisine
Implementing this capability will involve implementing some of the conversational and reasoning competences that a conversational recipe recommendation agent should have. It will enable users to request recipes which use specific ingredient (types) or ask for recipes from a specific cuisine. This one of the capabilities that requires quite a big amount of work. Some of the bigger challenges will be to make Dialogflow understand ingredients (at least those that are in our database; and cuisines, for that matter, but those are fewer), to implement the logic to filter the recipe database with the feature requests of a user, and to present those in a nice way to the user on a webpage.
Summary Description
A: What recipe would you like to cook?
...
* insert name of an ingredient (type) or cuisine here
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement feature request patterns and responses, and Prolog rules for filtering recipes. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Update the recipe recommendation page and create a second recipe recommendation page. |
Instructions
Filter Recipes by Dietary Restrictions
Summary Description
We continue to extend the capabilities of the agent to handle user requests. The focus will be to enable a user to ask for recipes that meet dietary restrictions. This will also involve extending the logic of reasoning about ingredients. The main challenge will be to come up with an efficient approach to define this logic.
...
* insert a recipe feature such as vegan, for example, here
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement additional helper predicates and ingredient hierarchy rules. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
- |
Instructions
Filter Recipes by Excluding Features
Summary Description
The last extension to increase the capabilities of our agent will look into feature requests that exclude aspects of a recipe. There are many examples of this, but we will focus on user requests that ask for excluding an ingredient (type), for recipes that are not from a particular cuisine (e.g., not from Asia), or do not have a specific dietary restriction (e.g., are not vegan). You are, of course, invited to extend the agent with other similar capabilities to exclude aspects of a recipe.
...
* insert an ingredient such as salt here
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement additional helper predicates for filtering recipes. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
- |
Instructions
Confirm the Chosen Recipe
Summary Description
When users have finished their search for a nice recipe to cook, their choice should be displayed (which we already implemented for https://socialrobotics.atlassian.net/wiki/pages/createpage.action?spaceKey=PM2&title=2025%20Capability%205%3A%20Filter%20Recipes%20by%20Ingredients%20and%20Cuisine) and they should be asked to check the details to confirm the recipe is indeed what they would like to cook. Of course, we need to take at least two scenarios into account: (1) a user confirms they are happy with the recipe, or (2) they indicate it is after all not quite what they were looking for. If all is fine and well, the agent should close the conversation by saying farewell. Otherwise, the conversation should move back to the recipe selection stage. The following conversational pattern needs to be implemented:
...
* insert name of recipe here
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement confirmation and farewell patterns. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Make a closing page. |
Instructions
Removing Filters and Showing Recipes on Demand
Summary Description
The last capability on our list before we ask you to extend the capabilities of the conversational agent using your own insights and ideas is about allowing users to remove requests they made before and to allow them to indicate that they are done providing their preferences. You should implement the following patterns:
...
A: OK. Here is a list of recipes that you can choose from. [Alternative: Sorry, there are still too many recipes left to show them all. Please add more preferences.]
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Implement patterns enabling users to remove a recipe feature request and to express they are done. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
- |
Instructions
Extend Your Agent (Make it Nicer)
Summary Description
Extend your agent even further; look at the
page or talk to your TA for inspiration!
Implementation Tasks Overview
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Be creative, blow your minds. |
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Be creative, blow your minds. |