Wie wir Callen AI gebaut haben: die Architektur einer KI-Telefonrezeption im Produktivbetrieb

Ein technischer Blick auf die Voice-Pipeline von Callen AI: wie Twilio, Streaming-Spracherkennung, GPT-4 und ElevenLabs Anrufe annehmen und Termine buchen.

Eine KI-Telefonrezeption ist ein verteiltes Echtzeitsystem mit einer freundlichen Stimme. Callen AI, unser eigenes Produkt, nimmt eingehende Anrufe für Kliniken live entgegen, versteht, was der Anrufer möchte, prüft einen echten Kalender und bucht den Termin, und das alles, bevor dem Anrufer die Geduld ausgeht. In diesem Beitrag gehe ich die tatsächliche Architektur durch: die Telefonieschicht, die Streaming-Sprachpipeline, die LLM-Orchestrierung in der Mitte und die Leitplanken im Produktivbetrieb, die das System vertrauenswürdig genug machen, um es auf die Patienten anderer Leute loszulassen.

Wir veröffentlichen das, weil die meisten Angebote nach dem Motto „wir bauen KI-Agenten“ bei einem Diagramm mit vier Kästchen aufhören. Die interessante Ingenieursarbeit steckt in dem, was zwischen den Kästchen passiert.

Die zentrale Randbedingung: Latenz ist das Produkt

Alles in der Architektur eines Sprachagenten hängt an einer einzigen Zahl: der Stille zwischen dem Moment, in dem der Anrufer einen Satz beendet, und dem Moment, in dem der Agent antwortet. Am Telefon tolerieren Menschen etwa eine Sekunde Pause, danach wirkt das Gespräch kaputt. In dieses Budget müssen die Spracherkennung, die das Transkript abschließt, das LLM, das entscheidet, was es sagt, die Sprachsynthese, die Audio erzeugt, und jeder Netzwerksprung dazwischen passen.

Mit einer naiven Pipeline, die wartet, bis jede Stufe fertig ist, schaffen Sie dieses Budget nicht. Sie schaffen es, indem Sie alles streamen:

  • Audio kommt kontinuierlich über einen WebSocket herein, nicht in aufgezeichneten Blöcken.
  • Die Transkription ist inkrementell, die Pipeline sieht Teiltranskripte, während der Anrufer noch spricht.
  • Die Antwort des LLM wird Token für Token ausgegeben.
  • Die Sprachsynthese beginnt mit dem ersten Satz der Antwort, nicht mit dem letzten. Der Anrufer hört den Anfang einer Antwort, deren Ende noch gar nicht existiert.

Sobald Sie sich auf jeder Stufe für Streaming entscheiden, ergibt sich die Architektur weitgehend von selbst. So greifen die Stufen ineinander.

Stufe 1: Telefonie-Eingang, Twilio als Haustür

Die Rufnummer einer Klinik (bestehend oder neu) wird zu Twilio geleitet. Bei einem eingehenden Anruf öffnet Twilio einen Media Stream, einen WebSocket, der das rohe Audio des Anrufers nahezu in Echtzeit an unser Backend überträgt und Audio in die Gegenrichtung annimmt. Dieser WebSocket ist das Rückgrat des gesamten Anrufs: Alles andere, also Transkription, Schlussfolgerung und Synthese, hängt daran.

Eine Telefonieplattform statt einer eigenen SIP-Infrastruktur zu nutzen, ist eine bewusste Entscheidung für ein kleines Boutique-Team. Twilio liefert uns Rufnummernbereitstellung, PSTN-Anbindung, Anrufaufzeichnung und ein sauberes Fehlermodell. So kann ein kleines Senior-Team sein Engineering-Budget für den Teil einsetzen, den Anrufer tatsächlich wahrnehmen: das Gespräch.

Stufe 2: Streaming-Spracherkennung

Das eingehende Audio speist eine Streaming-Spracherkennung (STT), die zwei Arten von Ereignissen liefert: vorläufige Transkripte (günstige, korrigierbare Vermutungen, während der Anrufer mitten im Satz ist) und endgültige Transkripte (festgeschriebener Text). Zwei Details sind dabei weit wichtiger als die reine Worterkennungsrate:

Endpointing, also die Entscheidung, dass der Anrufer einen Gedanken abgeschlossen hat. Greift der Agent zu früh ein, unterbricht er; wartet er zu lange, fühlt sich die Pause tot an. Das ist ein einstellbarer Zielkonflikt zwischen Reaktionsschnelligkeit und Unhöflichkeit, und er muss an echten Anrufdaten justiert werden, nicht an Laboraufnahmen.

Fachvokabular. Ein generisches Modell hört klinikspezifische Begriffe, Behandlungsnamen und Namen von Ärztinnen und Ärzten und produziert kreativen Unsinn. Die Transkription auf das Vokabular jeder einzelnen Klinik auszurichten, ist Konfigurationsarbeit pro Mandant, und sie macht den Unterschied zwischen „buchen Sie mir eine Zahnreinigung“ und einem missverstandenen Rätsel.

Stufe 3: Das Gehirn, GPT-4 mit Tools statt Skript

In der Mitte der Pipeline liegt eine LLM-Orchestrierungsschleife auf Basis von Modellen der GPT-4-Klasse. Drei Designentscheidungen prägen sie:

Die Gesprächsregeln stehen im System-Prompt, die Fakten kommen aus Tools. Das Modell erfährt, wer es ist, was die Klinik anbietet und, genauso wichtig, was es nicht tun darf (Diagnosen stellen, nicht gelistete Preise nennen, einen Termin zusagen, den es nicht geprüft hat). Es wird aber nie gebeten, sich den Kalender zu merken. Alles Faktische wird zum Zeitpunkt des Anrufs abgerufen.

Tool Calling statt freier Generierung. Wenn der Anrufer einen Termin möchte, antwortet das Modell nicht aus der Fantasie, sondern gibt einen strukturierten Funktionsaufruf aus: check_availability(service, window), dann book_appointment(...) gegen das tatsächliche Buchungssystem der Klinik. Das LLM entscheidet, wann es aufruft; deterministischer TypeScript-Code entscheidet, was tatsächlich passiert. Diese Trennung, das Modell schlägt vor und der Code entscheidet, ist das wichtigste einzelne Muster im Engineering von Agenten für den Produktivbetrieb.

Eng begrenzter Gesprächsumfang. Die Aufgabe von Callen AI ist die Rezeption: begrüßen, verstehen, nachschlagen, buchen, eine Nachricht aufnehmen, übergeben. Es ist ausdrücklich kein medizinischer Chatbot. Diese Eingrenzung macht die lange Liste von Sonderfällen eines echten Telefonats überhaupt beherrschbar, und sie ist der Grund, warum ein spezialisierter Agent produktionsreif sein kann, während ein Bot für alles eine Demo bleibt.

Die Orchestrierungsschicht um das Modell herum erledigt den unspektakulären Rest: Konfiguration pro Mandant (jede Klinik hat eigene Leistungen, Öffnungszeiten, Mitarbeitende und eine eigene Stimme), Gesprächszustand, Wiederholungen bei vorübergehenden API-Fehlern und Timeouts, damit eine langsame Abhängigkeit die Antwort verschlechtert, statt den Anruf einzufrieren.

Stufe 4: Sprachsynthese mit ElevenLabs, Satz für Satz

Die Antwort fließt vom LLM Satz für Satz zur Synthese an ElevenLabs, und das entstehende Audio wird direkt über den Twilio-WebSocket zurückgestreamt. Eine natürliche Sprachmelodie ist dabei geschäftlich wichtig, nicht nur ästhetisch: Bei Roboterstimmen legen Anrufer auf, und eine Rezeption, die wie eine Rezeption klingt, wird auch so behandelt.

Die subtile Ingenieursarbeit liegt hier im Barge-in. Echte Anrufer unterbrechen. Die Pipeline muss neue eingehende Sprache bemerken, während der Agent spricht, die Wiedergabe stoppen, den nun veralteten Rest der Antwort verwerfen und wieder zuhören, wobei der gesamte Stack mitten in der Äußerung sauber geleert wird. Barge-in richtig hinzubekommen ist eines dieser Probleme, die unsichtbar sind, wenn sie funktionieren, und fatal, wenn nicht.

Das führende System: bewusst langweilig

