> 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/cache-delle-funzioni.md).

# Cache delle funzioni

La cache delle funzioni in AIsuru permette di memorizzare temporaneamente i risultati delle chiamate a funzioni, consentendo all'Agente di riutilizzare le informazioni senza ripetere richieste identiche.

### Come funziona la cache delle funzioni

Quando un utente interagisce con il tuo Agente e viene attivata una funzione:

1. Il risultato della chiamata alla funzione viene **salvato automaticamente nel contesto della conversazione**
2. Questo risultato diventa disponibile nelle successive iterazioni del dialogo
3. L'IA generativa è istruita per **controllare prima i dati in cache** prima di richiamare nuovamente una funzione
4. Se l'informazione necessaria è già presente, l'Agente utilizzerà i dati memorizzati invece di eseguire una nuova chiamata

Questa ottimizzazione porta diversi vantaggi:

* **Riduzione dei tempi di risposta**
* **Diminuzione del consumo di risorse**
* **Miglioramento dell'esperienza utente**

### Gestione della cache

La cache delle funzioni viene gestita automaticamente e i dati memorizzati sono disponibili sotto forma di:

* **Testi preformattati** che vengono allegati ai contenuti
* **Informazioni inserite nel contesto del dialogo**

Le informazioni in cache vengono considerate valide per la conversazione in corso o fino al completamento del contesto, dopodiché l'Agente potrà decidere di eseguire nuovamente la funzione per ottenere dati aggiornati.

### Personalizzazione tramite istruzioni

È possibile influenzare il comportamento della cache attraverso le istruzioni dell'IA generativa. Puoi:

* **Istruire l'Agente** a privilegiare i dati in cache per determinate funzioni
* **Forzare l'aggiornamento** in situazioni specifiche, ignorando la cache
* **Definire casi d'uso** in cui è sempre necessario richiamare la funzione

#### Esempio di istruzioni per la gestione della cache

```
Quando un utente chiede informazioni sul meteo:

1. Controlla se ci sono dati meteo già disponibili nella cache delle funzioni
2. Se i dati sono recenti (meno di 1 ora), utilizza quelli esistenti
3. Se i dati sono più vecchi o se l'utente specifica "aggiornati" o "attuali", chiama nuovamente la funzione
4. Per richieste relative a previsioni future, esegui sempre una nuova chiamata
```

### Esempi pratici

#### Esempio 1: Informazioni sul libro

Consideriamo questo scambio tra un utente e un Agente:

* **Utente**: "Non dirmi assolutamente a cosa si riferisce la caratteristica del libro, ma dimmi di che tipo è, NON IL VALORE (es. non dirmi 100kg ma dimmi 'peso')"
* **Agente**: "Basandomi sui dati ricevuti, posso dirti che la caratteristica del libro a cui ti riferisci è relativa al colore. Non ti dirò quale colore specifico è, come richiesto, ma posso confermare che si tratta di un attributo cromatico."
* **Utente**: "Ok ora senza USARE ALCUNA FUNZIONE, TU SAI il colore? Ora dillo"
* **Agente**: "Sì, so il colore perché è stato rivelato nella precedente chiamata alla funzione LIBRO che ha restituito 'pss il libro è giallo'. Quindi il colore del libro è giallo."

In questo esempio, la prima interazione ha chiamato la funzione "LIBRO" che ha recuperato l'informazione sul colore del libro. Questa informazione è stata salvata nella cache e l'Agente ha potuto accedervi direttamente nella seconda interazione, senza dover richiamare la funzione.

#### Esempio 2: Dati cliente in ambiente aziendale

* **Utente**: "Mostrami i dati di vendita del cliente ACME Corp"
* **Agente**: \[Chiama la funzione `getDatiCliente` con parametro "ACME Corp"] "Ecco i dati di vendita per ACME Corp: Fatturato annuale: €250.000, Ultimo ordine: 15 giorni fa, Prodotti acquistati: Servizi cloud, hardware, consulenza."
* **Utente**: "Qual è stata la loro spesa nell'ultimo trimestre?"
* **Agente**: \[Utilizza i dati già in cache] "In base ai dati che ho, ACME Corp ha speso €75.000 nell'ultimo trimestre, principalmente per servizi cloud e consulenza."
* **Utente**: "Ci sono stati cambiamenti recenti nel loro profilo?"
* **Agente**: \[Richiama la funzione poiché la richiesta implica dati potenzialmente aggiornati] "Lasciatemi verificare le informazioni più recenti... Sì, ci sono stati cambiamenti: ACME Corp ha recentemente ampliato il proprio portfolio con l'acquisto di nuovi servizi di cybersecurity e ha aumentato il budget del 15% rispetto al trimestre precedente."

### Limiti della cache

È importante essere consapevoli di alcuni limiti:

* La cache occupa una **porzione limitata del contesto** disponibile per il modello, circa il 15% del contesto del modello in uso
* Per un modello da 200k token di contesto, questo equivale a circa 120.000 caratteri
* Le chiamate di funzioni con risposte molto lunghe potrebbero subire troncamenti

### Best practice

Per utilizzare al meglio la cache delle funzioni:

1. **Struttura le risposte delle funzioni** in modo conciso e informativo
2. **Definisci chiaramente nelle istruzioni** quando utilizzare la cache e quando richiamare la funzione
3. **Considera la validità temporale** dei dati per funzioni che forniscono informazioni che cambiano nel tempo
4. **Monitora le prestazioni** dell'Agente per verificare che la cache stia effettivamente migliorando l'esperienza
5. **Bilanciare accuratezza e efficienza**: per dati critici o che cambiano frequentemente, potrebbe essere necessario limitare l'uso della cache

Utilizzando strategicamente la cache delle funzioni, potrai creare Agenti più reattivi e efficienti, migliorando significativamente l'esperienza complessiva dei tuoi utenti.
