Antes de construir con Claude

Decide si usar Claude para el chat de soporte

Aquí hay algunos indicadores clave de que deberías emplear un LLM como Claude para automatizar partes de tu proceso de atención al cliente:

Algunas consideraciones para elegir Claude sobre otros LLMs:

  • Priorizas la conversación natural y con matices: La sofisticada comprensión del lenguaje de Claude permite conversaciones más naturales y conscientes del contexto que se sienten más humanas que los chats con otros LLMs.
  • A menudo recibes consultas complejas y abiertas: Claude puede manejar una amplia gama de temas y consultas sin generar respuestas enlatadas o requerir una programación extensa de permutaciones de expresiones del usuario.
  • Necesitas soporte multilingüe escalable: Las capacidades multilingües de Claude le permiten mantener conversaciones en más de 200 idiomas sin necesidad de chatbots separados o procesos extensos de traducción para cada idioma soportado.

Define tu interacción de chat ideal

Esboza una interacción ideal con el cliente para definir cómo y cuándo esperas que el cliente interactúe con Claude. Este esquema ayudará a determinar los requisitos técnicos de tu solución.

Aquí hay un ejemplo de interacción de chat para soporte de seguro de automóvil:

  • Cliente: Inicia la experiencia de chat de soporte
    • Claude: Saluda cálidamente al cliente e inicia la conversación
  • Cliente: Pregunta sobre seguro para su nuevo coche eléctrico
    • Claude: Proporciona información relevante sobre la cobertura de vehículos eléctricos
  • Cliente: Hace preguntas relacionadas con necesidades únicas para seguros de vehículos eléctricos
    • Claude: Responde con respuestas precisas e informativas y proporciona enlaces a las fuentes
  • Cliente: Hace preguntas fuera de tema no relacionadas con seguros o coches
    • Claude: Aclara que no discute temas no relacionados y dirige al usuario de vuelta al seguro de automóvil
  • Cliente: Expresa interés en una cotización de seguro
    • Claude: Hace un conjunto de preguntas para determinar la cotización apropiada, adaptándose a sus respuestas
    • Claude: Envía una solicitud para usar la herramienta API de generación de cotizaciones junto con la información necesaria recopilada del usuario
    • Claude: Recibe la información de respuesta de la herramienta API, sintetiza la información en una respuesta natural y presenta la cotización proporcionada al usuario
  • Cliente: Hace preguntas de seguimiento
    • Claude: Responde a las preguntas de seguimiento según sea necesario
    • Claude: Guía al cliente hacia los siguientes pasos en el proceso de seguro y cierra la conversación
En el ejemplo real que escribas para tu propio caso de uso, podría resultarte útil escribir las palabras reales en esta interacción para que también puedas tener una idea del tono ideal, la longitud de respuesta y el nivel de detalle que quieres que Claude tenga.

Divide la interacción en tareas únicas

El chat de atención al cliente es una colección de múltiples tareas diferentes, desde responder preguntas hasta recuperar información y tomar acción sobre solicitudes, todo envuelto en una sola interacción con el cliente. Antes de comenzar a construir, desglosa tu interacción ideal con el cliente en cada tarea que quieres que Claude pueda realizar. Esto asegura que puedas indicar y evaluar a Claude para cada tarea, y te da una buena idea del rango de interacciones que necesitas tener en cuenta al escribir casos de prueba.

Los clientes a veces encuentran útil visualizar esto como un diagrama de flujo de interacción de posibles puntos de inflexión de conversación dependiendo de las solicitudes del usuario.