Um die Echtzeit-Pipeline herum liegt ein bewusst konventionelles SaaS-Fundament: TypeScript und Next.js, Supabase (Postgres) als führendes System, Stripe für die Abrechnung und ein Self-Service-Onboarding, mit dem eine Klinik in etwa 30 Minuten live ist. Jeder Anruf erzeugt ein Transkript, ein strukturiertes Ergebnis (gebucht / Nachricht aufgenommen / übergeben) und ein Protokoll, das die Klinik prüfen kann.

Diese Langeweile ist ein Feature. Das neuartige Risiko des Produkts ist in der Voice-Pipeline gebündelt; Innovationsbudget für die Datenbank auszugeben, wäre ein architektonischer Kunstfehler. Mehr zu diesem Prinzip habe ich in KI ist ein Multiplikator, keine Lösung geschrieben.

Leitplanken: für den Fehlerfall gebaut, nicht für die Demo

Ein Agent im Produktivbetrieb definiert sich darüber, was passiert, wenn er an seine Grenzen kommt:

  • Übergabe an einen Menschen als vollwertiges Ergebnis. Wenn der Anrufer verärgert ist, die Anfrage außerhalb des Umfangs liegt oder die Sicherheit sinkt, besteht die Aufgabe des Agenten in einem würdevollen Ausstieg: eine Nachricht mit Rückrufzusage aufnehmen oder den Anruf weiterleiten. Eine Übergabe ist ein Erfolgsfall, kein Fehler.
  • Validierung aller Schreibvorgänge. Buchungsänderungen werden von Anwendungscode validiert, echte Leistung, echter Termin, plausible Daten, unabhängig davon, was das Modell vorgeschlagen hat. Das LLM kann einen Kalender nicht durch Halluzinationen beschädigen.
  • Vollständige Beobachtbarkeit. Aufnahmen und Transkripte fließen in eine Regressionssuite aus echten (anonymisierten) Anrufszenarien. So wird jede Änderung am Prompt oder Modell gegen die schwierigen Anrufe des letzten Monats getestet, bevor sie einen echten Anrufer erreicht.
  • Datenschutz durch Begrenzung. Der Agent erhebt nur das Minimum, das für eine Buchung nötig ist, Name, Kontakt, Leistung, mit DSGVO-bewussten Aufbewahrungsfristen. Auch hier hilft der enge Umfang: Eine Rezeption, die nie medizinischen Rat gibt, lädt auch nie zu klinischen Angaben ein, die sie nicht speichern sollte.

Was uns das eigene Produkt gelehrt hat

Callen AI ist zugleich Produkt und Beleg für unsere Lieferfähigkeit. Unseren eigenen Agenten mit echtem Anrufvolumen zu betreiben, hat uns Lektionen gelehrt, die kein Kundenprojekt so verdichtet hätte:

  1. Die Demo ist 20 % der Arbeit. Eine überzeugende Demo eines Sprachagenten dauert eine gute Woche. Der Produktivbetrieb, Barge-in, an echtem Audio justiertes Endpointing, Mandantentrennung, Abrechnung, die Regressionssuite, ist der Ort, an dem die anderen 80 % liegen.
  2. Latenzarbeit ist Architekturarbeit. Streaming lässt sich nicht nachträglich anschrauben; die Pipeline ist entweder darum herum entworfen oder zu peinlichen Pausen verurteilt.
  3. Spezialisiert schlägt generisch. Jedes schwierige Teilproblem wird einfacher, wenn der Agent genau eine Aufgabe vollständig erledigt.
  4. Deterministische Ränder, probabilistischer Kern. Das LLM trifft die Gesprächsentscheidungen; typisierter, getesteter Code verantwortet jede Nebenwirkung. Anrufer bekommen Flexibilität, der Kalender bekommt Korrektheit.

Das ist dieselbe Architektur, die wir heute für Kunden bauen: Sprachagenten, RAG-Assistenten und Multi-Agenten-Workflows, auf Griechisch und Englisch, integriert in die Systeme, die sie bereits nutzen. Wenn Sie einen solchen Agenten für Ihre eigenen Anrufer möchten, finden Sie am schnellsten in einem 20-minütigen Scoping-Gespräch heraus, was dafür nötig ist.

Sie möchten eine erfahrene Engineering-Einschätzung zu Ihrem Vorhaben?

Ein 30-minütiges Gespräch. Direkt, ohne Pitch-Deck, ohne Übergabe an Junior-Entwickler.

30-minütiges Strategiegespräch buchen →