This guide provides recommendations for monitoring and improving the performance of data store agents.
Track your agent's performance
You can monitor your agents conversation history and you can use the analytics tool for agent statistics.
Run self-service evaluation
You can run self-service evaluation which will assess the quality of your data store agent and recommend changes.
Improve agent responses
If you find some responses during testing that don't meet your expectations, try the following.
- You can overwrite an answer by adding an FAQ entry for a specific question.
- If you are experiencing low quality answers with a structured FAQ, try using unstructured FAQ.
- Using search configurations helps to ensure that the correct answers are provided.
- Use the parse and chunk configurations to optimize responses.
- To ban certain phrases, see agent settings: banned phrases.
- To customize Responsible AI (RAI) content filtering, see agent settings: safety filters.
Handle conversation digressions
An end-user may ask clarifying questions during a conversation. For example, during credit card information collection, they may want to clarify what a CVV is. In this case, your agent should answer the question and return to collecting the necessary credit card information. To accomplish this, you can create a data store handler with data stores that answer the question, apply that handler to the flow start page of the flow that handles credit card information collection, and set a transition target for this handler to return to the "current page".
Handle undesired intent matches
If your agent is matching intents when it should be using a data store handler, you can try the following to correct this:
- Delete or modify training phrases that are vague, so that all of your training phrases precisely handle the desired intention and do not conflict with your data store content.
- Use negative examples to avoid intent matching.
Data store filtering
In some cases, you may only want certain data stores available for queries, depending on session parameter values. For example, you may have unique data stores for product categories. To accomplish data store filtering for product categories:
- Set session parameters to product categories.
- Create condition routes that check the values of the session parameters and transition to a specific page that has the desired data store handler.
- The data store handler should transition back to the calling page, so that the conversation can continue.
Personalization
To make generative answers more relevant to end-users, you can provide Dialogflow with information about users.
This information is provided as JSON. There is no expected schema, so you are free to define the object properties. This JSON is sent to the large language model as-is, so descriptive property names and values lead to the best results.
For example:
{
"subscription plan": "Business Premium Plus",
"devices owned": [
{"model": "Google Pixel 7"},
{"model": "Google Pixel Tablet"}
]
}
Personalizing with the Dialogflow API
You can provide this data to Dialogflow when sending detect intent requests. This information must be provided in every detect intent request, because it is not persisted in the session.
Provide this information in the queryParams.endUserMetadata
field in the
Sessions.detectIntent
method.
Select a protocol and version for the Session reference:
Protocol | V3 | V3beta1 |
---|---|---|
REST | Session resource | Session resource |
RPC | Session interface | Session interface |
C | SessionsClient | Not available |
C# | SessionsClient | Not available |
Go | SessionsClient | Not available |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Not available | Not available |
Python | SessionsClient | SessionsClient |
Ruby | Not available | Not available |
Personalizing with Dialogflow Messenger
You can provide this data to the Dialogflow Messenger integration. See the setContext method.
Search configuration
To have better control over the agent behavior and improve the quality of the answers, boost and filter search configurations are exposed to let you boost, bury and filter documents.
Boost controls enable you to change search result ranking by applying a boost value (greater than zero for higher ranking, less than zero for lower ranking) to specific documents.
Filter controls let you to either keep or remove search results based on the specified filter criteria.
This information is provided as JSON to Dialogflow requests. The format of the JSON depends on the search control type.
Boost control
The following search configuration describes a boost control:
"searchConfig": {
"boostSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"spec": [
{
"conditionBoostSpecs": {
"condition": "CONDITION",
"boost": "1.0"
}
}
]
}
]
}
Filter control
The following search configuration describes a filter control:
"searchConfig": {
"filterSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"filter": "CONDITION"
}
]
}
Setup search configuration with the Dialogflow API
You can provide this data to Dialogflow when sending detect intent requests. This information must be provided in every detect intent request, because it is not persisted in the session.
Provide this information in the queryParams.searchConfig
field in the
Sessions.detectIntent
method.
Select a protocol and version for the Session reference:
Protocol | V3 | V3beta1 |
---|---|---|
REST | Session resource | Session resource |
RPC | Session interface | Session interface |
C | SessionsClient | Not available |
C# | SessionsClient | Not available |
Go | SessionsClient | Not available |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Not available | Not available |
Python | SessionsClient | SessionsClient |
Ruby | Not available | Not available |
Setup search configuration with Dialogflow Messenger
You can provide this data to the Dialogflow Messenger integration.
To apply a search control, the following snippet needs to be added to the DF messenger code when embedding it into a website:
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
See the setQueryParameters method.