IBM VEST Workshops

Integración de watsonx Assistant con los modelos de la fundación watsonx.ai

La extensibilidad del nuevo watsonx Assistant proporciona una forma sencilla de realizar una integración entre un flujo de diálogo y los servicios de inferencia de IA generativa en watsonx.ai. Esta integración aporta funciones de IA generativa directamente a watsonx Assistant. Este ejercicio práctico mostrará cómo crear la integración y utilizarla en un caso de uso sencillo. Está fuera del alcance de esta guía proporcionar una introducción a todas las características de watsonx Assistant. Para ello, consulta la Documentación o los Laboratorios de VEST watsonx Assistant.

Requisitos previos

  • Instancia de watsonx Assistant en IBM Cloud - puede ser cualquier plan de servicio, incluido lite
  • Acceso a un proyecto watsonx.ai

Primeros pasos

Obtener la definición OpenAPI del endpoint de generación watsonx.ai

Antes de poder añadir la integración para watsonx.ai a un asistente virtual watsonx Assistant, es necesario descargar la definición OpenAPI para el servicio de inferencia de modelos de la fundación watsonx.ai. Hay un archivo de definición de ejemplo disponible en el repositorio GitHub del kit de herramientas de Assistant. Para este laboratorio, utilizarás una versión modificada con la adición de soporte para el parámetro decode_method de la api. Descargue esta versión del archivo watsonx-openapi.json en su estación de trabajo.

Añadir un asistente virtual vacío a la instancia de watsonx Assistant

Para la experimentación inicial con la integración, utilice un nuevo asistente virtual. Si tienes una instancia de servicio watsonx Assistant recién creada, no tendrá ningún asistente definido. Crea uno utilizando el asistente Crear Asistente utilizando un nombre de Watsonx integration y seleccionando web como ubicación de despliegue. Los valores que proporciones en las otras partes del asistente no importarán mucho. Para ver un ejemplo paso a paso de cómo crear un asistente web, consulte el laboratorio VEST watsonx Assistant 101 hasta el punto en el que ve la página de inicio del asistente. Si ya tienes otros asistentes definidos en tu instancia, añade uno siguiendo la documentación

Creación de una clave API de watsonx.ai

Dependiendo del entorno que esté utilizando o si está trabajando en un taller, es posible que ya se le haya proporcionado una clave API para que la utilice; pregunte a su instructor o revise la información de su entorno para determinar si se le ha proporcionado una clave API.

De lo contrario, siga las instrucciones que se indican a continuación para crear una clave de API en su propia cuenta de IBM Cloud.

Si has creado previamente una clave API para llamar a watsonx.ai desde un bloc de notas o simplemente desde el punto final REST con curl, puedes saltarte estos pasos y reutilizar esa clave API. De lo contrario, continúa.

  1. Inicia sesión en watsonx. ai y asegúrate de que está seleccionada la misma cuenta que la instancia de aprendizaje automático de watson para tu proyecto watsonx.ai.

  2. Para generar una clave de API desde su cuenta de usuario de IBM Cloud, vaya a Gestionar acceso y usuarios - Claves de API y haga clic en Crear. En la ventana emergente, proporcione un nombre como watsonx-apikey y una breve descripción y, a continuación, haga clic en Crear

    create api key
  3. Haga inmediatamente una copia de la clave API y guárdela en una caja fuerte segura (como 1Password, etc.), ya que no habrá forma de recuperarla de nuevo.

Obtención del identificador del proyecto watsonx.ai

  1. En la página watsonx.ai, seleccione el menú desplegable de 4 barras de la izquierda, expanda Proyectos y haga clic en Ver todos los proyectos.

  2. En la lista, seleccione el proyecto que utiliza para la integración.

  3. Haga clic en la pestaña Gestionar y compruebe que General está seleccionado. Copie el ID del proyecto en un lugar al que pueda acceder más tarde. Esto no es sensible como la clave API por lo que puede ser en el bloc de notas o algo equivalente.

    copy project id

Añadir la extensión personalizada para watsonx.ai al catálogo de integraciones

  1. Vuelva a la pestaña de su navegador con el asistente que ha creado. En el panel de navegación izquierdo del asistente, vaya a la sección inferior y haga clic en Integraciones

  2. Desplácese hasta la sección Extensiones y haga clic en el botón Crear extensión personalizada:

    build custom extension
  3. Revise la guía de inicio y haga clic en Siguiente

  4. En la pestaña de información básica, nombre la extensión watsonx y proporcione una descripción opcional. Haz clic en Siguiente.

  5. Arrastre y suelte o utilice el explorador de archivos para seleccionar el archivo watsonx-openapi.json y, a continuación, haga clic en Siguiente.

    load watsonx-openapi.json
  6. Revise la información mostrada y haga clic en Finalizar, ahora el catálogo de integración muestra la integración

    watsonx integration in catalog
  7. Haga clic en Añadir en la esquina inferior derecha del nuevo mosaico de integración, confirme Añadir cuando se le solicite.

  8. Revise la información para empezar y haga clic en Siguiente

  9. En el panel Autenticación, seleccione Oauth 2.0, introduzca la clave API que creó anteriormente, mantenga el resto de valores predeterminados y haga clic en Siguiente.

    set authentication
  10. En la última página revise los parámetros de la petición POST y los valores de la respuesta. El asistente puede establecer parámetros en la solicitud antes de llamar a la extensión y analizará la respuesta para mostrar al usuario la salida. Haga clic en Finalizar y, a continuación, en Cerrar si no se le devuelve a la sección Extensiones del panel Integraciones.

