Strumenti per le funzioni del client

Se hai funzionalità accessibili dal codice client, ma non dagli strumenti ospitati, come OpenAPI o MCP puoi utilizzare gli strumenti per le funzioni client. Gli strumenti per le funzioni client vengono sempre eseguiti sul lato client, non dall'agente.

Come funziona

Quando un agente attiva uno strumento per le funzioni client:

  1. Blocco della sessione: la sessione di conversazione viene effettivamente "bloccata" sul lato server.
  2. Esecuzione client: l'applicazione client deve identificare la chiamata dello strumento ed eseguire la logica corrispondente nel tuo ambiente locale.
  3. Fornitura della risposta: una volta completata l'esecuzione, l'applicazione client deve fornire la risposta all'agente utilizzando i toolResponses campi.

L'agente attende questa risposta prima di procedere con la conversazione.

Configurazione

Quando crei uno strumento per le funzioni client, definisci in che modo l'agente comprende e interagisce con il codice lato client:

  • Nome: un identificatore univoco per lo strumento (ad esempio: open_settings).
  • Descrizione: una breve descrizione dello scopo dello strumento. I modelli di agenti utilizzano questa descrizione per decidere quando chiamare la funzione.
  • Schema di input/output: definito in formato OpenAPI. Determina la struttura dei dati che l'agente invia e si aspetta di ricevere.

Casi d'uso

Gli strumenti per le funzioni client sono ideali per:

  • Azioni UI/UX: attivare modifiche nell'interfaccia dell'applicazione (ad esempio "Vai alla schermata di assistenza").
  • Dati del dispositivo locale: accedere alle informazioni disponibili solo nel contesto dell'app (ad esempio "Ottieni il livello batteria attuale").
  • API private: integrare i servizi raggiungibili solo dall' ambiente lato client.

Esempio

Il seguente esempio è una risposta della sessione che indica che l'applicazione client deve chiamare una funzione:

"outputs": [
  {
    "toolCalls": {
      "toolCalls": [
        {
          "id": "<execution id>",
          "tool": "<client function tool's resource name>",
          "args": {
            "zip_code": "92031"
          },
          "displayName": "get_nearest_store"
        }
      ]
    },
    "turnCompleted": true,
  }
]

Il seguente esempio è una sessione successiva con l'output dello strumento allegato alla richiesta. L'applicazione client deve compilare questi campi e inserire gli stessi valori di id, tool e display_name del messaggio precedente.

"inputs": [
  {
    "toolResponses": {
      "toolResponses": [
        {
          "displayName": "get_nearest_store",
          "id": "<execution id>",
          "tool": "<client function tool's resource name>",
          "response": {
            "name": "Alibaba",
            "address": "43 Alpha Road, Mountain View, CA 92039, USA"
          },
        }
      ]
    }
  }
]