Vi presenterar Eleven v4Möt Eleven v4, vår mest uttrycksfulla modell hittills.

Hoppa till innehållet

Integrera externa agenter med ElevenLabs Agents' röstorkestrering

Skriven av
Nicolas Bernier
Publicerad
Senast uppdaterad

LyssnaLyssna på den här artikeln

Avancerade agentorkestrerare kan i allt högre grad hantera komplexa uppgifter och arbeta med hela uppsättningen företagsverktyg. Det kräver noggrann hantering av applikations-, konversations- och systemtillstånd. För andra modaliteter än röst har vanliga mönster vuxit fram under samlingsbegreppet kontextteknik, som syftar till att skapa enhetliga arbetssätt kring en agents systemprompt i takt med att en interaktion utvecklas. Att lägga till röst innebär inte bara ytterligare ett tillståndslager för att hantera röstinteraktionens komponenter, utan gör det helst också möjligt att återanvända artefakter från tidigare arbete med andra modaliteter. 

I det här inlägget beskriver vi hur ElevenLabs Agents stöder externa agenter och de mönster som möjliggör detaljerad kontroll över deras integration. Med dessa mekanismer kan kunder använda ElevenLabs branschledande röstorkestrering och samtidigt behålla full kontroll över sin övergripande orkestrering.

Kärnkomponenter

ElevenLabs Agents

I sin enklaste form är en ElevenLabs Agent tillgänglig via en WebSocket-klient. Information som representerar server- och klienthändelser i konversationen skickas till och från agenten som JSON-objekt. När agenten transkriberar användarens tal utlöser den direkt en genereringsbegäran. Vi stöder de flesta stora modellleverantörer och låter kunder ta med sin egen Custom LLM. När kunder använder en mer komplex orkestrerare (agenter) för att besvara genereringsbegäranden bakom Custom LLM måste de säkerställa att den stöder antingen OpenAI:s Chat Completions- eller Responses API. Som tur är stöds den här API-formateringsspecifikationen enkelt av de flesta stora ramverk för agentutveckling (CrewAI, LangChain, LangGraph, HayStack, LlamaIndex, ...). 

När de har integrerats behöver dessa agenter ofta kunna läsa och uppdatera sitt interna och externa tillstånd när som helst, oavsett vilken röstorkestrerare de ligger bakom. Effektiv hantering av detta säkerställer enhetlighet med befintliga textbaserade agenter. 

Tillståndshantering

Per definition är de data en agent måste följa för att effektivt navigera i sin miljö starkt uppgiftsspecifika. För ElevenLabs Agents som drivs av en extern agent är det användbart att upprätthålla tillstånd inom några väldefinierade kategorier.

Internt tillstånd styr konversationens dynamik. Exempel på element som spåras som en del av agentens interna tillstånd är:

  • Aktuellt konversationsflöde, inklusive röstaktivitet, avbrott och identifiering av den aktiva talaren.
  • Applikationsspecifika insikter från analys av transkriberingar i realtid, till exempel identifierade avsikter, entiteter eller sentiment.
  • Resonemangsspår, inklusive mellanliggande tankar, hypoteser och tidigare försök att ta fram en lösning.
  • Konfigurations- och driftparametrar, till exempel aktiva mål, driftläge och eventuella tillfälliga begränsningar som styr beteendet under interaktionen.

Externt tillstånd fokuserar däremot främst på relevanta system och personer som agenten interagerar med eller påverkar. Exempel på element som spåras som en del av agentens externa tillstånd är:

  • Status för andra användare eller system som den interagerar med, till exempel deras aktuella mål, tillgänglighet eller behörigheter.
  • Verktyg och kunskapsbaser, till exempel API:er, databaser eller integrationer som kan påverka agentens möjlighet att agera.
  • Pågående uppgifter och beroenden som omfattar externa aktörer eller system och påverkar agentens nästa steg.

Vi beskriver ett vanligt mönster för att pålitligt upprätthålla denna information under hela livscykeln för en agents relation med en användare.

Lösningens komponenter

Översikt 

I det här avsnittet går vi igenom arkitekturkomponenterna och implementeringsdetaljerna som krävs för att integrera komplexa externa agenter. Kärnan i metoden är möjligheten att proxya en godtycklig men unik identifierare som representerar en session mellan alla tjänster. För ElevenLabs Agents som använder anpassade LLM:er kan detta enkelt göras genom att skicka den nödvändiga identifieraren som en LLM-parameter i extra body-objektet som skickas som en del av åsidosättningar för konversationen när samtalet inleds. Då kan identifieraren flöda genom ElevenLabs Agent från användaren hela vägen till den externa agenten. 

diagram describing the flow from user to elevenlabs websocket to custom llm to stateful proxy to external agent

Lägg märke till den tillståndsbevarande proxyn bakom det anpassade LLM:et. Den här tjänsten, som normalt inte finns, gör det möjligt att mappa enskilda genereringsbegäranden till godtyckliga identifierare som representerar anslutningar till den externa agenten. Det är utvecklarna av den externa agenten som ansvarar för att implementera tjänsten. I sin enklaste form hanterar proxyn anslutningar som representeras av unika identifierare och mappas till ElevenLabs-konversationer eller samtals-SID:n (för telefoni). Mer avancerade versioner kan däremot införa en hierarki i mappningen av konversationer till mer komplexa kundrelationer som omfattar flera interaktioner.

Comparison of mapping ids for one to one versus one to many cases. In the case of one to many, there is a hierarchy grouping multiple conversations ids together.

