0 / 0
Torna alla versione inglese della documentazione
Inferenza di un foundation model in modo programmatico
Ultimo aggiornamento: 28 nov 2024
Inferenza di un foundation model in modo programmatico

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

Una volta creato un prompt in Prompt Lab, è possibile salvare il prompt come notebook e quindi modificarlo. L'uso del notebook generato come punto di partenza è utile perché gestisce le fasi di configurazione iniziali, come il richiamo delle credenziali e le informazioni sull'ID del progetto.

In alternativa, puoi lavorare con i modelli di base direttamente da un notebook in watsonx.ai utilizzando la libreria Python watsonx.ai . Per ulteriori informazioni, consultare la libreria watsonx.

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.

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

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni