Inferencia programática de un modelo de cimentació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 ModelInference 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, el cuaderno Use watsonx to analyze car rentals reviews es un cuaderno de ejemplo que puede ejecutar para aprender los pasos necesarios para inferir un modelo de fundamentos en watsonx.ai.
Promover un modelo de fundación
Antes de solicitar un modelo base, obtenga una lista de los modelos base disponibles para inferencias 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 comprobación de que el ID del modelo es válido y hace referencia a un modelo de cimentación disponible.
Ejemplo de código Python para solicitar un modelo de cimentación
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='')
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 modelo de fundación, 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 moderations
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 utilizar los filtros guardrails con la configuración predeterminada aplicada al utilizar la biblioteca Python, incluya el siguiente parámetro 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 principal: Generación de texto