Codificación y despliegue de servicios de IA con ibm- watsonx -ai-cli

Utilice el paquete ibm-watsonx-ai-cli Python para descargar, editar, probar e implantar servicios de IA desde su entorno local.

Utilizando ibm-watsonx-ai-cli, en función de sus necesidades, puede:

  • Pruebe un servicio de IA localmente, sin desplegarlo, pasando argumentos a una plantilla descargada en su entorno local.
  • Despliegue un servicio de IA en watsonx.ai y, a continuación, pruébelo localmente, pasando argumentos al servicio desplegado.
  • Descargue, despliegue y pruebe una aplicación basada en un servicio de IA.

Requisitos previos:

  • Python 3.11
  • La herramienta de empaquetado y gestión de dependencias Poetry debe estar instalada en el entorno local. Para instalar Poetry, siga las instrucciones de la página de instalación de Poesía.

Para empezar a trabajar con plantillas de servicios AI en su entorno local, primero debe instalar ibm-watsonx-ai-cli. Para instalar ibm-watsonx-ai-cli, escriba este comando en su máquina local: pip install -U ibm-watsonx-ai-cli.

Importante:
  • Algunas plantillas requieren un archivo de configuración correctamente preparado (config.toml). Si una plantilla descargada contiene config.toml con marcadores de posición, lea atentamente su descripción y rellene los campos obligatorios.
  • Por razones de seguridad, se recomienda no codificar su clave API u otros secretos directamente en sus scripts o en el archivo config.toml . En su lugar, configúrelas como variables de entorno y luego acceda a las variables desde su código. Por ejemplo: WATSONX_APIKEY = os.environ.get("WATSONX_APIKEY", "").
  • Desde la versión 0.2.0 de ibm-watsonx-ai-cli, la forma recomendada de pasar la clave API u otros secretos necesarios para autenticarse en IBM watsonx.ai es utilizar el archivo .env . El archivo .env debe encontrarse en la ruta desde la que se llaman los comandos cli.
  • La carpeta dist que contiene la distribución del código fuente de la plantilla se crea localmente cuando se prepara el activo de extensión del paquete. A partir de la versión 0.3.0 de ibm-watsonx-ai-cli, esta carpeta se elimina automáticamente una vez que el contenido del servicio AI se ha desplegado correctamente.

Ejemplo de flujo de despliegue de un servicio de IA

Para desplegar plantillas de servicios AI utilizando ibm-watsonx-ai-cli, consulte este flujo de ejemplo:

  1. Cree la plantilla en su IDE:

    watsonx-ai template new
    

    Aparecerá en pantalla una lista de las plantillas disponibles. Escriba el número asociado a la plantilla con la que desea trabajar. A continuación, escriba el nombre de la carpeta que desea crear.

  2. Navegue hasta el directorio de plantillas:

    cd <template directory>
    cp config.toml.example config.toml
    
  3. Personalice el código de la plantilla y edite el archivo config.toml para actualizar el marcador de posición valuesFor para facilitar el acceso a algunas de las variables necesarias, consulte la página Acceso para desarrolladores.

  4. Pruebe el código de la plantilla:

    watsonx-ai template invoke "<your query>"
    
  5. Crea un servicio:

    watsonx-ai service new
    

    Cuando se despliega el servicio, ibm-watsonx-ai-cli devuelve el ID del despliegue. Si desea que este ID sea el ID de despliegue predeterminado cuando invoque el servicio desplegado, péguelo como deployment_id en el archivo config.toml . Si no lo hace, deberá proporcionar el ID de despliegue cada vez que invoque su servicio desplegado.

  6. Probar el servicio

    watsonx-ai service invoke "<your query>"
    
Nota:

Si desea probar su servicio localmente utilizando una interfaz gráfica de usuario, instale la aplicación React UI. Para más información, consulte watsonx.ai AI Service UI app

Ejemplo de flujo para crear una aplicación basada en una plantilla de servicio de IA

Para crear aplicaciones basadas en plantillas de servicios de IA utilizando ibm-watsonx-ai-cli, consulte este flujo de ejemplo:

  1. Crea una aplicación en tu IDE:

    watsonx-ai app new
    

    En la pantalla aparecerá una lista de las aplicaciones disponibles. Escriba el número asociado a la aplicación con la que desea trabajar. A continuación, escriba el nombre de la carpeta que desea crear.

  2. Navegue hasta el directorio de aplicaciones y copie su archivo de variables de entorno:

    cd <created folder with the app>
    cp template.env .env
    
  3. Edite el archivo .env para actualizar los valores de los marcadores de posición. Para acceder fácilmente a algunas de las variables necesarias, consulte la página Acceso para desarrolladores. Para el WATSONX_BASE_DEPLOYMENT_URL, utilice el URL al punto final de un servicio desplegado.

  4. Inicie la app:

    watsonx-ai app run
    

    Alternativamente, si desea realizar cambios en el código fuente de la aplicación mientras ésta se está ejecutando, inicie la aplicación en modo de desarrollo:

    watsonx-ai app run --dev
    

    Si una aplicación se ejecuta en modo de desarrollo, cada vez que se guardan los cambios la aplicación se recarga.

Ejemplo de ejecución del comando eval

Utilice el comando eval para comprobar el rendimiento de un agente en un conjunto de datos específico. Puede incluir varios archivos de evaluación comparativa en un único comando eval . Los resultados se calculan por separado para cada archivo.

El comando eval proporciona varias métricas que pueden utilizarse simultáneamente para evaluar el rendimiento del agente. Para obtener más información sobre las métricas disponibles, ejecute:

watsonx-ai template eval --help

Para las métricas answer_similarity y answer_relevance , puede utilizar un LLM como juez. Puede proporcionar el ID del modelo (el modelo debe estar disponible en su entorno de nube) o utilizar la palabra clave llm_as_judge (en este caso, se utiliza uno de los dos modelos predefinidos).

He aquí un ejemplo de uso del comando eval :

watsonx-ai template eval --tests test1.jsonl,test2.jsonl --metrics answer_similarity,answer_relevance --evaluator llm_as_judge

He aquí un único resultado para una métrica:

{
  "name": "answer_similarity",
  "method": "llm_as_judge",
  "provider": "unitxt",
  "value": 0.6333333333333333,
  "errors": null,
  "additional_info": null,
  "group": "answer_quality",
  "thresholds": [
    {
      "type": "lower_limit",
      "value": 0.7
    }
  ],
  "min": 0.0,
  "max": 1.0,
  "mean": 0.6333333333333333,
  "total_records": 3,
  "record_level_metrics": [
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 1.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "c6ffedaa-b2b1-4ece-bbe6-0d680a470a12",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.9,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f5c15bfc-80a8-4095-a2c3-54ae1c21dc23",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f7dda69a-fd54-4b80-a966-2198c44109d8",
      "record_timestamp": null
    }
  ]
}

Más información

Para más información, consulte