Enhorabuena, ya tienes una forma de hacer una integración funcional desde un Action in assistant con watsonx generative AI endpoint.

Cree su acción

Ahora es el momento de crear tu acción y hacer que utilice la integración con watsonx. Para empezar, crearás una acción que utilice ai generativa para redactar un mensaje de marketing a partir de tu prompt.

  1. En la pestaña del navegador con watsonx Assistant y haga clic en Acciones en la parte superior izquierda.

  2. En el panel principal, haga clic en Crear acción

  3. Seleccione Empezar de cero

  4. Para lo que dice el cliente introduzca Marketing Message y pulse Guardar

    create intent
  5. Haga clic en el icono del lápiz para establecer un título para el paso. Utilice Prompt for a prompt como título.

  6. Para lo que dice el asistente, puedes hacer que sea un mensaje corto o ser más prescriptivo. Nota: los seres humanos, al igual que los modelos generativos de IA, a menudo pueden hacerlo mejor cuando las peticiones son específicas. Por ejemplo:

    Please provide a prompt for the model to use to create the marketing message. Type as much as you like and include lists of details for me to use with the model.
    text
    define step 1

    Expanda Define cutsomer response y especifique que el asistente esperará una respuesta del usuario como entrada de Texto libre. Cuando haga clic en Texto Libre, la Interfaz de Usuario mostrará User enters free text libre debajo del panel Asistente Assistant says. Cuando esto se muestre, haga clic en Nuevo Paso para configurar la siguiente parte de la Acción.

  7. Nombre el siguiente paso Call watsonx.ai endpoint haciendo clic en el icono del lápiz (editar). En la sección Y entonces, seleccione Usar una extensión

    use extension
  8. Para la extensión a utilizar, seleccione watsonx. A continuación, seleccione la operación Generation para mostrar los parámetros que se pueden enviar a watsonx.ai en cada invocación. Para la versión, elija Enter text y luego proporcione 2023-05-29, Para la entrada, elija Action Step Variables y luego elija 1. Prompt for a prompt, continuando de la misma manera, establece el model_id a google/flan-t5-xxl y el project_id a tu id de proyecto watsonx.ai guardado antes. No aplicar todavía

    required model params
  9. Amplíe los parámetros opcionales. Para este escenario de generación de texto, utilice la temperatura 0.7, establezca max_net tokens a 200, establezca min_new_tokens a 50 y establezca repetition penalty a 2, establezca decoding_method a sample. A continuación, haga clic en Aplicar

    required model params
  10. Haga clic en Nuevo paso

  11. En este paso, seleccione con condiciones . En la condición, haga clic en el primer elemento y seleccione watsonx (paso 2)

set condition
  1. Seleccionar Se ha ejecutado correctamente
  2. Haga clic en Establecer valores de variables, luego haga clic en Establecer nuevo valor, luego haga clic en Nueva variable de sesión
add session variable
  1. Llame el result variable y seleccione free text libre y luego haga clic en Aplicar
result variable
  1. Para la asignación de la variable A, seleccione Expresión y escriba $ después de pegar esto aparecerá un desplegable. Seleccione watsonx (step 2)
result variable

Seleccione body.results, el cuadro se rellenará con la asignación para la variable de result. Ahora añade el texto [0].generated_text al final de la expresión:

extract generated_text

haga clic en Aplicar

  1. La expresión completa para la variable debe mostrarse como:
result variable assignment
  1. En el Asistente dice panel, seleccione función y, a continuación, escriba ${result}, o puede seleccionar Variables de sesión y, a continuación, result
assistant replies with result

El asistente debería estar listo, es hora de probarlo.

Probar la acción

  1. Haga clic en el botón Vista previa.

  2. Después del saludo, tipo I need to create a marketing message, y enviar al chatbot.

  3. El chatbot responderá con la indicación correspondiente.

  4. Introduzca el siguiente texto en el chatbot

    Generate a 5 sentence marketing message for a company with the given characteristics. Details Characteristics: Company - Golden Bank Offer includes - no fees, 2% interest rate, no minimum balance Tone - informative Response requested - click the link End date - July 15 Email
    text
  5. Envía al chatbot - si todo ha funcionado, recibirás una respuesta del modelo con el mensaje.

    working assistant

    Lo más probable es que vea algo diferente porque estamos utilizando un enfoque de descodificación sample (frente a greedy). Si no le gusta la respuesta, vuelva a ejecutar el asistente para obtener otro mensaje. Nota: con estos parámetros, el asistente puede crear información como años para la fecha (porque sólo se especifica el 15 de julio) o números de teléfono. En un caso de uso real, un humano utilizaría este mensaje generado como punto de partida, realizando las modificaciones necesarias y aprobando la versión final.

Próximos pasos

Tenga en cuenta que el watsonx-openapi.json proporcionado no incluye definiciones para todos los parámetros y pretende ser un punto de partida para futuras ampliaciones. Una buena tarea es editar el archivo para añadir un parámetro opcional adicional para random_seed (consulte la documentación de la API para obtener más detalles) y, a continuación, pruebe el asistente con la semilla 111 para obtener un resultado que coincida con el ejemplo de mensaje de marketing de Prompt Lab.

Experimente en el laboratorio de prompts para otros escenarios utilizando diferentes prompts y parámetros - luego cree nuevas acciones y ajuste los parámetros para el nuevo caso de uso. Dado que todo el prompt es requerido para la entrada en el diseño actual, cero o un disparo (como el de este laboratorio) funcionará mejor. Sin embargo, con un poco más de esfuerzo, debería ser posible definir una variable asistente con más ejemplos y luego utilizar una expresión para construir el prompt para la integración. ¡Pruébalo!