Echtzeit-Sprachagenten mit Frontier Intelligence — Bohan Li, EliseAI

AAI Engineer
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00Mein Name ist Bo. Ich werde hier über Echtzeit-Sprachagenten mit Frontier Intelligence sprechen.
00:00:18Eigentlich geht es darum, ein wenig darüber zu sprechen, wie wir bei
00:00:22Elise AI unser Sprachagenten-Framework aufgebaut haben, um Echtzeit-Sprache mit der
00:00:28Intelligenz auf dem Niveau der neuesten Modelle zu ermöglichen, die wir benötigen. Bevor ich beginne, möchte ich
00:00:36einige Parallelen dazu aufzeigen, warum wir uns für kaskadierte Sprachagenten entschieden haben
00:00:42und das insbesondere mit selbstfahrenden Autos vergleichen, an denen ich früher gearbeitet habe.
00:00:48Für mich machen kaskadierte Sprachagenten sehr viel Sinn, wenn man sie unter dem Aspekt
00:00:53betrachtet, sie in Wahrnehmung zu unterteilen – was bei selbstfahrenden Autos
00:00:59eben die Bounding Boxes, die Kamera und das Lidar sind. Bei Sprache wird es
00:01:05die Transkription sein, die im Grunde diese Signale aus der realen Welt
00:01:09in Datenelemente umwandelt, die das Sprachmodell oder welches Gehirn auch immer verarbeiten kann.
00:01:17Das zweite ist der Planungs-Stack, was ziemlich unkompliziert ist.
00:01:23Hier nimmt das Sprachmodell die Ausgaben der Wahrnehmungsstufe entgegen und erzeugt
00:01:29die Ergebnisse, die Sie zurück in die reale Welt ausgeben möchten. Und schließlich gibt es die Steuerungsschicht,
00:01:36bei der man im autonomen Fahren die Trajektorie nimmt, die der Planer ausgibt, und sie quasi
00:01:43in echte Steuersignale umwandelt, um das Auto zu lenken. Hier wandeln wir den Text in
00:01:50Audio um, mit dem wir die Gedanken unserer Sprachagenten ausdrücken. Und ja, hier werde ich mich also ein wenig vertiefen in
00:02:00jeder dieser Bereiche, und wir haben in jedem dieser Bereiche ein paar interessante Tricks entwickelt, um
00:02:08die Geschwindigkeit unserer Sprachagenten zu verbessern, ohne die Intelligenz zu opfern.
00:02:13Das erste ist also die Transkribiererschicht. Wir haben uns dieses Konzept ausgedacht, das wir
00:02:19den Streaming Speculative Transcriber nennen, bei dem wir effektiv einen schnellen Streaming-Transkribierer
00:02:24wie Flux über oder quasi unter ein Scribe v2 legen, einen genauen Batch-Transkribierer,
00:02:33der mehr Kontext verarbeitet. Er ist etwas langsamer, liefert aber genauere Erkennungen.
00:02:39Gehen wir also ein Szenario durch: In diesem Fall hat der Agent gerade gefragt:
00:02:44"Können Sie Ihren Namen und Ihr Geburtsdatum nennen?", der Benutzer wird antworten, und wir sehen, wie sich das
00:02:49zeitlich auswirkt. Zuerst erhalten wir die erste Erkennung. Wir erhalten sie
00:02:57aus der Streaming-Schicht. Die genaue Schicht, die Korrekturschicht, wird nicht ausgelöst, da es sich um denselben Text handelt.
00:03:05Wir erhalten einige weitere Streaming-Texterkennungen, und in diesem Fall wird die Korrekturschicht tatsächlich
00:03:11abgebrochen, da wir neuen Text erhalten haben – mehr Kontext und mehr Audio übertreffen also den alten genauen Text.
00:03:21Hier setzt nun die erste Korrektur an. Da die Scribe v2-Schicht versteht,
00:03:27worum es in der Frage geht, erkennt sie, dass hier von einem Namen und einem Geburtsdatum die Rede ist.
00:03:34Und dann noch ein paar weitere Erkennungen. Das ist nur Interpunktion, das interessiert uns nicht.
00:03:37Am Ende leiten wir diesen Text also an den Agenten weiter.
00:03:44Weiter geht es mit der Sprachmodell-Schicht. Da wir hier eher langsame, aber
00:03:52intelligente LLMs verwenden, möchten wir die Anzahl der Roundtrips wirklich reduzieren. Was uns zu vielen
00:03:58Inferenzschritten zwingt, sind Tool Calls. Eine Möglichkeit, das zu umgehen, besteht darin, Hintergrundagenten die Tool Calls
00:04:05für Sie erledigen zu lassen und die Tools wieder in den Kontext des Hauptagenten einzubringen, sodass dieser denkt,
00:04:13er habe den Tool Call selbst gemacht, obwohl das gar nicht der Fall war. Erinnern wir uns an die Erkennung von vorhin: Was also passiert, ist, dass jede dieser Erkennungen eine
00:04:26frühe Generierung des Agenten auslöst, wir diese aber nicht tatsächlich ausgeben, bis wir bestätigt haben, dass
00:04:38der Benutzer zu sprechen aufgehört hat. In diesem Fall sagt der Benutzer "Sicher". Der Agent weiß quasi, dass der Benutzer noch etwas sagen wird.
00:04:45Unser Hintergrund-Tool-Call, der uns dabei helfen soll, den Namen und das Geburtsdatum aus der Benutzererkennung zu ermitteln,
00:04:51wird nicht ausgelöst, also passiert da nicht viel. Die nächste Soforterkennung trifft ein. Sie besagt, dass es immer noch nicht wirklich ein Name ist.
00:05:02Unser Agent spielt quasi mit und macht dort weiter.
00:05:06Jetzt kommt mehr Kontext zurück. Der Agent hat das Gefühl, dass es da einen Namen geben sollte.
00:05:11Er wird bitten, ihn zu buchstabieren, weil er wahrscheinlich vermutet, dass hier ein Transkriptionsfehler vorliegt.
00:05:16Immer noch kein Name und kein Geburtsdatum. Und schließlich – erinnern Sie sich – ist dies unsere korrigierte,
00:05:22finale Soforterkennung des Transkribierers von Scribe v2.
00:05:27Hier wird unsere voreilige Agentengenerierung, die ohne Tool Calls erstellt wurde, abgebrochen,
00:05:34weil der Hintergrundagent endlich den Namen und das Geburtsdatum finden kann, nach denen er gesucht hat.
00:05:38Er wird also neu gestartet und nun verfügt der Agent tatsächlich über den Kontext, den er braucht.
00:05:45Und hier sehen Sie, wie wir das machen. Der Tool Call enthält hier ein wenig
00:05:49Intelligenz. Wir korrigieren Fehlschreibweisen von Namen
00:05:53und führen hier quasi einen phonetischen Abgleich durch.
00:05:57Und sobald wir verstanden haben, dass dies das Ende der Benutzereingabe ist,
00:06:02geben wir sie aus. Also recht Standard.
00:06:06Gut, und die nächste Ebene hier ist Text-to-Speech. Bei Text-to-Speech besteht das Ziel
00:06:12darin, das zu nehmen, was der Agent gesagt hat, während der Agent dies in einem Streaming-
00:06:16Verfahren ausgibt. Wir müssen also so schnell wie möglich Audio erzeugen. Im Idealfall können Sie
00:06:24bereits Audio abspielen, bevor der Agent überhaupt mit der vollständigen Texterstellung fertig ist. So lässt sich quasi
00:06:31die Latenz beim Abschließen der Generierung verbergen. Ich spiele jetzt also die Streaming-
00:06:39Ausgabe des Streaming-Agenten ab. Sie beginnt mit U. Und bevor ich tiefer darauf eingehe, gibt es
00:06:46ein neues Konzept, das wir hier vorstellen und das sich Prefix-Cache nennt. Der Prefix-Cache
00:06:52überprüft den Datenstrom des Agenten, um festzustellen, ob wir für diese Wortsequenz bereits
00:07:02Audio generiert haben, etwa aus einer vorherigen Generierung oder vielleicht derselben Generierung in diesem Gespräch.
00:07:10Er erkennt das Wort U. Bei diesem Prefix-Cache wollen wir nicht
00:07:17bei jedem einzelnen Wort sofort einen Treffer landen. Wir warten ein wenig länger. Nach
00:07:24drei Wörtern verzeichnet der Prefix-Cache unseren ersten Treffer. Und rechts sehen Sie unseren
00:07:31Standard-Text-to-Speech-Anbieter – Cartesia ist beispielsweise eine Text-to-Speech-Engine mit WebSocket-Unterstützung.
00:07:36Wir leiten den Agenten also durch den Cache und gleichzeitig durch das WebSocket.
00:07:45Weitere Token kommen an, mehr Caching, mehr Daten an das WebSocket gesendet. Hier gibt es nicht viel zu sagen.
00:07:51Und nun erhalten wir unser erstes einzigartiges Element: Wir haben ein Token gefunden, das tatsächlich
00:07:59einen Cache-Miss verursacht. Das macht Sinn, wenn wir vorherige Generierungen cachen. "You said your name"
00:08:05ist ziemlich gebräuchlich, aber sobald wir den Namen hinzufügen, führt das plötzlich zu einem Cache-Miss.
00:08:12An diesem Punkt geben wir tatsächlich unser gecachtes Audio aus. "You said your name is" wird
00:08:19ausgegeben, während der restliche Streaming-Text zurückkommt. Zu diesem Zeitpunkt hört der Benutzer den Agenten.
00:08:25Der Benutzer weiß nicht wirklich, was vor sich geht; für ihn wirkt es einfach wie extrem schnelle Antwortzeiten.
00:08:32Und jetzt fließt der verbleibende Text durch. An diesem Punkt haben wir bereits aus dem Cache ausgegeben.
00:08:38Der Cache hat seine Arbeit getan. Den Rest können wir quasi an Cartesia übergeben. Und hier ist der Trick,
00:08:46bei dem Cartesia das gesamte Transkript bis zu diesem Punkt gesehen hat. Für Cartesia ist nicht ersichtlich,
00:08:56dass dieser Prefix-Cache existiert. Es generiert einfach den vollständigen Satz mit
00:09:01standardmäßiger natürlicher Intonation. Aber wenn die Generierung zurückkommt, da wir das Audio
00:09:08bereits hier abgespielt haben, können wir das Audio von Cartesia tatsächlich unterdrücken
00:09:13und einfach den restlichen Teil abspielen. Der Benutzer bemerkt vielleicht einen ganz kleinen Schluckauf – ich spiele später noch etwas Audio ab, und
00:09:21Sie werden merken, dass Sie es wahrscheinlich kaum wahrnehmen können. Effektiv nehmen wir diesen Teil
00:09:28und geben ihn direkt aus, nachdem dieses Audio zu Ende abgespielt wurde. Für den Benutzer wirkt das also nahtlos.
00:09:35Und ja, das waren jetzt viele technische Details. Der beste Weg ist wohl,
00:09:43einfach einen Anruf abzuspielen und das in Aktion zu sehen. Ich habe hier also einen Anruf aufgezeichnet und wir hören uns an, was passiert.
00:09:53Hier sprechen wir mit Ihnen. Hier ist Bo, Frauenarztpraxis Elise am Apparat.
00:09:59Hallo, ich glaube, ich bin vielleicht schwanger und möchte einen Ultraschall zur Bestätigung vereinbaren.
00:10:03Das sind aufregende Neuigkeiten. Können Sie Ihren Namen und Ihr Geburtsdatum nennen?
00:10:08Sicher, es ist Elise Trial. Geburtsdatum 23.03.
00:10:15Vielen Dank. Sind Sie zum ersten Mal bei uns Patientin?
00:10:24Ja. Willkommen bei Bo, Frauenarztpraxis. Darf ich Ihnen einen Link per SMS senden, um Ihre Versicherungsinformationen hochzuladen?
00:10:34Sicher. Okay. Gesendet. Geben Sie mir Bescheid, sobald Sie ihn erhalten haben.
00:10:48Ich habe Ihre Versicherungsinformationen erhalten. Der früheste Termin, den ich habe, ist Donnerstag,
00:10:53der 2. Juli, um 10 Uhr. Moment, geben Sie mir eine Sekunde. Ich sehe kurz in meinem Kalender nach.
00:11:01Klar, lassen Sie sich Zeit. Haben Sie etwas für nächste Woche?
00:11:09Für nächste Woche kann ich einen Ultraschall bei Dr. Avery Stone in der North Clinic am Dienstag,
00:11:14dem 7. Juli, um 14 Uhr oder 15 Uhr anbieten. Passt einer davon für Sie?
00:11:20Ja, 14 Uhr passt. Super. Ihr Termin wurde gebucht. Wir freuen uns darauf, Sie dann zu sehen.
00:11:29Danke. Tschüss. Gut. Ja, das war es im Grunde auch schon.
00:11:35Ja, man sieht hier irgendwie – all dieses Streaming und, wissen Sie, es passiert eine Menge
00:11:43im Hintergrund. Und ja, das ist es, was Sprachagenten wirklich interessant macht.
00:11:48Und es lässt sich im Framework noch viel Aufwand betreiben, um wirklich eine
00:11:55natürliche Konversation zu erzielen, worauf wir aus sind.
00:11:59Okay. Ja, also, ich möchte im letzten Teil nur noch kurz etwas über
00:12:04Elyse erzählen. Ich denke, Elyse – unser Hauptsitz ist in New York, und wir
00:12:09versuchen, unsere Präsenz hier in der Bay Area auszubauen. Wir sind – ich denke, das ist vielleicht ein anderer Typ
00:12:15von Unternehmen, als die Leute ihn sich vorstellen, wenn sie an KI-Startups in San Francisco denken,
00:12:23wo wir uns tatsächlich sehr stark darauf konzentrieren, Menschen zu helfen und ihnen dort zu helfen, wo sie es
00:12:31am meisten brauchen, wie in den kritischsten Bereichen des Lebens. Wir arbeiten an Wohnen und im Gesundheitswesen, und wir sind sehr erfolgreich,
00:12:37und hier gibt es einen Link, um unserem Team beizutreten, und wir werden
00:12:45viel auf Twitter posten, sodass Sie uns auch unter @Elyse.ai folgen können. Ja, das war's.
00:12:57Wir werden also noch ein wenig mehr auf Twitter posten und wir werden noch ein wenig mehr auf Twitter posten.