Aquí están las tareas clave asociadas con el ejemplo de interacción de seguro anterior:

  1. Saludo y orientación general

    • Saludar cálidamente al cliente e iniciar la conversación
    • Proporcionar información general sobre la empresa y la interacción
  2. Información del Producto

    • Proporcionar información sobre la cobertura de vehículos eléctricos
      Esto requerirá que Claude tenga la información necesaria en su contexto, y podría implicar que sea necesaria una integración RAG.
    • Responder preguntas relacionadas con necesidades únicas de seguro de vehículos eléctricos
    • Responder preguntas de seguimiento sobre la cotización o detalles del seguro
    • Ofrecer enlaces a fuentes cuando sea apropiado
  3. Gestión de la Conversación

    • Mantenerse en el tema (seguro de automóvil)
    • Redirigir preguntas fuera de tema de vuelta a temas relevantes
  4. Generación de Cotización

    • Hacer preguntas apropiadas para determinar la elegibilidad para la cotización
    • Adaptar preguntas basadas en las respuestas del cliente
    • Enviar la información recopilada a la API de generación de cotizaciones
    • Presentar la cotización proporcionada al cliente

Establece criterios de éxito

Trabaja con tu equipo de soporte para definir criterios de éxito claros y escribe evaluaciones detalladas con puntos de referencia y objetivos medibles.

Aquí hay criterios y puntos de referencia que pueden usarse para evaluar qué tan exitosamente Claude realiza las tareas definidas:

Aquí hay criterios y puntos de referencia que pueden usarse para evaluar el impacto empresarial de emplear a Claude para soporte:

Cómo implementar Claude como agente de servicio al cliente

Elige el modelo Claude adecuado

La elección del modelo depende de los compromisos entre costo, precisión y tiempo de respuesta.

Para el chat de atención al cliente, claude-opus-4-20250514 está bien adaptado para equilibrar inteligencia, latencia y costo. Sin embargo, para casos donde tienes un flujo de conversación con múltiples indicaciones incluyendo RAG, uso de herramientas y/o indicaciones de contexto largo, claude-3-haiku-20240307 puede ser más adecuado para optimizar la latencia.

Construye una indicación sólida

Usar Claude para atención al cliente requiere que Claude tenga suficiente dirección y contexto para responder apropiadamente, mientras tiene suficiente flexibilidad para manejar una amplia gama de consultas de clientes.

Comencemos escribiendo los elementos de una indicación sólida, comenzando con una indicación de sistema:

IDENTITY = """Eres Eva, una asistente de IA amigable y conocedora para Acme Insurance 
Company. Tu rol es dar la bienvenida cálidamente a los clientes y proporcionar información sobre 
las ofertas de seguros de Acme, que incluyen seguro de automóvil y seguro de 
automóvil eléctrico. También puedes ayudar a los clientes a obtener cotizaciones para sus necesidades de seguro."""
Aunque puedas sentirte tentado a poner toda tu información dentro de una indicación de sistema como una forma de separar las instrucciones de la conversación del usuario, Claude en realidad funciona mejor con la mayor parte del contenido de su indicación escrito dentro del primer turno del Usuario (con la única excepción siendo la indicación de rol). Lee más en Dando a Claude un rol con una indicación de sistema.

Es mejor desglosar las indicaciones complejas en subsecciones y escribir una parte a la vez. Para cada tarea, podrías encontrar mayor éxito siguiendo un proceso paso a paso para definir las partes de la indicación que Claude necesitaría para hacer bien la tarea. Para este ejemplo de soporte de seguro de automóvil, escribiremos por partes todas las partes para una indicación comenzando con la tarea de “Saludo y orientación general”. Esto también hace que la depuración de tu indicación sea más fácil ya que puedes ajustar más rápidamente partes individuales de la indicación general.

Pondremos todas estas piezas en un archivo llamado config.py.

STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme Auto Insurance: Tu Compañero de Confianza en la Carretera

