Inferir un modelo base mediante programación ( Python )
Puede solicitar modelos base en IBM watsonx.ai mediante programación utilizando la biblioteca Python .
A partir de la versión 2.3.1, la API de generación de texto ha quedado obsoleta y se eliminará en el futuro.
Una vez que hayas creado una consulta en Prompt Lab, puedes guardarla como un cuaderno y, a continuación, editarla. Empezar con un cuaderno generado resulta útil porque se encarga de los pasos de configuración iniciales, como obtener las credenciales y el ID del proyecto, por ti.
También puedes trabajar con modelos base directamente desde un nuevo cuaderno que crees en watsonx.ai.
Para obtener más información, consulte la ModelInference Clase de la biblioteca Python watsonx.ai.
Cuadernos de ejemplo
Para encontrar cuadernos de ejemplo que soliciten diversos modelos de base disponibles en watsonx.ai, consulte Cuadernos de ejemplo dePython.
Solicitud de un modelo de base
Antes de solicitar un modelo de base, obtenga una lista de los modelos de base que están 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 validate=False parámetro acelera la solicitud al omitir el paso de comprobar que el ID del modelo sea válido y haga referencia a un modelo base disponible.
Código Python de ejemplo para solicitar un modelo de base
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 = Credentials(
username="jdoe",
api_key= {my-API-key},
url="https://cpd-cpd-instance.apps.example.com",
instance_id="openshift",
version="5.1"
)
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='')
https://cpd-cpd-instance.apps.example.comURL » y las {my-API-key} variables «» y {my-project-ID} «» por valores válidos para su implementación.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ía una solicitud a un modelo de base, el filtro de odio, abuso y blasfemia (HAP) y el filtro de información de identificación personal (PII) están inhabilitados de forma predeterminada. 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 de seguridad con la configuración predeterminada al usar la biblioteca Python, incluye 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)