핵심 요약

Ein kaskadiertes Framework mit Transkriptionsschichten, Hintergrund-Tool-Calls und Prefix-Caching ermöglicht Echtzeit-Sprachagenten mit hoher Intelligenz und minimierter Latenz.

하이라이트

  • Kaskadierte Sprachagenten unterteilen sich in die Wahrnehmungsstufe, den Planungs-Stack und die Steuerungsschicht.

  • Der Streaming Speculative Transcriber kombiniert einen schnellen Streaming-Transkribierer mit einem genauen Batch-Transkribierer.

  • Hintergrundagenten übernehmen Tool Calls, um die Anzahl der Roundtrips für intelligente Sprachmodelle zu reduzieren.

  • Ein Prefix-Cache überprüft den Datenstrom, um zu erkennen, ob für eine Wortsequenz bereits Audio generiert wurde.

  • Die Steuerungsschicht unterdrückt das Audio von Drittanbietern, sobald der Prefix-Cache das Audio bereits ausgegeben hat.

타임라인

Architektur kaskadierter Sprachagenten

  • Kaskadierte Sprachagenten vergleichen sich strukturell mit selbstfahrenden Autos.
  • Die Wahrnehmungsschicht wandelt reale Signale in Datenelemente um.
  • Die Steuerungsschicht wandelt Text in Audio um.