Acerca de:
En Acme Insurance, entendemos que tu vehículo es más que solo un medio de transporte—es tu boleto para las aventuras de la vida. 
Desde 1985, hemos estado creando pólizas de seguro de automóvil que dan a los conductores la confianza para explorar, desplazarse y viajar con tranquilidad.
Ya sea que estés navegando por calles de la ciudad o embarcándote en viajes por carretera a través del país, Acme está ahí para protegerte a ti y a tu vehículo. 
Nuestras innovadoras pólizas de seguro de automóvil están diseñadas para adaptarse a tus necesidades únicas, cubriendo todo desde pequeños golpes hasta colisiones mayores.
Con el servicio al cliente galardonado de Acme y la rápida resolución de reclamaciones, puedes concentrarte en la alegría de conducir mientras nosotros nos encargamos del resto. 
No somos solo un proveedor de seguros—somos tu copiloto en los viajes de la vida.
Elige Acme Auto Insurance y experimenta la seguridad que viene con una cobertura superior y un cuidado genuino. Porque en Acme, no solo aseguramos tu coche—alimentamos tus aventuras en la carretera abierta.

Nota: También ofrecemos cobertura especializada para vehículos eléctricos, asegurando que conductores de todos los tipos de coches puedan beneficiarse de nuestra protección.

Acme Insurance ofrece los siguientes productos:
- Seguro de automóvil
- Seguro de automóvil eléctrico
- Seguro de vehículos de dos ruedas

Horario comercial: Lunes-Viernes, 9 AM - 5 PM EST
Número de servicio al cliente: 1-800-123-4567
</static_context>
"""

Luego haremos lo mismo para nuestra información de seguro de automóvil y seguro de automóvil eléctrico.

STATIC_CAR_INSURANCE="""
<static_context>
Cobertura de Seguro de Automóvil:
Las pólizas de seguro de automóvil de Acme típicamente cubren:
1. Cobertura de responsabilidad civil: Paga por lesiones corporales y daños a la propiedad que causes a otros.
2. Cobertura de colisión: Paga por daños a tu coche en un accidente.
3. Cobertura integral: Paga por daños a tu coche por incidentes no relacionados con colisiones.
4. Cobertura de pagos médicos: Paga por gastos médicos después de un accidente.
5. Cobertura de motorista sin seguro/con seguro insuficiente: Te protege si eres golpeado por un conductor con seguro insuficiente.

Las coberturas opcionales incluyen:
- Reembolso de coche de alquiler
- Asistencia en carretera
- Reemplazo de coche nuevo
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Seguro de Automóvil Eléctrico:
Nuestro seguro especializado de automóvil eléctrico va más allá de la cobertura tradicional de automóvil, 
ofreciendo protección adaptada para tu inversión de alta tecnología. Además de las coberturas estándar, ofrecemos:
- Salvaguardia de sistemas de batería costosos
- Cobertura de equipos de carga domésticos
- Adaptación al mundo en rápida evolución de los vehículos eléctricos

Ya sea que conduzcas un Rivian, Nissan Leaf, Chevrolet Bolt, 
o cualquier otro vehículo eléctrico, nuestros agentes conocedores están listos para crear una póliza 
que te dé la confianza para disfrutar cada milla impulsada por electrones.
</static_context>
"""

Ahora que tenemos nuestro contenido estático, agreguemos al menos 4-5 ejemplos de interacciones “buenas” para guiar las respuestas de Claude. Estos ejemplos deben ser representativos de tu interacción ideal con el cliente y pueden incluir barandillas, llamadas a herramientas, etc.

EXAMPLES="""
Aquí hay algunos ejemplos de cómo puedes interactuar con los clientes:

<example 1>
H: Hola, ¿ofrecen seguro comercial para pequeñas empresas?

A: ¡Ah! Desafortunadamente, no ofrecemos seguro comercial en este momento. 
Sin embargo, proporcionamos una gama de productos de seguro personal incluyendo seguro de automóvil y seguro de automóvil eléctrico. 
¿Te gustaría saber más sobre estas ofertas?
</example 1>

<example 2>
H: Hola, ¿cuáles son sus horarios comerciales?

