O Kit de ML pode gerar respostas curtas a mensagens usando um modelo no dispositivo.
Para gerar respostas inteligentes, você transmite ao Kit de ML um registro de mensagens recentes de uma conversa. Se o Kit de ML determinar que a conversa está em inglês e que ela não tem um assunto potencialmente sensível, ele vai gerar até três respostas, que podem ser sugeridas ao usuário.
Testar
- Teste o app de exemplo para conferir um exemplo de uso dessa API.
Antes de começar
- Inclua os seguintes pods do Kit de ML no seu Podfile:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- Depois de instalar ou atualizar os pods do projeto, abra o projeto Xcode usando o
.xcworkspace
. O Kit de ML é compatível com a versão 12.4 ou mais recente do Xcode.
1. Criar um objeto de histórico de conversas
Para gerar respostas inteligentes, transmita ao Kit de ML uma matriz em ordem cronológica 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, o carimbo de data/hora e o ID do usuário do remetente da mensagem ao histórico de conversas.
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 ele não precisa ser consistente entre conversas ou invocações do gerador de Resposta inteligente.
Se a mensagem foi enviada pelo usuário para quem você quer sugerir respostas, defina
isLocalUser
como "true".
Swift
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)
Objective-C
NSMutableArray *conversation = [NSMutableArray array]; // Then, for each message sent and received: MLKTextMessage *message = [[MLKTextMessage alloc] initWithText:@"How are you?" timestamp:[NSDate date].timeIntervalSince1970 userID:userId isLocalUser:NO]; [conversation addObject:message];
Um objeto de histórico de conversas é semelhante ao exemplo a seguir:
Carimbo de data/hora | userID | isLocalUser | Mensagem |
---|---|---|---|
Quinta-feira, 21 de fevereiro de 2019, 13:13:39 PST 2019 | verdadeiro | você está a caminho? | |
Quinta-feira, 21 de fevereiro de 2019, 13:15:03 PST 2019 | FRIEND0 | false | Vou me atrasar! |
O Kit de ML sugere respostas para a última mensagem de um histórico de conversa. A última mensagem precisa ser de um usuário não local. No exemplo acima, a última mensagem na conversa é do usuário não local friend0. Quando você usa o Kit de ML de cartão, esse registro sugere respostas para a mensagem do MIGO: "Estou atrasado, desculpe!".
2. Receber respostas de mensagens
Para gerar respostas inteligentes a uma mensagem, receba uma instância de SmartReply
e transmita
o histórico da conversa para o método suggestReplies(for:completion:)
:
Swift
SmartReply.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 result doesn't contain any suggestions. } else if (result.status == .success) { // Successfully suggested smart replies. // ... } }
Objective-C
MLKSmartReply *smartReply = [MLKSmartReply smartReply]; [smartReply suggestRepliesForMessages:inputText completion:^(MLKSmartReplySuggestionResult * _Nullable result, NSError * _Nullable error) { if (error || !result) { return; } if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.status == MLKSmartReplyResultStatusSuccess) { // Successfully suggested smart replies. // ... } }];
Se a operação for bem-sucedida, um objeto SmartReplySuggestionResult
será transmitido para o gerenciador de conclusão. Esse objeto contém uma lista de até três respostas sugeridas, que você pode apresentar ao usuário:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
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 um assunto sensível.