Die Architektur unterteilt sich in Wahrnehmung, Planung und Steuerung. Bei selbstfahrenden Autos entsprechen Bounding Boxes und Lidar der Transkription in der Sprachverarbeitung. Das Sprachmodell fungiert als Planungs-Stack. Die Steuerungsschicht setzt die gedanklichen Ergebnisse in Steuersignale oder Audio um. In diesem Bereich optimieren spezielle Tricks die Geschwindigkeit.

Die Transkribiererschicht

  • Der Streaming Speculative Transcriber nutzt Flux und Scribe v2.
  • Korrekturschichten passen Erkennungen anhand des Kontextes an.

Ein schneller Streaming-Transkribierer läuft parallel zu einem genauen Batch-Transkribierer. Wenn Nutzer sprechen, liefert die Streaming-Schicht erste Ergebnisse. Die Korrekturschicht korrigiert Erkennungen, sobald mehr Kontext und Audio vorliegen. Interpunktion und unvollständige Wörter werden kontinuierlich verarbeitet, bevor der finale Text an den Agenten übergeben wird.

Die Sprachmodell-Schicht und Tool Calls

  • Hintergrundagenten führen Tool Calls im Vorfeld aus.
  • Führende Generierungen werden abgebrochen, wenn neue Kontextdaten eintreffen.

