Você pode usar o ML Kit para gerar respostas de mensagens usando um modelo no dispositivo.
Para gerar respostas inteligentes, você passa ao ML Kit um registro de mensagens recentes em uma conversa. Se o ML Kit determinar que a conversa está em inglês e que a conversa não tem assunto potencialmente delicado, o ML Kit gera até três respostas, que você pode sugerir ao usuário.
Antes de você começar
- Se você ainda não adicionou o Firebase ao seu aplicativo, faça isso seguindo as etapas do guia de primeiros passos .
- Inclua as bibliotecas do ML Kit em seu Podfile:
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
Depois de instalar ou atualizar os pods do seu projeto, certifique-se de abrir seu projeto Xcode usando seu.xcworkspace
. - No seu aplicativo, importe o Firebase:
Rápido
import Firebase
Objetivo-C
@import Firebase;
1. Crie um objeto de histórico de conversa
Para gerar respostas inteligentes, você passa ao ML Kit uma matriz ordenada cronologicamente de objetos TextMessage
, com o carimbo de data/hora mais antigo primeiro. Sempre que o usuário enviar ou receber uma mensagem, adicione a mensagem, seu carimbo de data/hora e o ID do usuário do remetente da mensagem ao histórico da conversa.
O ID do usuário pode ser qualquer string que identifique exclusivamente o remetente na conversa. O ID do usuário não precisa corresponder a nenhum dado do usuário e não precisa ser consistente entre conversas ou invocações do gerador de resposta inteligente.
Se a mensagem foi enviada pelo usuário ao qual você deseja sugerir respostas, defina isLocalUser
como true.
Rápido
var conversation: [TextMessage] = []
// Then, for each message sent and received:
let message = TextMessage(
text: "How are you?",
timestamp: Date().timeIntervalSince1970,
userID: "userId",
isLocalUser: false)
conversation.append(message)
Objetivo-C
NSMutableArray *conversation = [NSMutableArray array];
// Then, for each message sent and received:
FIRTextMessage *message = [[FIRTextMessage alloc]
initWithText:@"How are you?"
timestamp:[NSDate date].timeIntervalSince1970
userID:userId
isLocalUser:NO];
[conversation addObject:message];
Um objeto de histórico de conversa se parece com o exemplo a seguir:
Carimbo de data e hora | ID do usuário | Usuário local? | Mensagem |
---|---|---|---|
Qui, 21 de fevereiro, 13:13:39 PST de 2019 | verdadeiro | você está no seu caminho? | |
Qui, 21 de fevereiro, 13:15:03 PST de 2019 | AMIGO0 | falso | Atrasado, desculpe! |
Observe que a mensagem mais recente no exemplo acima é de um usuário não local. Isso é importante porque o ML Kit sugere respostas que devem ser enviadas pelo usuário do seu aplicativo: o usuário local. Você deve passar ao Kit de ML um registro de conversa que termina com uma mensagem à qual seu usuário pode querer responder.
2. Obtenha respostas de mensagens
Para gerar respostas inteligentes para uma mensagem, obtenha uma instância de SmartReply
e passe o histórico da conversa para seu método suggestReplies(for:completion:)
:
Rápido
let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.smartReply().suggestReplies(for: conversation) { result, error in
guard error == nil, let result = result else {
return
}
if (result.status == .notSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == .success) {
// Successfully suggested smart replies.
// ...
}
}
Objetivo-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
completion:^(FIRSmartReplySuggestionResult * _Nullable result,
NSError * _Nullable error) {
if (error || !result) {
return;
}
if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == FIRSmartReplyResultStatusSuccess) {
// Successfully suggested smart replies.
// ...
}
}];
]
Se a operação for bem-sucedida, um objeto SmartReplySuggestionResult
será passado para o manipulador de conclusão. Este objeto contém uma lista de até 3 respostas sugeridas, que você pode apresentar ao seu usuário:
Rápido
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Objetivo-C
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
Observe que o kit de ML poderá não retornar resultados se o modelo não estiver confiante na relevância das respostas sugeridas, se a conversa de entrada não estiver em inglês ou se o modelo detectar assuntos confidenciais.