> For the complete documentation index, see [llms.txt](https://docs.aisuru.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aisuru.com/avanzate/integrazioni/funzioni/funzioni-avanzate/come-configurare-una-funzione-personalizzata.md).

# Come configurare una funzione personalizzata

### Accesso alla sezione Funzioni

Per creare una nuova funzione personalizzata in AIsuru, segui questi passaggi:

1. Vai al pannello di gestione del tuo Agente;
2. Seleziona "Funzioni" nella barra laterale;
3. Fai clic sulla scheda "Funzioni avanzate" nella parte superiore della pagina;
4. Premi "Nuova funzione" per iniziare la configurazione.

### Configurazione di una nuova funzione

Nella schermata di creazione di una nuova funzione, dovrai compilare i seguenti campi:

**Informazioni di base**

* **Nome**: inserisci un nome univoco e descrittivo per la tua funzione. Questo nome viene usato internamente dal sistema per identificare la funzione;
  * **Limite**: il nome può contenere al massimo 64 caratteri;
  * **Formato**: usa solo lettere, numeri e trattini bassi (\_), senza spazi o caratteri speciali;
  * **Esempi validi**: `get_weather`, `search_products`;`send_customer_email`
* **Descrizione**: fornisci una descrizione completa della funzione, devi sempre specificare:
  * Cosa fa la funzione;
  * Quando usarla;
  * Quale output deve restituire e come formattarlo.

Questa descrizione è essenziale perché aiuta l'IA generativa a comprendere quando e come usare la funzione in una conversazione.

{% hint style="info" %} <mark style="color:blue;">**Nota**</mark><mark style="color:blue;">: se usi modelli OpenAI (come GPT-4o e GPT-4o mini), la descrizione non può superare 1.024 caratteri. Se hai bisogno di una descrizione più lunga, ti consigliamo di usare altri modelli per domande& e risposte oppure di spostare parte della descrizione nelle</mark> [<mark style="color:blue;">istruzioni</mark>](/ai-generativa/prompt-engineering.md)<mark style="color:blue;">.</mark>
{% endhint %}

### **Esempi di descrizioni di funzioni**

#### **Esempio di una funzione per l'invio di email**

```
Use this function to send email notifications. The function should ONLY be called when:
- The user explicitly requests to be contacted;
- The user wants to receive specific informational material;
- The user asks for a demo.

Required parameters:
- email: the recipient's email address (ALWAYS ask the user)
- type: the type of information requested (DON'T ask the user, infer from the conversation)
- message: the specific content to send (compose an appropriate text based on the request)

Before calling the function, make sure you fully understand what type of information the user wants to receive.
```

#### **Esempio di una funzione per cercare prodotti in un catalogo**

```
Use this function to get information from the product catalog based on the category requested by the user. The function should be called when the user asks about specific product categories.

Available categories are:
- computers: for information on laptops and desktops;
- phones: for information on smartphones and phones;
- tablets: for information on tablets and e-readers.

Use the {category} parameter, setting it in the webhook to the appropriate category based on the request. For example, if the user asks about laptops, use "computers" as the parameter value.

Never show the parameter value to the user — only use the information returned by the function to formulate the response.
```

### Configurazione del webhook

* **Webhook**: inserisci l'indirizzo web completo che verrà chiamato quando la funzione viene attivata. Ad esempio, se usi Zapier, dovrai inserire l'indirizzo fornito da Zapier (questo si chiama webhook);
* **Metodo HTTP**: seleziona il metodo HTTP appropriato per la richiesta del tuo webhook. La scelta dipende dall'azione che la funzione deve eseguire:
  * GET (predefinito): per recuperare informazioni, ad esempio leggere un articolo online;
  * POST: per inviare nuove informazioni, ad esempio inviare un modulo;
  * PATCH: per modificare parzialmente informazioni esistenti, ad esempio aggiornare solo alcuni campi in un profilo online;
  * DELETE: per eliminare informazioni, ad esempio rimuovere un account.

Se non devi passare parametri o altre informazioni, puoi fermarti qui.

#### Dettagli della richiesta

Se devi inviare informazioni aggiuntive al tuo servizio (come un nome, una data o un indirizzo email), potresti dover specificare ulteriori dettagli:

* **Intestazioni HTTP**: qui puoi aggiungere informazioni extra necessarie per la tua richiesta. Possono includere codici di accesso o altri dettagli richiesti dal servizio che stai utilizzando. Premi "Aggiungi" per aggiungere informazioni all'intestazione della richiesta;
* **Modello di stringa di query**: definisci il formato delle informazioni da inviare nell'URL. Usa {parametro} per indicare dove inserire i valori delle variabili. Ad es. location={city}\&period={date}. City e date sono variabili (o "parametri");
* **Modello del corpo HTTP**: specifica le informazioni da inviare nel corpo della richiesta. Come sopra, usa {parametro} per indicare dove inserire i valori delle variabili.

#### Informazioni contestuali

**Invia header di estensione**: seleziona le informazioni aggiuntive della conversazione che desideri includere nella richiesta:

* ID sessione;
* Tag utente;
* Data e ora correnti;
* Posizione;
* Contesto;
* Email dell'utente.

#### Definizione dei parametri

Nella sezione "Parameters", puoi definire i valori dinamici (variabili) che la tua funzione accetterà.

Per aggiungere un parametro, fai clic su "Add" e specifica:

* **Nome**: il nome del parametro che verrà utilizzato (quello che inserisci tra parentesi graffe, ad esempio "city" se hai scritto "location={city}" nei dettagli della richiesta);
* **Descrizione**: una descrizione dettagliata di ciò che rappresenta il parametro; maggiori dettagli significano maggiore accuratezza da parte dell'IA;
* **Tipo**: specifica se il parametro è una stringa, un numero, un intero o un valore booleano;
* **Valori possibili**: fai clic sul pulsante "add" per inserire i valori possibili;
* **Obbligatorio**: questo campo indica all'IA se il parametro è obbligatorio o facoltativo: se stai richiedendo dati meteorologici, la città è probabilmente obbligatoria, mentre la scala (Celsius o Fahrenheit) potrebbe essere facoltativa.

{% hint style="info" %} <mark style="color:blue;">Questi parametri rappresentano valori che l'IA può chiedere all'utente o dedurre dalla conversazione.</mark>
{% endhint %}

{% hint style="danger" %} <mark style="color:red;">**Nota**</mark><mark style="color:red;">: i nomi dei parametri non devono contenere caratteri accentati o caratteri speciali.</mark>
{% endhint %}

#### Test della funzione

Prima di distribuire la tua funzione, ti consigliamo di testarla:

1. Nella pagina di configurazione della tua funzione, premi "Test";
2. Inserisci valori di esempio per i parametri definiti;
3. Fai clic su "Run test" per verificare che la funzione funzioni come previsto.

Questo passaggio ti consente di identificare e risolvere eventuali problemi prima di mettere la funzione in produzione.