Langsame, aber intelligente LLMs erfordern reduzierte Roundtrips. Hintergrundagenten erledigen Tool Calls im Hintergrund, während der Hauptagent fortfährt. Voreilige Agentengenerierungen werden bei neuen Audiodaten angepasst. Phonetischer Abgleich korrigiert Fehlschreibweisen von Namen, bevor die finale Ausgabe erfolgt.

Text-to-Speech und Prefix-Caching

  • Der Prefix-Cache prüft bereits generierte Wortsequenzen.
  • Cache-Misses leiten Anfragen an WebSocket-Anbieter weiter.

Das Ziel ist die Erzeugung von Audio im Streaming-Verfahren, während der Agent spricht. Der Prefix-Cache vergleicht den Datenstrom mit vorherigen Generierungen. Nach mehreren Wörtern erfolgt ein Treffer, und das Audio wird direkt ausgegeben. Bei einem Cache-Miss übernimmt eine Text-to-Speech-Engine wie Cartesia die Generierung, deren Audio im Anschluss synchronisiert wird.

Live-Demonstration und Unternehmensvorstellung

  • Eine aufgezeichnete Patientin vereinbart einen Ultraschalltermin.
  • Elise AI konzentriert sich auf Wohnen und Gesundheitswesen.

Eine Beispielaufzeichnung zeigt die Echtzeit-Interaktion einer Patientin mit dem Sprachagenten. Der Agent erfasst Namen, Geburtsdatum und Versicherungsinformationen nahtlos. Im Anschluss stellt der Sprecher das Unternehmen Elise AI mit Sitz in New York und Expansionsplänen in der Bay Area vor.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기