0 / 0

Creazione di flussi di lavoro guidati da agenti con l'API di chat

Ultimo aggiornamento: 27 mag 2025
Creazione di flussi di lavoro guidati da agenti con l'API di chat

Utilizzate l'API di chat watsonx.ai con i modelli di fondazione che supportano le chiamate agli strumenti per creare applicazioni guidate dagli agenti.

Modi per sviluppare

È possibile creare flussi di lavoro guidati da agenti utilizzando questi metodi di programmazione:

Panoramica

Le applicazioni agenziali consentono a un modello di fondazione di funzionare come un agente che controlla il flusso di interazione con l'utente. Si definiscono i parametri dell'interazione, compresi gli strumenti che il modello di base può utilizzare, ma si permette al modello di base di decidere il passo successivo migliore in base allo stato attuale dell'interazione. Il richiamo di uno strumento è talvolta indicato come richiamo di una funzione.

Modelli di fondazione supportati

Quando si costruisce un flusso di lavoro agenziale, si deve scegliere un modello di base che soddisfi i seguenti requisiti:

  • Gestisce le attività di chat
  • Supporta la chiamata agli strumenti
  • Può scegliere l'azione successiva

Per ottenere programmaticamente un elenco di modelli di fondazione che supportano la chiamata di strumenti dall'API della chat, specificare il parametro 'filters=task_function_calling quando si invia una richiesta del metodo List the available foundation models.

Vedere il riferimento API.

Ad esempio:

curl -X GET \
  'https://{region}.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2024-10-10&filters=task_function_calling'

API REST

I diversi modelli di fondazione gestiscono la chiamata degli strumenti in modi diversi. Gli esempi seguenti mostrano alcune differenze:

Per i dettagli sui metodi API, consultare la documentazione di riferimento dell'API.

Esempio di richiesta di chiamata di strumenti

L'esempio seguente definisce due strumenti, una funzione per l'addizione e una per la moltiplicazione. L'esempio invia l'input dell'utente al modello di fondazione e lascia che il modello scelga quale strumento utilizzare per rispondere alla domanda.

Nell'esempio seguente, sostituire la variabile '{url} con il valore giusto per la propria istanza, ad esempio 'us-south.ml.cloud.ibm.com. Aggiungete il vostro token al portatore e l'ID del progetto.

curl -X POST \
  'https://{url}/ml/v1/text/chat?version=2024-10-08' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJraWQiOi...'
  --data '{
      "model_id": "mistralai/mistral-large",
      "project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "What is 2 plus 4?"
            }
          ]
        }
      ],
      "tools": [
        {
          "type": "function",
          "function": {
            "name": "add",
            "description": "Adds the values a and b to get a sum.",
            "parameters": {
              "type": "object",
              "properties": {
                "a": {
                  "description": "A number value",
                  "type": "float"
                },
                "b": {
                  "description": "A number value",
                  "type": "float"
                }
              },
              "required": [
                "a",
                "b"
              ]
            }
          }
        },
        {
          "type": "function",
          "function": {
          "name": "multiply",
            "description": "Multiplies the values a and b.",
            "parameters": {
              "type": "object",
              "properties": {
                "a": {
                  "description": "A number value",
                  "type": "float"
                },
                "b": {
                  "description": "A number value",
                  "type": "float"
                }
              },
              "required": [
                "a",
                "b"
              ]
            }
          }
        }
      ],
      "tool_choice_option": "auto",
      "max_tokens": 300,
      "time_limit": 1000
      }'

L'output di esempio mostra che il modello, in questo caso mistral-large, è in grado di scegliere lo strumento corretto da utilizzare per il compito, la funzione 'add.

{
  "id": "chatcmpl-2f47da4026950db321698cb733b25e89",
  "model_id": "mistralai/mistral-large",
  "model": "mistralai/mistral-large",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "id": "H6KoCbaZV",
            "type": "function",
            "function": {
              "name": "add",
              "arguments": "{\"a\": 2, \"b\": 4}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "created": 1739311926,
  "model_version": "2.0.0",
  "created_at": "2025-02-11T22:12:07.243Z",
  "usage": {
    "completion_tokens": 25,
    "prompt_tokens": 189,
    "total_tokens": 214
  },
  "system": {
    "warnings": [
      {
        "message": "This model is a Non-IBM Product governed by a third-party license that may impose use restrictions and other obligations. By using this model you agree to its terms as identified in the following URL.",
        "id": "disclaimer_warning",
        "more_info": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx"
      }
    ]
  }
}

Esempio di richiesta di chiamata di utensili con granite-3-2b-instruct

La richiesta seguente definisce due strumenti, una funzione per l'addizione e una per la moltiplicazione, e chiede al modello di fondazione granite-3-2b-instruct quale strumento utilizzare.

I modelli Granite possono chiamare meglio gli strumenti quando si fornisce un prompt di sistema con la richiesta. Viene utilizzato il seguente prompt di sistema:

You are Granite, sviluppato da IBM. Sei un assistente AI con accesso ai seguenti strumenti. Quando è necessario uno strumento per rispondere alla domanda dell'utente, rispondere con <|tool_call|> seguito da un elenco JSON di strumenti utilizzati. Se uno strumento non è presente nell'elenco di strumenti fornito, informare l'utente che non si è in grado di soddisfare la richiesta.

Nell'esempio seguente, sostituire la variabile '{url} con il valore giusto per la propria istanza, ad esempio 'us-south.ml.cloud.ibm.com. Aggiungete il vostro token al portatore e l'ID del progetto.

curl -X POST \
  'https://{url}/ml/v1/text/chat?version=2024-10-08' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJraWQiOi...'

Il corpo della richiesta contiene il seguente frammento JSON:

{
  "model_id": "ibm/granite-3-2b-instruct",
  "project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
  "messages": [
    {
      "role":"system",
      "content":[
        {
          "type":"text",
          "text":"You are Granite, developed by IBM. You are a helpful AI assistant with access to the following tools. When a tool is required to answer the user's query, respond with <|tool_call|> followed by a JSON list of tools used. If a tool does not exist in the provided list of tools, notify the user that you do not have the ability to fulfill the request."
      }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is 2 times 4?"
        }
      ]
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "add",
        "description": "Adds the values a and b to get a sum.",
        "parameters": {
          "type": "object",
          "properties": {
            "a": {
              "description": "A number value",
              "type": "float"
            },
            "b": {
              "description": "A number value",
               "type": "float"
            }
          },
          "required": [
            "a",
            "b"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "multiply",
        "description": "Multiplies the values a and b.",
        "parameters": {
          "type": "object",
          "properties": {
            "a": {
              "description": "A number value",
              "type": "float"
            },
            "b": {
              "description": "A number value",
               "type": "float"
            }
          },
          "required": [
            "a",
            "b"
          ]
        }
      }
    }
  ],
  "tool_choice_option": "auto",
  "max_tokens": 300,
  "time_limit": 10000
}

Il modello di fondazione granite-3-2b-instruct è in grado di scegliere lo strumento corretto per rispondere alla domanda.

La risposta è la seguente:

{
  "id": "chatcmpl-ac80d63a85209b48592435687086e1c2",
  "model_id": "ibm/granite-3-2b-instruct",
  "model": "ibm/granite-3-2b-instruct",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "id": "chatcmpl-tool-3297286588a24459b0042943cae55629",
            "type": "function",
            "function": {
              "name": "multiply",
              "arguments": "{\"a\": 2, \"b\": 4}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "created": 1739311794,
  "model_version": "1.1.0",
  "created_at": "2025-02-11T22:09:55.048Z",
  "usage": {
    "completion_tokens": 28,
    "prompt_tokens": 348,
    "total_tokens": 376
  }
}

Python

Vedere la classe ModelInference della libreria watsonx.ai Python.

Esempi di quaderni Python

Sono disponibili i seguenti quaderni campione:

Ulteriori informazioni

Argomento principale: Automazione di attività con agenti AI