I dessa mer avancerade konfigurationer hanterar proxyn ytterligare identifierare som sträcker sig bortom en enskild begäran kopplad till en enskild nedströms session. I stället för att varje identifierare endast representerar en konversation eller ett samtals-SID kan proxyn koppla en identifierare till flera relaterade interaktioner. Det gör att systemet kan följa kundresor som rör sig mellan kanaler, återanvända historisk kontext och samordna flera interaktioner samtidigt. En enskild mappning kan till exempel gruppera flera webbchattsessioner, ett uppföljande röstsamtal och ett internt supportflöde under samma logiska kundidentifierare. Proxyn kan sedan dirigera begäranden till rätt identifierare utifrån enkla regler och samtidigt bevara ett enhetligt tillstånd bakom det anpassade LLM:et. Detta möjliggör mer flexibla och beständiga flerstegsinteraktioner som hanteras av den externa agenten.

Meddelandeförmedling

Utöver att framgångsrikt mappa genereringsbegäranden till överordnade entiteter kan den tillståndsbevarande proxyn stödja dubbelriktad meddelandeförmedling till externa källor, till exempel applikationens frontend eller en separat routningstjänst, via API-begäranden. I applikationer där detta behövs måste ElevenLabs Agents inte känna till att meddelanden skickas till andra tjänster.  

Det är till exempel ofta användbart att externa agenter har insyn i pågående röstaktivitet, så att de kan avgöra om användaren talar, hur länge och om de bör vidta någon åtgärd i förväg. Dessa insikter kan härledas direkt och användas genom att skicka bearbetade värden för röstaktivitetsdetektering (VAD) som tillhandahålls av ElevenLabs Agents som klienthändelser och tas emot via konversationens WebSocket. När klientapplikationen tar emot värden från ElevenLabs kan den vidarebefordra VAD-klienthändelser till den tillståndsbevarande proxyn utifrån applikationens krav och säkerställa att den godtyckliga sessionsidentifieraren ingår i meddelandet. Den tillståndsbevarande proxyn måste implementera mappningslogik för begäranden som optimalt identifierar den befintliga anslutningen för sessionen. 

Det här mönstret kan utökas för att hantera alla händelser från klienten, förutsatt att de kan uttryckas som ett JSON-block. Det är dock också användbart att exponera händelser som kommer från agenten själv. Ett vanligt exempel är livscykeln för verktygsanrop eller frågor till kunskapsbaser som representerar åtgärder i externa system. Dessa mekanismer är grundläggande för de agenter som företag bygger i dag.

När externa agenter integreras via ett anpassat LLM kringgås ElevenLabs funktioner för verktygsanrop och retrieval augmented generation (RAG) ofta till förmån för den externa agentens egen implementering. Därför ligger ansvaret för dessa komponenter helt hos leverantören av den externa agenten. Applikationer har ändå nytta av insyn i verktygsaktivitet, eftersom de då kan visa agentens framsteg och uppdatera slutanvändarupplevelsen därefter.

För att ge denna insyn skickar den externa agenten meddelanden varje gång verktyg anropas, både för begäranden och svar. Den tillståndsbevarande proxyn vidarebefordrar dessa meddelanden till klientapplikationer, som hanterar dem via en dedikerad meddelandekö. Detta återspeglar mekanismerna som används av ElevenLabs Agents klienthändelser och säkerställer att applikationer kan följa när agenten läser från eller ändrar ett externt system.

Diagram showing the message passing flow between some frontend application and the stateful proxy bypassing the elevenlabs agent.

Genom att använda dessa kärnkomponenter och aktivera dubbelriktad meddelandeförmedling mellan proxyn och klientapplikationen kan kunder alltså integrera externa agenter i ElevenLabs Agents och enbart använda röstorkestreringen vi erbjuder, samtidigt som de behåller kontrollen över alla delar av LLM-orkestreringen. 

Koppling till tillstånd

För att effektivt stödja komplexa externa agenter krävs en tydlig ansvarsfördelning mellan proxyn och agenten, särskilt när det gäller tillståndshantering. I den här modellen ansvarar proxyn för att upprätthålla en tabell över relevanta interaktioner, grupperade efter applikationens behov, och för att routa meddelanden mellan sig själv och agenten med logik som förblir tillståndslös. Den externa agenten bör i sin tur hantera och lagra all väsentlig intern och extern information som bidrar till det övergripande tillståndet.

Även om en mindre strikt uppdelning kan minska omarbetningen av en befintlig lösning ytterligare, ger en strikt gräns i allmänhet mer robusta och skalbara resultat när agentens uppgiftsuppsättning växer.

Framåt

I takt med att organisationer mognar i sin användning av röst- och icke-röstbaserade agenter förväntar vi oss att mönstren för den information dessa agenter behöver blir tydligare, vilket gör det möjligt att förenkla utvecklingen och ägarskapet av tjänsterna som beskrivs i det här inlägget. Under tiden fortsätter vi att bygga för de behov som redan har uppstått. Vårt Forward Deployed Engineering-team samarbetar nära med kunder för att omvandla dessa framväxande behov till konkreta produktfunktioner och se till att våra lösningar utvecklas i takt med verkliga driftsättningar.

Om du redan arbetar med en befintlig agent och vill aktivera röst med ElevenLabs Agents och samtidigt behålla kontrollen över din LLM-orkestrering, testa den här metoden och berätta vad du tycker! 

Skriven av

bald man with a beard smiling

Nicolas Bernier

Forward Deployed Engineer

Nicolas arbetar i Forward Deployed Engineering-teamet på ElevenLabs och samarbetar med kunder för att få deras agenter i produktion. Tidigare spenderade han fyra år på AWS med fokus på reglerade industrier och offentlig sektor.

Liknande artiklar

Skapa med AI-ljud av högsta kvalitet