Athrun Data Intelligence


Este caso de uso inicial fue un gran éxito, pero a medida que nuestra lista de clientes creció, también lo hizo la cantidad de tickets de soporte: period hora de desarrollar una integración más profunda con Thena, nuestro sistema de tickets de soporte, y armar un canal integrado desde el ticket hasta el TAM.

Fase 2: creación de una aplicación de respuesta a tickets de soporte impulsada por LLM

Obtener respuestas rápidas a las preguntas de kapa.ai fue genial, pero nuestros TAM todavía copiaban manualmente las preguntas de los clientes al chatbot de Kapa. Además, los TAM todavía tenían que recuperar manualmente información importante sobre los clientes, como su tipo de plan, la cantidad de tickets de soporte recientes, and so forth.

En la segunda fase del proyecto teníamos dos objetivos:

  • Automatizar el proceso de preguntas y respuestas como una canalización
  • Enriquezca las respuestas con detalles útiles sobre el cliente.

Así es como lo construimos:

Paso 1: Interacción con el cliente

Uno de nuestros clientes plantea una pregunta en nuestro canal compartido de Slack. Puede preguntar algo como «¿Cómo configuro un nuevo flujo de datos usando su API?» o «¿Por qué tarda tanto la sincronización de mis datos?». Estas preguntas pueden ir desde simples instrucciones de configuración hasta problemas más técnicos.

Paso 2: Creación del ticket

Tan pronto como su pregunta llega a Slack, Thena, nuestro sistema de atención al cliente, crea automáticamente un ticket de soporte basado en su consulta.

Paso 3: Proceso de ingesta y enriquecimiento de datos

Una vez que se crea el ticket en Thena, RudderStack interviene. Recogemos el ticket a través de un Fuente del webhook(un método que permite la transferencia de datos en tiempo actual entre sistemas) y enriquecer los datos haciendo ping a dos API clave:

API de activación:Utilizamos RudderStack Perfiles para crear y gestionar nuestros cliente 360 Datos. La API de activación de RudderStack pone todos esos datos a disposición en tiempo actual, a través de la API. Esto nos permite usar fácilmente las transformaciones para hacer ping a la API, buscar un cliente, obtener detalles relevantes y agregarlos a la carga útil. Aquí hay un ejemplo de código de la transformación:

async operate getActivationAPIResponse (channelName) {

const BEARER_TOKEN = "123abc";

const BASE_URL = 'https://profiles.rudderstack.com/v1/activation'

const REDIS_DESTINATION_ID = "123abc"

let res = await fetch(`${BASE_URL}`, {

technique: "POST",

headers: {

"Content material-Kind": "software/json",

"Authorization": `Bearer ${BEARER_TOKEN}`

},

physique: JSON.stringify({

"entity": "account",

"destinationId": REDIS_DESTINATION_ID,

"id": {

"kind": "slack_channel_name",

"worth": channelName

}

})

})

res = res.information("PROFILES:ACCOUNT_FEATURE_VIEW_SLACK_CHANNEL_NAME")

if (res) {

const right this moment = new Date();

const inputDate = new Date(res.SF_CUSTOMER_SIGNED_DATE);

const timeDifference = right this moment - inputDate;

const daysDifference = Math.flooring(timeDifference / (1000 * 60 * 60 * 24));

const returnResults = {

customer_name: res.SF_ACCOUNT_NAME,

product_health_score: res.PRODUCT_HEALTH_SCORE,

plan_type: res.SF_PLAN_TYPE,

arr: res.SF_ARR,

tam: res.SF_TAM,

csm: res.SF_CSM,

signed_date: res.SF_CUSTOMER_SIGNED_DATE,

days_since_signed: daysDifference,

tickets_opened_last_10_days: res.THENA_ALL_TICKETS_CREATED_LAST_10_DAYS,

tickets_opened_last_90_days: res.THENA_ALL_TICKETS_CREATED_LAST_90_DAYS,

tickets_opened_currently: res.THENA_CURRENTLY_OPEN_TICKETS

API de kapa.ai: A continuación, pasamos la información del cliente y la pregunta a la API de kapa.ai para generar una respuesta. A continuación, se muestra un ejemplo de código de la transformación:

async operate getKapaResponse (question, activationAPI, senderName) {

const API_TOKEN = "123abc";

const BASE_URL = "https://api.kapa.ai"

let activationAPIContextualInformation

if (activationAPI) {

activationAPIContextualInformation = `This query was despatched by a person of RudderStack named ${senderName}. They're a member of the RudderStack buyer, ${activationAPI.customer_name}. Listed below are some particulars which may be useful when producing a response for this query. ${activationAPI.customer_name} signed up for RudderStack ${activationAPI.days_since_signed} days in the past, their contract is $${activationAPI.arr} yearly, and they're a ${activationAPI.plan_type} buyer. They've opened ${activationAPI.tickets_opened_last_90_days} tickets within the final 90 days, ${activationAPI.tickets_opened_last_10_days} tickets within the final 10 days, and at present have ${activationAPI.tickets_opened_currently} tickets open. They've a product well being rating of ${activationAPI.product_health_score} which is out of a complete of 5 factors. ${activationAPI.csm} is the Buyer Success Supervisor on The RudderStack aspect for this account and ${activationAPI.tam} is the Techincal Account Supervisor. `

}

const res = await fetch(`${BASE_URL}/question/v1/chat/customized`, {

technique: "POST",

headers: {

"Content material-Kind": "software/json",

"X-API-TOKEN": API_TOKEN

},

physique: JSON.stringify({

"persist_answer": false,

"use_retrieval": true,

"messages": (

{

"position": "system",

"content material": "You're a technical assist engineer for RudderStack and your job is to assist technical prospects with their questions in regards to the RudderStack product. The correspondence is thru slack, so that you might be professionally casual along with your responses in addition to technical by nature."

},

{

"position": "context"

},

{

"position": "person",

"content material": `You can be receiving a query from a technical RudderStack buyer. Please make use of the related context above when answering the query. Please format a really technical and detailed slack message that can present the reply to the shopper. If a query is just too imprecise, or a solution to the query can't be discovered, give you options of clarifying questions {that a} RudderStack assist engineer ought to ask the RudderStack buyer in order that the assist engineer can get extra readability from the shopper. Lastly, should you embody any hyperlinks, please format them for slack markdown format which is and don't embody the usual markdown format which is (some show textual content)(someurl). For bolding phrases, solely use one asterix on either side and never two, for instance simply *hello there* and never **hello there**`

},

{

"position": "person",

"content material": activationAPIContextualInformation || `This query was despatched by a person of RudderStack named ${senderName}. No extra buyer context is obtainable`

},

{

"position": "question",

"content material": question

}

)

})

})

Paso 4: Enrutamiento de la respuesta enriquecida a los TAM en Slack

En este punto del proceso, la carga útil ha pasado por la transformación de enriquecimiento y contiene tanto el contexto del cliente como la respuesta a la pregunta del cliente. El último paso es enviar la carga útil enriquecida de vuelta a Slack. Usamos un destino de webhook de RudderStack para enviar el mensaje directamente al TAM asignado a la cuenta.

El TAM primero proporciona una revisión humana en el circuito de la respuesta técnica para mitigar las alucinaciones (los LLM son sorprendentes, pero no perfectos, y la precisión es elementary para las preguntas sobre la cadena de datos de producción).

Los TAM también revisan el contexto del cliente para detectar situaciones que puedan requerir más atención. Por ejemplo, si un cliente tiene una puntuación baja en el estado del producto y tiene varios tickets de soporte abiertos recientemente, el TAM podría querer contactar al CSM sobre la cuenta y hacerle saber que debe programar una reunión de management.

50% más de eficiencia en tiempos de respuesta TAM

Esta aplicación interna de CS ha hecho que nuestros TAM sean un 50 % más eficientes a la hora de responder a las preguntas técnicas de nuestros clientes, lo que supone una mejora drástica. De hecho, este flujo de trabajo de Kapa ha automatizado aproximadamente el 70 % de las respuestas a nuestras consultas más habituales.

Con un LLM manejando la carga de trabajo base, nuestros TAM tienen mucho más ancho de banda para brindar un valor más profundo a nuestros clientes, solucionando problemas más complejos y ayudándolos a implementar nuevos casos de uso.

Cree sus propias aplicaciones LLM con RudderStack

Si está interesado en crear un caso de uso related basado en LLM con los datos de sus clientes, por favor extender la manoNos encantaría conocer su caso de uso y compartir más sobre lo que estamos haciendo.

Tenemos más aplicaciones LLM en proceso, así que Síguenos en LinkedIn para recibir actualizaciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *