# Agente intelligente

L'agente è una qualunque entità in grado di percepire l'ambiente che lo circonda attraverso dei sensori e di eseguire delle azioni attraverso degli attuatori. Ad esempio, in un essere umano alcuni sensori sono gli occhi e le orecchie, mentre gli attuatori possono essere le mani, i piedi o più in generale i muscoli.
Nel campo dell'Intelligenza artificiale un obiettivo fondamentale è la realizzazione degli agenti intelligenti (in sigla AI), anche noti come agenti razionali. Nella fattispecie un agente si definisce intelligente se fa la cosa giusta al momento giusto.
Per poter stabilire questo occorre fornire una qualche misura delle prestazioni. In particolare è importante definire il come e il quando eseguire la valutazione delle azioni. Perciò si rende necessario un modello di successo, stabilito a priori, con il quale confrontare i risultati ottenuti.
Supponiamo, ad esempio, di avere diversi agenti che risolvono tutti una copia dello stesso puzzle. In questo caso una misura del successo potrebbe essere il numero di pezzi incastrati assieme (definizione del come). Se eseguiamo i test sulle prestazioni dopo pochi minuti, otteniamo risultati migliori per quegli agenti che iniziano veloci. Se però eseguissimo il test dopo un'ora, avremo che magari alcuni agenti, che erano partiti più lentamente, hanno completato una porzione maggiore del puzzle (definizione del quando).
Possiamo quindi definire il comportamento di un agente razionale ideale come quello che: sulla base delle sue percezioni e di eventuali conoscenze predefinite, compie un'azione con lo scopo di massimizzare la misura delle prestazioni. Questo include anche il compiere azioni per acquisire informazioni utili (cioè acquisire conoscenza).
Vediamo ora più da vicino quella che è la struttura di un agente. In generale abbiamo:
agente = software + architettura
Dove l'architettura è solitamente composta dall'hardware che compone l'agente, cioè da ciò che fisicamente esegue i calcoli. Ad esempio un normale computer o un robot. L'algoritmo è il programma che "guida" le azioni dell'agente e che viene eseguito dall'architettura.
Un modo per definire un agente nel suo complesso, è quello di descriverlo in funzione delle sue percezioni, azioni, obiettivi e del suo ambiente. Si parla della cosiddetta descrizione PAGE (Percepts, Actions, Goals, Environment). La descrizione PAGE dell'agente che compone un puzzle potrebbe essere la seguente:
| Percezioni | Azioni | Obiettivi | Ambiente |
| I pixel che compongono le immagini delle tessere del puzzle | Raccogliere tessere e incastrarle fra di loro | Completare il puzzle | Il tavolo con sopra le tessere sparse |

## Agenti intelligenti in Intelligenza Artificiale

Il termine nel senso definito dall'intelligenza artificiale si riferisce a più tipologie di agenti e sotto-agenti. Ad esempio:
* Agenti fisici - Un agente fisico è un'entità che percepisce attraverso sensori e agisce attraverso attuatori.
* Agenti temporali - Un agente temporale può utilizzare informazione basata sul tempo memorizzata per offrire istruzioni o dati a programmi o umani, inoltre ottiene input percettivi per la modifica del comportamento successivo.
Un semplice programma d'agente può essere definito matematicamente come una funzione d'agente che mappa ogni possibile sequenza di percezioni su una possibile azione che l'agente è in grado di eseguire o su un coefficiente, elemento di feedback, funzione o costante che influisce su eventuali azioni:
$f:P*->A$
Il programma dell'agente, invece, mappa ogni possibile percezione su un'azione.
È possibile raggruppare gli agenti in 5 classi in base al grado di intelligenza percepita e alle capacità:
* agenti con riflessi semplici (detti anche puramente reattivi);
* agenti con riflessi basati su modello;
* agenti basati su obiettivo;
* agenti basati su utilità;
* agenti che apprendono;

### Agenti con riflessi semplici (o stimolo-risposta)

