0 / 0
Volver a la versión inglesa de la documentación

Inferencia de un foundation model a mediante programación ( Python )

Última actualización: 21 feb 2025
Inferencia de un foundation model a mediante programación ( Python )

Puede solicitar modelos base en IBM watsonx.ai mediante programación utilizando la biblioteca Python .

Después de crear un aviso en el Prompt Lab, puede guardarlo como un cuaderno y, a continuación, editarlo. Comenzar desde un cuaderno generado es útil porque se encarga de los pasos iniciales de configuración, como la obtención de credenciales y el ID del proyecto, por usted.

También puede trabajar con modelos de bases directamente desde un nuevo cuaderno que cree en watsonx.ai.

Para más información, consulte la clase Model Inference de la biblioteca watsonx.ai Python.

Cuadernos de ejemplo

Para encontrar cuadernos de ejemplo que soliciten diversos modelos de base disponibles en watsonx.ai, consulte cuadernos de ejemplo dePython. La mayoría de estos cuadernos también están disponibles en el concentrador de recursos.

Por ejemplo, Use watsonx to analyze car rentals reviews es un bloc de notas de ejemplo que puede ejecutar para aprender los pasos necesarios para inferir un foundation model en watsonx.ai.

Promover un foundation model

Antes de solicitar un foundation model base, obtenga una lista de los modelos base disponibles para inferir en watsonx.ai. Para obtener más información, consulte Obtención de información sobre los modelos de base disponibles.

El siguiente código de ejemplo muestra cómo solicitar el modelo flan-t5-xxl-11b utilizando distintos métodos para poder comparar el tipo de salida generado por cada método.

Aunque sólo el ejemplo que muestra cómo generar una secuencia de texto incluye parámetros de modelo para la solicitud, puede especificar parámetros para cualquiera de los métodos. El parámetro validate=False acelera la solicitud al omitir el paso de comprobar que el ID del modelo es válido y hace referencia a un foundation model disponible.

Ejemplo de código Python para solicitar un foundation model

import json
from ibm_watsonx_ai import APIClient
from ibm_watsonx_ai.foundation_models import ModelInference
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods

my_credentials = {
  "url": "https://{region}.ml.cloud.ibm.com",
  "apikey": {my-IBM-Cloud-API-key},
}

client = APIClient(my_credentials)

gen_parms = {
    GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
    GenParams.MAX_NEW_TOKENS: 100
}
model_id = client.foundation_models.TextModels.FLAN_T5_XXL
project_id = {my-project-ID}
space_id = None
verify = False

model = ModelInference(
  model_id=model_id,
  credentials=my_credentials,
  params=gen_parms,
  project_id=project_id,
  space_id=space_id,
  verify=verify,
)

prompt_txt = "In today's sales meeting, we "
gen_parms_override = gen_parms = {
    GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
    GenParams.MAX_NEW_TOKENS: 50
}

# GENERATE

generated_response = model.generate(prompt=prompt_txt, params=gen_parms_override)

print("Output from generate() method:")
print(json.dumps(generated_response, indent=2))

# GENERATE TEXT

generated_text_response = model.generate_text(prompt=prompt_txt, params=gen_parms_override)

print("Output from generate_text() method:")
print(generated_text_response)

# GENERATE STREAM

gen_stream_params = {
  GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
  GenParams.TEMPERATURE: 0.5,
  GenParams.MIN_NEW_TOKENS: 10,
  GenParams.MAX_NEW_TOKENS: 20
}

print("Output from generate_text_stream() method:")
stream_response = model.generate_text_stream(prompt=prompt_txt, params=gen_stream_params)

for chunk in stream_response:
  print(chunk, end='')
Nota:

Para utilizar el código de ejemplo, debe sustituir {region}, {my-IBM-Cloud-API-key}y {my-project-ID} por valores válidos para el entorno.

Salida del método generate ():

{
  "model_id": "google/flan-t5-xxl",
  "created_at": "2023-07-27T03:40:17.575Z",
  "results": [
    {
      "generated_text": "will discuss the new product line.",
      "generated_token_count": 8,
      "input_token_count": 10,
      "stop_reason": "EOS_TOKEN"
    }
  ],
  ...
}

Salida del método generate_text ():

will discuss the new product line.

Salida del método generate_text_stream ():

will discuss the new product line. Let's start with marketing plans

Eliminación de contenido dañino

Cuando envías una solicitud a un foundation model, el filtro de odio, abuso y blasfemia (HAP) y el filtro de información personal identificable (PII) están desactivados por defecto. Puede habilitarlos y especificar la sensibilidad del filtro HAP utilizando el campo modifications en la API.

Para obtener más información sobre cómo funciona el filtro, consulte Eliminación del lenguaje dañino de la entrada y salida del modelo.

Para habilitar los filtros con valores predeterminados aplicados al utilizar la biblioteca Python , incluya el parámetro siguiente en la solicitud:

response = model.generate(prompt,guardrails=True)

El siguiente ejemplo de código muestra cómo habilitar y configurar los filtros.

guardrails_hap_params = {
  GenTextModerationsMetaNames.INPUT: False,
  GenTextModerationsMetaNames.THRESHOLD: 0.45
}
guardrails_pii_params = {
  GenTextModerationsMetaNames.INPUT: False,
  GenTextModerationsMetaNames.OUTPUT: True,
  GenTextModerationsMetaNames.MASK: {"remove_entity_value": True}
}

response = model.generate(prompt,
  guardrails=True,
  guardrails_hap_params=guardrails_hap_params,
  guardrails_pii_params=guardrails_pii_params)

Tema padre: BibliotecaPython