Generate relevant replies to messages using MLKit with an on-device model so no messages are sent to a server.
Note: this is an unofficial plugin.
See example
for a full example of usage
import 'package:smart_reply/smart_reply.dart';
var messages = [
TextMessage(
text: 'Message Text',
timestamp: DateTime.now(),
userId: 'abcd1234',
isLocalUser: true,
),
TextMessage(
text: 'Message Reply',
timestamp: DateTime.now(),
userId: 'wxyz1234',
isLocalUser: false,
),
];
var suggestions = await SmartReply.getSuggestions(messages);
// ['No worries', '😞', 'No problem!']
In your android/app/build.gradle
, disable compression of tflite files:
android {
// ...
aaptOptions {
noCompress "tflite"
}
}
Otherwise getSuggestions
will throw a PlatformException
Requirements:
- Xcode 11.7 or greater.
- 64-bit architectures (x86_64 and arm64). You must limit your app to 64-bit devices only.
In Xcode, set the following values:
Build settings > Architectures:
- Set to arm64 only. (click Other -> + and than enter arm64)
Build settings > Valid architectures:
- Set to arm64 only.
Info.plist:
- Set UIRequiredDeviceCapabilities to arm64 only.
You also have to set the iOS Deployment Target to at least 8.0.
- The Smart Reply model generates reply suggestions based on the full context of a conversation, not just a single message. This means the suggestions are more helpful to your users.
- The on-device model generates replies quickly and doesn't require you to send users' messages to a remote server.
- Smart Reply is intended for casual conversations in consumer apps. Reply suggestions might not be appropriate for other contexts or audiences.
- Currently, only English is supported. The model automatically identifies the language being used and only provides suggestions when it's English.
- The model uses up to 10 of the most recent messages from a conversation history to generate reply suggestions.
- It detects the language of the conversation and only attempts to provide responses when the language is determined to be English.
- The model compares the messages against a list of sensitive topics and won’t provide suggestions when it detects a sensitive topic.
- If the language is determined to be English and no sensitive topics are detected, the model provides up to three suggested responses. The number of responses depends on how many meet a sufficient level of confidence based on the input to the model.
- Due to the complexity of natural language processing, the suggestions provided by the model may not be appropriate for all contexts or audiences. If you encounter inappropriate reply suggestions, reach out to ML Kit support. Your feedback helps to improve the model and the filters for sensitive topics.
Timestamp | User ID | Local User? | Message |
---|---|---|---|
Thu Feb 21 13:13:39 PST 2019 | true | are you on your way? | |
Thu Feb 21 13:15:03 PST 2019 | FRIEND0 | false | Running late, sorry! |
Suggestion #1 | Suggestion #2 | Suggestion #3 |
---|---|---|
No worries | 😞 | No problem! |