0 / 0
Torna alla versione inglese della documentazione

Codifica e distribuzione di servizi AI con l'interfaccia a riga di comando Cloud Pak for Data (CPDCTL)

Ultimo aggiornamento: 21 feb 2025
Codifica e distribuzione di servizi AI con l'interfaccia a riga di comando Cloud Pak for Data (CPDCTL)

CPDCTL è uno strumento a riga di comando per la distribuzione e la gestione dei servizi AI sulla piattaforma IBM Cloud Pak for Data (CPD). Fornisce un modo semplice e snello per distribuire i servizi di intelligenza artificiale, eliminando la necessità di configurazione manuale e riducendo il rischio di errori. È possibile utilizzare l'interfaccia a riga di comando Cloud Pak for Data (CPDCTL) per distribuire in modo programmatico le soluzioni di IA generativa che utilizzano i servizi di IA.

Panoramica dei processi

Il processo di distribuzione di un servizio AI con CPDCTL prevede la preparazione dell'ambiente installando CPDCTL e configurando le variabili d'ambiente, la creazione di un'istanza del servizio AI, il caricamento del codice per il servizio AI e la distribuzione del servizio AI per renderlo disponibile all'uso. Il processo di distribuzione viene avviato eseguendo una serie di comandi CPDCTL, tra cui la creazione di un'istanza del servizio AI, il caricamento del codice e la distribuzione del servizio AI. Il servizio di intelligenza artificiale implementato può essere consultato attraverso un endpoint API REST, consentendo previsioni e processi decisionali in tempo reale. Durante tutto il processo, CPDCTL fornisce un modo semplice ed efficiente per distribuire, gestire e scalare i servizi di IA.

Prerequisiti

Prima di distribuire i servizi AI con CPDCTL, è necessario soddisfare i seguenti prerequisiti:

  1. Installare e configurare il CPDCTL. Per ulteriori informazioni, vedere IBM Cloud Pak for Data Command Line Interface.
  2. Creare uno spazio di distribuzione con accesso a watsonx.ai.
  3. Salvare l'ID dello spazio di distribuzione, il servizio URL e la chiave API come variabili d'ambiente: SPACE_ID, WML_URL, e API_KEY.
  4. Preparare le specifiche del software runtime-24.1-py3.11 con accesso a langgraph: SOFT_SPEC.

Preparazione del codice

  1. Scaricare il codice di servizio AI: deployable_code.py.

    wget -O deployable_code.py https://raw.githubusercontent.com/IBM/watsonx-ai-samples/refs/heads/ai-service-cli-sample/cloud/definitions/ai_service/deployable_function_ai_service_cli.py
    

    È necessario fornire i siti space_id e url al servizio AI.

  2. Preparare un file gzip con il file di codice.

    gzip -k deployable_code.py
    

Creazione di un'istanza di servizio AI

  1. Creare un'istanza del servizio AI utilizzando CPDCTL:

    cpdctl wx-ai ai-service create \
      --space-id $SPACE_ID \
      --name ai-service-app \ 
      --description "Sample AI Service" \
      --tags langgraph,example \
      --code-type python \
      --software-spec-id $SOFT_SPEC
    

Restituisce informazioni di base sull'istanza di servizio AI creata. Utilizzare il flag --output JSON per ottenere dati più dettagliati.

  1. Salvare l'ID ottenuto come AI_SERVICE_ID.

Caricamento del codice nell'istanza del servizio AI

Caricare il codice nell'istanza del servizio AI usando CPDCTL:

cpdctl wx-ai ai-service upload-code \
  --space-id $SPACE_ID \
  --ai-service-id $AI_SERVICE_ID \
  --upload-code deployable_code.py.gz

Distribuire il servizio AI

Distribuire il servizio AI utilizzando CPDCTL:

cpdctl wx-ai deployment create \
  --space-id $SPACE_ID \
  --asset-id $AI_SERVICE_ID \
  --name ai-service-deployment \
  --description "Deployed AI Service" \
  --tags ai_service,example,langgraph \
  --online '{}' \
  --output json

Salvare il URL trovato nella risposta responsabile dell'accesso al metodo generate_stream come URL_STREAM.

Fornire un oggetto parametri personalizzato

Durante la creazione di un'installazione client, è possibile fornire un oggetto parametri personalizzato utilizzando il flag --custom. Questo flag accetta un oggetto JSON con le coppie chiave-valore.

Ad esempio, se si vuole fornire il seguente oggetto personalizzato:

{
  "avatar_icon": "Bot",
  "avatar_color": "background",
  "placeholder_image": "image4.png",
  "sample_questions": [
    "Question 1",
    "Question 2"
  ]
}

Puoi utilizzare il seguente comando:

cpdctl wx-ai deployment create \
  --space-id $SPACE_ID \
  --asset-id $AI_SERVICE_ID \
  --name ai-service-deployment \
  --description "Deployed AI Service" \
  --tags ai_service,example,langgraph \
  --online '{}' \
  --output json \
  --custom '{"avatar_icon": "Bot", "avatar_color": "background", "placeholder_image": "image4.png", "sample_questions": ["Question 1", "Question 2"]}'

In alternativa, si può preparare un file JSON con i parametri personalizzati e passare il percorso di questo file usando il flag --custom con il simbolo @. Ad esempio:

cpdctl wx-ai deployment create \
  --space-id $SPACE_ID \
  --asset-id $AI_SERVICE_ID \
  --name ai-service-deployment \
  --description "Deployed AI Service" \
  --tags ai_service,example,langgraph \
  --online '{}' \
  --output json \
  --custom @path_to_file_with_params.json

Assicurarsi di sostituire path_to_file_with_params.json con il percorso effettivo del file JSON.

Generazione del token Cloud Identity and Access Management

Per chiamare l'endpoint di distribuzione, è necessario fornire un token IAM. Generare un token IAM utilizzando curl :

curl -X POST \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Accept: application/json" \
  --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
  --data-urlencode "apikey=$API_KEY" \
  "https://iam.test.cloud.ibm.com/identity/token"

Salvate il token ottenuto come IAM_TOKEN.

Inferenza del punto finale

Inviare una richiesta all'endpoint utilizzando curl :

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $IAM_TOKEN" \
  -d "{\"space_id\": \"$SPACE_ID\", \"url\": \"$WML_URL\", \"question\": \"What is the total sum of the numbers 11,   13, and 20? Remember to always return the final result using the last tool message.\"}" \
  $URL_STREAM

Restituisce un flusso di output da un modello.

Argomento principale: Distribuzione di servizi AI con codifica diretta