Gli agenti con riflessi semplici agiscono solo in base alla percezione corrente. La funzione dell'agente è basata su regole condizione-azione:
Questa funzione d'agente si comporta bene solo nel caso in cui l'ambiente sia completamente osservabile. Alcuni agenti di questo tipo possono inoltre contenere informazioni sul loro stato corrente, tale informazione permette loro di trascurare le condizioni i cui attuatori siano già stati innescati.

### Agenti con riflessi basati su modello (o con stato interno)

Gli agenti con riflessi basati su modello possono gestire ambienti parzialmente osservabili. Il loro stato corrente è memorizzato all'interno dell'agente stesso, ciò permette di mantenere delle strutture dati che descrivono la parte di mondo che non può essere osservata. Tale comportamento richiede informazione su come il mondo funziona e si comporta. Questa informazione aggiuntiva completa il modello di “vista del mondo”.

### Agenti basati su obiettivo

Gli agenti basati su obiettivo sono agenti basati su modello che memorizzano informazione su situazioni desiderabili. Ciò permette all'agente di avere un modo per scegliere tra varie possibilità, selezionando quella che permette di raggiungere il proprio obiettivo.

### Agenti basati su utilità

Gli agenti con obiettivo possono solo distinguere tra stati goal e stati non-goal. È possibile definire una misura su quanto sia desiderabile ogni stato. Questa misura può essere ottenuta attraverso l'uso di una funzione d'utilità che mappa uno stato sul suo valore di utilità.

### Agenti che apprendono

In alcune pubblicazioni l'intelligenza artificiale è indicata come agenti intelligenti autonomi, termine che sta ad indicare l'indipendenza delle loro azioni, e la loro capacità di apprendimento e di adattarsi alle circostanze che evolvono. Secondo Nikola Kasabov i sistemi di intelligenza artificiale devono esibire le seguenti caratteristiche:
* Imparare e migliorare attraverso l'interazione con l'ambiente
* Adattamento online e in real time
* Imparare rapidamente da una grande quantità di dati
* Accogliere le nuove regole di problem solving incrementale
* Avere memoria di immagazzinamento e capacità di recupero
* Avere parametri per rappresentare memoria a breve o lungo termine, età, dimenticanze, ecc.
* Essere capaci di analizzare se stessi in termini di comportamento, errori e successi.
Per eseguire le loro funzioni attivamente, gli agenti intelligenti di oggi sono normalmente raccolti in una struttura gerarchica che contiene molti "sub-agenti". I sub-agenti intelligenti eseguono ed elaborano funzioni a basso livello. Nel loro insieme, l'agente intelligente e i sub-agenti creano un sistema in grado di realizzare compiti difficili o obiettivi con comportamenti e risposte che visualizzano una forma di intelligenza.
Alcuni sub-agenti che possono essere una parte di un agente o possono essere loro stessi un agente intelligente completo sono:
* Agenti temporali (per decisioni basate sul tempo);
* Agenti spaziali (che riguardano la fisica del mondo reale);
* Agenti di Input (che elaborano e danno un senso agli input sensoriali - esempio di rete neurale basata su agenti reti neurali);
* Agenti di elaborazione (risolvere problemi come il riconoscimento vocale);
* Agenti decisionali (orientati al processo decisionale);
* Agenti che apprendono (per la costruzione di strutture di dati e di database di altri agenti intelligenti).

## Agenti intelligenti in computer science

Un numero limitato di agenti, che possono essere classificati come semi-intelligenti per la loro mancanza di complessità, il processo decisionale, la loro limitata visione del mondo e la capacità di apprendimento possono essere trovati in Third Canadian Edition of "Management Information Systems for the Information Age". Questo documento suggerisce che ci sono solo quattro tipologie essenziali di agenti intelligenti:
* Acquirente agenti o shopping bots
* Utente o agenti personali
* Monitoraggio e sorveglianza di agenti
* Agenti Data Mining

## ChatGPT

Alcune estensioni di ChatGPT, una volta ricevuto un input testuale, permettono di eseguire una sequenza di attività in funzione di un obiettivo. Tali programmi sono detti agenti autonomi.