A: Nuestros horarios comerciales son de lunes a viernes, de 9 AM a 5 PM EST. 
Si tienes alguna pregunta o necesitas asistencia, no dudes en contactarnos durante esos horarios. 
¿En qué más puedo ayudarte hoy?
</example 2>

<example 3>
H: Estoy buscando seguro de automóvil. ¿Qué ofrece Acme?

A: ¡Gran elección! Las pólizas de seguro de automóvil de Acme típicamente incluyen:
- Cobertura de responsabilidad civil: Te protege si eres culpable en un accidente
- Cobertura de colisión: Paga por daños a tu coche en un accidente
- Cobertura integral: Cubre incidentes no relacionados con colisiones como robo o vandalismo
- Cobertura de pagos médicos: Paga por gastos médicos después de un accidente
- Cobertura de motorista sin seguro/con seguro insuficiente: Te protege de conductores con seguro insuficiente

También ofrecemos coberturas opcionales como reembolso de coche de alquiler, asistencia en carretera y reemplazo de coche nuevo. 
¿Te gustaría más detalles sobre alguna de estas coberturas, o tienes preguntas específicas sobre asegurar tu vehículo?
</example 3>

<example 4>
H: Me gustaría saber sobre su seguro de automóvil eléctrico.

A: ¡Ciertamente! Nuestro seguro de automóvil eléctrico está especialmente diseñado para satisfacer las necesidades únicas de los propietarios de vehículos eléctricos. 
Además de todas las coberturas estándar que ofrecemos para coches regulares, nuestras pólizas para coches eléctricos incluyen:

- Cobertura de batería: Protección contra daños o degradación del costoso sistema de batería de tu vehículo
- Paquete tecnológico: Cubre reparaciones o reemplazo de electrónica avanzada y sistemas informáticos a bordo
- Cobertura de estación de carga: Protege tanto el equipo de carga doméstico como portátil
- Protección de ciberseguridad: Cobertura contra hackeo o amenazas digitales
- Asistencia en carretera especializada: Incluye remolque con plataforma para proteger la parte inferior del vehículo

Cubrimos una amplia gama de vehículos eléctricos, incluyendo modelos populares de Tesla, Rivian, Nissan, Chevrolet y más. 
¿Hay algún vehículo eléctrico específico que estés buscando asegurar, o te gustaría más detalles sobre alguna de estas coberturas?
</example 4>

<example 5>
H: Me gustaría obtener una cotización para mi seguro de automóvil.

A: ¡Ciertamente! Estaré encantada de ayudarte a obtener una cotización para tu seguro de automóvil. 
Para proporcionarte una cotización precisa, necesitaré recopilar alguna información sobre tu vehículo y el conductor principal. 
Comencemos con lo básico:

1. ¿Cuál es la marca y modelo de tu vehículo?
2. ¿En qué año fue fabricado?
3. ¿Aproximadamente cuántas millas has conducido?
4. ¿Cuál es la edad del conductor principal?

