Mit ML Kit unter iOS intelligente Antworten generieren

ML Kit kann mithilfe eines On-Device-Modells kurze Antworten auf Nachrichten generieren.

Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein Log der letzten Nachrichten in einer Unterhaltung. Wenn ML Kit feststellt, dass die Unterhaltung auf Englisch ist und keine potenziell sensiblen Themen enthalten, generiert ML Kit bis zu drei Antworten, die Sie Ihrem Nutzer vorschlagen können.

Ausprobieren

  • Probieren Sie die Beispiel-App aus, um ein Beispiel für die Verwendung dieser API zu sehen.

Hinweis

  1. Nehmen Sie die folgenden ML Kit-Pods in Ihre Podfile-Datei auf:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit der zugehörigen .xcworkspace. ML Kit wird in Xcode ab Version 12.4 unterstützt.

1. Objekt für den Unterhaltungsverlauf erstellen

Zum Generieren von intelligenten Antworten übergeben Sie ML Kit ein chronologisch geordnetes Array von TextMessage-Objekten, wobei der früheste Zeitstempel an erster Stelle steht. Immer wenn der Nutzer eine Nachricht sendet oder empfängt, fügen Sie die Nachricht, ihren Zeitstempel und die Nutzer-ID des Nachrichtenabsenders dem Unterhaltungsverlauf hinzu.

Die Nutzer-ID kann ein beliebiger String sein, der den Absender innerhalb der Unterhaltung eindeutig identifiziert. Die User-ID muss keinen Nutzerdaten entsprechen und die User-ID muss zwischen Unterhaltungen oder Aufrufen des intelligenten Antwortgenerators nicht einheitlich sein.

Wenn die Nachricht von dem Nutzer gesendet wurde, dem Sie Antworten vorschlagen möchten, setzen Sie isLocalUser auf "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];

Ein Unterhaltungsverlaufsobjekt sieht wie das folgende Beispiel aus:

Zeitstempel userID isLocalUser die Botschaft und
Do., 21. Feb., 13:13:39 Uhr (PST) 2019 true Bist du auf dem Weg?
Do., 21. Feb., 13:15:03 Uhr (PST) 2019 FRIEND0 false Ich verspäte mich, Entschuldigung!

ML Kit schlägt Antworten auf die letzte Nachricht in einem Unterhaltungsverlauf vor. Die letzte Nachricht sollte von einem nicht lokalen Nutzer stammen. Im obigen Beispiel stammt die letzte Nachricht in der Konversation vom nicht lokalen Nutzer friend0. Wenn du dieses Log über ML Kit verwendest, werden Antworten auf die Nachricht von friendO vorgeschlagen: „Tut mir leid!“

2. Antworten auf Nachrichten erhalten

Um intelligente Antworten auf eine Nachricht zu generieren, rufen Sie eine Instanz von SmartReply ab und übergeben Sie den Unterhaltungsverlauf an seine suggestReplies(for:completion:)-Methode:

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.
      // ...
  }
}];

Wenn der Vorgang erfolgreich ist, wird ein SmartReplySuggestionResult-Objekt an den Abschluss-Handler übergeben. Dieses Objekt enthält eine Liste mit bis zu drei vorgeschlagenen Antworten, die Sie dem Nutzer präsentieren können:

Swift

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

Beachten Sie, dass ML Kit möglicherweise keine Ergebnisse zurückgibt, wenn das Modell nicht sicher ist, wie relevant die vorgeschlagenen Antworten sind, die Eingabe nicht auf Englisch ist oder wenn das Modell sensible Themen erkennt.