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 blir allt bättre på att hantera komplexa uppgifter och arbeta med företagets olika verktyg. 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 medan 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 integrering. Dessa mekanismer gör att kunder kan använda ElevenLabs röstorkestrering i toppklass och samtidigt behålla fullt ägarskap ö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 använda sin egen anpassade LLM. När kunder använder en mer komplex orkestrerare (agenter) för att besvara genereringsbegäranden bakom den anpassade LLM:en måste de säkerställa att den stöder antingen OpenAI:s Chat Completions- eller Responses API. Lyckligtvis stöds denna API-formateringsspecifikation enkelt av de flesta större 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

De data som en agent behöver följa för att effektivt navigera i sin miljö är per definition mycket 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 transkriptionen i realtid, till exempel upptäckta avsikter, entiteter eller känsloläge.
  • Resonemangsspår, inklusive mellanliggande tankar, hypoteser och tidigare försök att skapa en lösning.
  • Konfigurations- och driftparametrar, till exempel aktiva mål, driftläge och 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 agenten interagerar med, till exempel deras aktuella mål, tillgänglighet eller behörigheter.
  • Verktyg och kunskapsbaser, till exempel API:er, databaser eller integreringar som kan påverka agentens förmåga 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ösningskomponenter

Översikt 

I det här avsnittet går vi igenom de arkitekturkomponenter och implementeringsdetaljer som krävs för att integrera komplexa externa agenter framgångsrikt. Kärnan i metoden är möjligheten att proxyförmedla 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 konversationsåsidosättningar när samtalet inleds. Då kan identifieraren flöda genom ElevenLabs Agent från användaren 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åndsfulla proxyn bakom den anpassade LLM:en. Den här tjänsten, som vanligtvis inte finns, låter oss mappa enskilda genereringsbegäranden till godtyckliga identifierare som representerar anslutningar till den externa agenten. De externa agentutvecklarna ansvarar för implementeringen av denna tjänst. I sin enklaste form hanterar proxyn anslutningar som representeras av unika identifierare och mappas till ElevenLabs-konversationer eller samtals-SID:er (för telefoni). Mer avancerade versioner kan däremot införa hierarkier 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 upprätthåller proxyn ytterligare identifierare som går utöver en enskild begäran kopplad till en enda efterföljande session. I stället för att varje identifierare endast representerar en konversation eller samtals-SID kan proxyn koppla en identifierare till flera relaterade interaktioner. Det gör att systemet kan följa kundresor mellan kanaler, återanvända historisk kontext och samordna flera interaktioner samtidigt. En enda mappning kan till exempel samla 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 baserat på enkla regler och samtidigt bevara ett enhetligt tillstånd bakom den anpassade LLM:en. Det möjliggör mer flexibla och varaktiga interaktioner i flera steg, hanterade av den externa agenten.

Meddelandeförmedling

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

Det är till exempel ofta användbart för externa agenter att ha 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 poäng för röstaktivitetsdetektering (VAD) från ElevenLabs Agents som klienthändelser som tas emot via konversationens WebSocket. När klientapplikationen tar emot poäng från ElevenLabs kan den vidarebefordra VAD-klienthändelser till den tillståndsfulla proxyn utifrån applikationens behov och se till att meddelandet innehåller den godtyckliga sessionsidentifieraren. Den tillståndsfulla proxyn måste implementera logik för begärandemappning som optimalt identifierar den befintliga anslutningen för sessionen. 

Mönstret kan utökas för att hantera vilken händelse som helst från klienten, förutsatt att den 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 kunskapsbasfrågor 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 en anpassad 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 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åndsfulla proxyn vidarebefordrar dessa meddelanden till klientapplikationer, som hanterar dem via en separat meddelandekö. Detta speglar mekanismerna som används för ElevenLabs Agents klienthändelser och gör att applikationer kan spåra 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 som tjänsten erbjuder, samtidigt som de behåller ägarskapet ö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 denna modell 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 tydlig gräns vanligtvis mer robusta och skalbara resultat när agentens uppgiftsuppsättning växer.

Framåt

När organisationer mognar i sitt användande av röstaktiverade och icke-röstaktiverade agenter förväntar vi oss att mönster för den information som dessa agenter behöver blir tydligare. Då kan vi förenkla utvecklingen och ägarskapet av de tjänster som beskrivs i det här inlägget. Under tiden fortsätter vi att bygga för de krav som redan har uppstått. Vårt Forward Deployed Engineering-team samarbetar nära med kunder för att omvandla dessa nya 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 samtidigt som du behåller ägarskapet över din LLM-orkestrering kan du testa den här metoden och berätta vad du tycker! 

Liknande artiklar

Skapa med AI-ljud av högsta kvalitet