Una vez que proporciones esta información, usaré nuestra herramienta de cotización para generar una cotización de seguro personalizada para ti.
</example 5>
"""

También querrás incluir cualquier instrucción importante que describa lo que debe y no debe hacer Claude al interactuar con el cliente. Esto puede extraerse de las barandillas de la marca o políticas de soporte.

ADDITIONAL_GUARDRAILS = """Por favor, adhiérete a las siguientes barandillas:
1. Solo proporciona información sobre tipos de seguros listados en nuestras ofertas.
2. Si te preguntan sobre un tipo de seguro que no ofrecemos, indica cortésmente 
que no proporcionamos ese servicio.
3. No especules sobre futuras ofertas de productos o planes de la empresa.
4. No hagas promesas ni entres en acuerdos que no estés autorizado a hacer.
Solo proporcionas información y orientación.
5. No menciones productos o servicios de ningún competidor.
"""

Ahora combinemos todas estas secciones en una sola cadena para usar como nuestra indicación.

TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Añade capacidades dinámicas y de agente con uso de herramientas

Claude es capaz de realizar acciones y recuperar información dinámicamente usando la funcionalidad de uso de herramientas del lado del cliente. Comienza listando cualquier herramienta externa o APIs que la indicación debería utilizar.

Para este ejemplo, comenzaremos con una herramienta para calcular la cotización.

Como recordatorio, esta herramienta no realizará el cálculo real, solo señalará a la aplicación que se debe usar una herramienta con los argumentos especificados.

Ejemplo de calculadora de cotización de seguro:

TOOLS = [{
  "name": "get_quote",
  "description": "Calcula la cotización de seguro basada en la entrada del usuario. El valor devuelto es la prima mensual.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "La marca del vehículo."},
      "model": {"type": "string", "description": "El modelo del vehículo."},
      "year": {"type": "integer", "description": "El año en que se fabricó el vehículo."},
      "mileage": {"type": "integer", "description": "El kilometraje del vehículo."},
      "driver_age": {"type": "integer", "description": "La edad del conductor principal."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Devuelve la prima mensual en USD"""
    # Puedes llamar a un endpoint http o a una base de datos para obtener la cotización.
    # Aquí, simulamos un retraso de 1 segundo y devolvemos una cotización fija de 100.
    time.sleep(1)
    return 100

Despliega tus indicaciones

Es difícil saber qué tan bien funciona tu indicación sin desplegarla en un entorno de producción de prueba y ejecutar evaluaciones, así que construyamos una pequeña aplicación usando nuestra indicación, el SDK de Anthropic y streamlit para una interfaz de usuario.

En un archivo llamado chatbot.py, comienza configurando la clase ChatBot, que encapsulará las interacciones con el SDK de Anthropic.

La clase debe tener dos métodos principales: generate_message y process_user_input.

from anthropic import Anthropic
from config import IDENTITY, TOOLS, MODEL, get_quote
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
   def __init__(self, session_state):
       self.anthropic = Anthropic()
       self.session_state = session_state

   def generate_message(
       self,
       messages,
       max_tokens,
   ):
       try:
           response = self.anthropic.messages.create(
               model=MODEL,
               system=IDENTITY,
               max_tokens=max_tokens,
               messages=messages,
               tools=TOOLS,
           )
           return response
       except Exception as e:
           return {"error": str(e)}

   def process_user_input(self, user_input):
       self.session_state.messages.append({"role": "user", "content": user_input})

       response_message = self.generate_message(
           messages=self.session_state.messages,
           max_tokens=2048,
       )

       if "error" in response_message:
           return f"Ocurrió un error: {response_message['error']}"

       if response_message.content[-1].type == "tool_use":
           tool_use = response_message.content[-1]
           func_name = tool_use.name
           func_params = tool_use.input
           tool_use_id = tool_use.id

           result = self.handle_tool_use(func_name, func_params)
           self.session_state.messages.append(
               {"role": "assistant", "content": response_message.content}
           )
           self.session_state.messages.append({
               "role": "user",
               "content": [{
                   "type": "tool_result",
                   "tool_use_id": tool_use_id,
                   "content": f"{result}",
               }],
           })

           follow_up_response = self.generate_message(
               messages=self.session_state.messages,
               max_tokens=2048,
           )

           if "error" in follow_up_response:
               return f"Ocurrió un error: {follow_up_response['error']}"

           response_text = follow_up_response.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       elif response_message.content[0].type == "text":
           response_text = response_message.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       else:
           raise Exception("Ocurrió un error: Tipo de respuesta inesperado")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Cotización generada: ${premium:.2f} por mes"
      
       raise Exception("Se usó una herramienta inesperada")

Construye tu interfaz de usuario

Prueba desplegar este código con Streamlit usando un método principal. Esta función main() configura una interfaz de chat basada en Streamlit.

Haremos esto en un archivo llamado app.py

