0 / 0
Torna alla versione inglese della documentazione

Inferenza di un foundation model in modo programmatico ( Python )

Ultimo aggiornamento: 21 feb 2025
Inferenza di un foundation model in modo programmatico ( Python )

Puoi richiedere i modelli di base in IBM watsonx.ai in modo programmatico utilizzando la libreria Python .

Dopo aver creato un prompt in Prompt Lab, è possibile salvare il prompt come blocco note e quindi modificare il blocco note. Iniziare da un blocco note generato è utile perché gestisce le fasi iniziali di configurazione, come l'ottenimento delle credenziali e dell'ID del progetto.

In alternativa, è possibile lavorare con i modelli di fondazione direttamente da un nuovo blocco note creato in watsonx.ai.

Per ulteriori informazioni, consultare la classe Model Inference della libreria watsonx.ai Python.

Notebook di esempio

Per trovare i notebook di esempio che richiedono vari modelli di base disponibili in watsonx.ai, consulta Notebook di esempioPython. La maggior parte di questi notebook sono disponibili anche dall'hub di risorse.

Ad esempio, Use watsonx to analyze car rentals reviews è un notebook di esempio che si può eseguire per imparare le fasi di inferenza di un foundation model in watsonx.ai.

foundation model

Prima di richiedere un foundation model, è possibile ottenere un elenco dei modelli di fondazione disponibili per l'inferenza in watsonx.ai Per ulteriori informazioni, vedi Come ottenere informazioni sui modelli di base disponibili.

Il seguente codice di esempio mostra come richiedere il modello flan-t5-xxl-11b utilizzando metodi differenti in modo che sia possibile confrontare il tipo di output generato da ciascun metodo.

Sebbene solo l'esempio che mostra come generare un flusso di testo includa i parametri del modello per la richiesta, è possibile specificare i parametri per qualsiasi metodo. Il parametro validate=False velocizza la richiesta saltando la fase di verifica della validità dell'ID del modello e del riferimento a un sito foundation model.

Esempio di codice Python per la richiesta di 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:

Per utilizzare il codice di esempio, è necessario sostituire {region}, {my-IBM-Cloud-API-key}e {my-project-ID} con valori validi per il proprio ambiente.

Output dal metodo 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"
    }
  ],
  ...
}

Output dal metodo generate_text ():

will discuss the new product line.

Output dal metodo generate_text_stream ():

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

Rimozione del contenuto dannoso

Quando si invia una richiesta a un foundation model, il filtro per odio, abuso e blasfemia (HAP) e il filtro per le informazioni di identificazione personale (PII) sono disattivati per impostazione predefinita. Puoi abilitarle e specificare la riservatezza del filtro HAP utilizzando il campo modifications nell'API.

Per ulteriori informazioni su come funziona il filtro, vedi Rimozione della lingua dannosa dall'input e dall'output del modello.

Per abilitare i filtri con le impostazioni predefinite applicate quando si utilizza la libreria Python , includere il seguente parametro nella richiesta:

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

Il seguente esempio di codice mostra come abilitare e configurare i filtri.

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)

Argomento principale: Python Python