import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("Chatea con Eva, la Asistente de Acme Insurance Company🤖")

   if "messages" not in st.session_state:
       st.session_state.messages = [
           {'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
           {'role': "assistant", "content": "Entendido"},
       ]

   chatbot = ChatBot(st.session_state)

   # Muestra mensajes de usuario y asistente saltando los dos primeros
   for message in st.session_state.messages[2:]:
       # ignora bloques de uso de herramientas
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Escribe tu mensaje aquí..."):
       st.chat_message("user").markdown(user_msg)

       with st.chat_message("assistant"):
           with st.spinner("Eva está pensando..."):
               response_placeholder = st.empty()
               full_response = chatbot.process_user_input(user_msg)
               response_placeholder.markdown(full_response)

if __name__ == "__main__":
   main()

Ejecuta el programa con:

streamlit run app.py

Evalúa tus indicaciones

La creación de indicaciones a menudo requiere pruebas y optimización para que esté lista para producción. Para determinar la preparación de tu solución, evalúa el rendimiento del chatbot usando un proceso sistemático que combine métodos cuantitativos y cualitativos. Crear una evaluación empírica sólida basada en tus criterios de éxito definidos te permitirá optimizar tus indicaciones.

La Consola de Anthropic ahora cuenta con una herramienta de Evaluación que te permite probar tus indicaciones bajo varios escenarios.

Mejora el rendimiento

En escenarios complejos, puede ser útil considerar estrategias adicionales para mejorar el rendimiento más allá de las técnicas estándar de ingeniería de indicaciones y estrategias de implementación de barandillas. Aquí hay algunos escenarios comunes:

Reduce la latencia de contexto largo con RAG

Cuando se trata de grandes cantidades de contexto estático y dinámico, incluir toda la información en la indicación puede llevar a altos costos, tiempos de respuesta más lentos y alcanzar límites de ventana de contexto. En este escenario, implementar técnicas de Generación Aumentada por Recuperación (RAG) puede mejorar significativamente el rendimiento y la eficiencia.

Al usar modelos de incrustación como Voyage para convertir información en representaciones vectoriales, puedes crear un sistema más escalable y receptivo. Este enfoque permite la recuperación dinámica de información relevante basada en la consulta actual, en lugar de incluir todo el contexto posible en cada indicación.

Se ha demostrado que implementar RAG para casos de uso de soporte receta RAG aumenta la precisión, reduce los tiempos de respuesta y reduce los costos de API en sistemas con requisitos extensos de contexto.

Integra datos en tiempo real con uso de herramientas

Cuando se trata de consultas que requieren información en tiempo real, como saldos de cuenta o detalles de pólizas, los enfoques RAG basados en incrustaciones no son suficientes. En su lugar, puedes aprovechar el uso de herramientas para mejorar significativamente la capacidad de tu chatbot para proporcionar respuestas precisas en tiempo real. Por ejemplo, puedes usar el uso de herramientas para buscar información del cliente, recuperar detalles de pedidos y cancelar pedidos en nombre del cliente.

Este enfoque, descrito en nuestra receta de uso de herramientas: agente de servicio al cliente, te permite integrar perfectamente datos en vivo en las respuestas de Claude y proporcionar una experiencia de cliente más personalizada y eficiente.

Fortalece las barandillas de entrada y salida

Al desplegar un chatbot, especialmente en escenarios de servicio al cliente, es crucial prevenir riesgos asociados con el mal uso, consultas fuera de alcance y respuestas inapropiadas. Aunque Claude es inherentemente resistente a tales escenarios, aquí hay pasos adicionales para fortalecer las barandillas de tu chatbot:

  • Reduce la alucinación: Implementa mecanismos de verificación de hechos y citas para fundamentar las respuestas en información proporcionada.
  • Verifica la información: Verifica que las respuestas del agente se alineen con las políticas de tu empresa y hechos conocidos.
  • Evita compromisos contractuales: Asegúrate de que el agente no haga promesas o entre en acuerdos que no esté autorizado a hacer.
  • Mitiga los jailbreaks: Usa métodos como pantallas de inofensividad y validación de entrada para evitar que los usuarios exploten vulnerabilidades del modelo, con el objetivo de generar contenido inapropiado.
  • Evita mencionar competidores: Implementa un filtro de mención de competidores para mantener el enfoque en la marca y no mencionar productos o servicios de ningún competidor.
  • Mantén a Claude en personaje: Evita que Claude cambie su estilo de contexto, incluso durante interacciones largas y complejas.
  • Elimina Información Personalmente Identificable (PII): A menos que se requiera explícitamente y esté autorizado, elimina cualquier PII de las respuestas.

Reduce el tiempo de respuesta percibido con streaming

Cuando se trata de respuestas potencialmente largas, implementar streaming puede mejorar significativamente el compromiso y la satisfacción del usuario. En este escenario, los usuarios reciben la respuesta progresivamente en lugar de esperar a que se genere toda la respuesta.

Así es como implementar streaming:

  1. Usa la API de Streaming de Anthropic para soportar respuestas en streaming.
  2. Configura tu frontend para manejar fragmentos entrantes de texto.
  3. Muestra cada fragmento a medida que llega, simulando escritura en tiempo real.
  4. Implementa un mecanismo para guardar la respuesta completa, permitiendo a los usuarios verla si navegan fuera y regresan.

En algunos casos, el streaming permite el uso de modelos más avanzados con latencias base más altas, ya que la visualización progresiva mitiga el impacto de tiempos de procesamiento más largos.

Escala tu Chatbot

A medida que crece la complejidad de tu Chatbot, la arquitectura de tu aplicación puede evolucionar para adaptarse. Antes de agregar más capas a tu arquitectura, considera las siguientes opciones menos exhaustivas:

  • Asegúrate de que estás aprovechando al máximo tus indicaciones y optimizando a través de la ingeniería de indicaciones. Usa nuestras guías de ingeniería de indicaciones para escribir las indicaciones más efectivas.
  • Agrega herramientas adicionales a la indicación (que pueden incluir cadenas de indicaciones) y ve si puedes lograr la funcionalidad requerida.

Si tu Chatbot maneja tareas increíblemente variadas, podrías considerar agregar un clasificador de intención separado para enrutar la consulta inicial del cliente. Para la aplicación existente, esto implicaría crear un árbol de decisión que enrutaría las consultas de los clientes a través del clasificador y luego a conversaciones especializadas (con su propio conjunto de herramientas e indicaciones de sistema). Nota, este método requiere una llamada adicional a Claude que puede aumentar la latencia.

Integra Claude en tu flujo de trabajo de soporte

Mientras que nuestros ejemplos se han centrado en funciones de Python que se pueden llamar dentro de un entorno Streamlit, desplegar Claude para un chatbot de soporte en tiempo real requiere un servicio API.

Así es como puedes abordar esto:

  1. Crea un envoltorio API: Desarrolla un envoltorio API simple alrededor de tu función de clasificación. Por ejemplo, puedes usar Flask API o Fast API para envolver tu código en un Servicio HTTP. Tu servicio HTTP podría aceptar la entrada del usuario y devolver la respuesta del Asistente en su totalidad. Por lo tanto, tu servicio podría tener las siguientes características:

    • Eventos enviados por el servidor (SSE): SSE permite la transmisión en tiempo real de respuestas desde el servidor al cliente. Esto es crucial para proporcionar una experiencia suave e interactiva cuando se trabaja con LLMs.
    • Almacenamiento en caché: Implementar almacenamiento en caché puede mejorar significativamente los tiempos de respuesta y reducir llamadas API innecesarias.
    • Retención de contexto: Mantener el contexto cuando un usuario navega fuera y regresa es importante para la continuidad en las conversaciones.
  2. Construye una interfaz web: Implementa una UI web amigable para interactuar con el agente impulsado por Claude.