Valutazione degli agenti AI dai prompt alle metriche

Autore

Shalini Harkar

Lead AI Advocate

Cosa sono gli agenti AI?

Un agente AI si riferisce a un sistema software capace di svolgere autonomamente attività per conto di un utente o di un altro sistema, sviluppando il proprio workflow e utilizzando gli strumenti esterni necessari.

Gli agenti vanno ben oltre la semplice elaborazione e comprensione del linguaggio. Sono in grado di prendere decisioni, risolvere problemi, interagire con l'ambiente e agire per il perseguimento di obiettivi.

Gli agenti AI vengono ora incorporati in una varietà di soluzioni aziendali, dall'automazione IT e ingegneria del software, alle interfacce conversazionali e all'implementazione della generazione di codice. Guidati da modelli linguistici di grandi dimensioni (LLM), possono comprendere direzioni complesse, scomporle in fasi, interagire con risorse provenienti da fonti esterne e avere la capacità cognitiva di sapere quando distribuire determinati strumenti o servizi per aiutare a raggiungere i compiti.

Perché è importante valutare gli agenti?

La valutazione degli agenti è una procedura importante per la creazione e la distribuzione di sistemi AI autonomi perché misura quanto bene un agente esegue i compiti assegnati, prende decisioni e interagisce con gli utenti o gli ambienti. In questo modo possiamo garantire che gli agenti operino in modo affidabile, efficiente ed etico nei casi d'uso previsti.

I motivi principali per la valutazione degli agenti includono:

  • Verifica funzionale: questa fase aiuta a verificare i comportamenti e le azioni dell'agente in determinate condizioni, nonché il completamento dei suoi obiettivi in vincoli definiti.
  • Ottimizzazione della progettazione: identifica le carenze e le inefficienze nel ragionamento, nella pianificazione o nell'uso degli strumenti da parte dell'agente, consentendoci di migliorare iterativamente l'architettura e il flusso dell'agente.
  • Robustezza: valuta la capacità dell'agente di affrontare casi limite, input o condizioni non ottimali, che possono migliorare la tolleranza ai guasti e la resilienza.
  • Metriche delle prestazioni e delle risorse: l'osservazione di latenza, velocità effettiva, consumo di token, memoria e altre metriche di sistema può essere tracciata in modo da poter determinare le efficienze di tempo di esecuzione e ridurre al minimo i costi operativi.
  • Qualità dell'interazione con l'utente: misura la chiarezza, l'utilità, la coerenza e la pertinenza delle risposte dell'agente come indicatore della soddisfazione degli utenti o dell'efficacia della conversazione.
  • Analisi del completamento degli obiettivi: utilizzando criteri di successo o benchmark specifici basati sulle attività, possiamo valutare con quanta affidabilità e precisione l'agente ha completato i suoi obiettivi.
  • Considerazioni etiche e di sicurezza: gli output dell'agente possono essere valutati in termini di equità, distorsioni, potenziali danni e aderenza a qualsiasi procedura di sicurezza.

Metriche di valutazione per gli agenti AI

La valutazione delle prestazioni di un agente AI utilizza metriche organizzate in diverse classi formali di prestazioni: accuratezza, tempo di risposta (velocità) e costo delle risorse utilizzate. L'accuratezza descrive la capacità dell'agente di fornire le risposte corrette e pertinenti, nonché la capacità dell'agente di completare le funzioni previste. Il tempo di risposta misura la velocità impiegata dall'agente per elaborare l'input e produrre l'output. Ridurre al minimo la latenza è particolarmente importante nei programmi interattivi e nei programmi in tempo reale. Il costo misura le risorse computazionali consumate dall'agente, come l'uso di token, la chiamata a un application programming interface (API) o il tempo di sistema. Queste metriche forniscono linee guida per migliorare le prestazioni del sistema e limitare i costi operativi.

Sebbene metriche chiave come correttezza, utilità e coerenza rientrino nell'accuratezza, il tempo di risposta (latenza) misura metriche tra cui velocità effettiva, latenza media ritardo di timeout. Le metriche dei costi includono l'utilizzo dei token, il tempo di calcolo, il numero di chiamate API e il consumo di memoria.

In questo tutorial esploreremo le metriche chiave di correttezza, utilità e coerenza che rientrano nell'accuratezza.

  • Correttezza: la correttezza valuta se le risposte dell'agente sono effettivamente accurate e logicamente vere dal prompt o dall'input. Questa metrica è spesso la misura più elementare, in particolare per settori come l'assistenza sanitaria, la consulenza legale o l'assistenza tecnica.
  • Utilità: l'utilità valuta quanto sia utile o fruibile la risposta dell'agente rispetto alle intenzioni dell'utente. Anche se una risposta è fattualmente corretta, potrebbe non essere utile se non affronta una soluzione o i prossimi passi.
  • Coerenza: è correlata al flusso, sia logico che narrativo. È importante nelle interazioni a più turni e nelle interazioni in cui il ragionamento viene effettuato in più fasi. La coerenza si riferisce al fatto che ciò che dice l'agente "abbia senso" dall'inizio alla fine.

Svilupperai un agente di viaggio e ne valuterai le prestazioni utilizzando un "LLM-as-a-judge".

Prerequisiti

  1. È necessario un account IBM® Cloud per creare un progetto watsonx.ai.

  2. Hai anche bisogno di Python versione 3.12.7

Passaggi

Passaggio 1: configura il tuo ambiente

Sebbene sia possibile scegliere tra diversi strumenti, questo tutorial illustra come configurare un account IBM per l'utilizzo di un Jupyter Notebook.

  1. Accedi a watsonx.ai utilizzando il tuo account IBM Cloud.

  2. Crea un progetto watsonx.aiPuoi ottenere l'ID del tuo progetto direttamente dal progetto stesso. Fai clic sulla scheda Gestisci. Quindi copia l'ID del progetto dalla sezione Dettagli della pagina Generale. Questo ID è necessario per questo tutorial.

  3. Crea un Jupyter NotebookQuesto passaggio apre un ambiente Jupyter Notebook in cui puoi copiare il codice di questo tutorial. In alternativa, puoi scaricare questo notebook nel tuo sistema locale e caricarlo nel tuo progetto watsonx.ai come risorsa. Per visualizzare altri tutorial su IBM Granite, consulta la IBM Granite Community.

Passaggio 2: configura un'istanza di watsonx.ai Runtime e una chiave API

  1. Crea un'istanza di servizio watsonx.ai Runtime (seleziona l'area geografica appropriata e scegli il piano Lite, che è un'istanza gratuita).

  2. Genera una chiave API (application programming interface).

  3. Associa l'istanza del servizio watsonx.ai Runtime al progetto che hai creato in watsonx.ai.

Passaggio 3: installa e importa le librerie pertinenti e configura le tue credenziali

Abbiamo bisogno di alcune librerie e moduli per questo tutorial. Assicurati di importare i seguenti elementi e, se non sono installati, una rapida installazione tramite pip risolverà il problema.

Nota, questo tutorial è stato creato usando Python 3.12.7.

!pip install -q langchain langchain-ibm langchain_experimental langchain-text-splitters langchain_chroma transformers bs4 langchain_huggingface sentence-transformers
import os
import getpass
import requests
import random
import json
from typing import Type
from typing import Dict, List
from langchain_ibm import WatsonxLLM
from langchain_ibm import ChatWatsonx
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from langchain_ibm import WatsonxEmbeddings
from langchain.vectorstores import Chroma
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.agents.agent_types import AgentType
from langchain.prompts import ChatPromptTemplate
from langchain.evaluation import load_evaluator
from langchain.agents import initialize_agent, Tool

Per impostare le nostre credenziali, abbiamo bisogno dei codici WATSONX_APIKEY e WATSONX_PROJECT_ID generati nel passaggio 1. Imposteremo anche l'URL che funge da endpoint dell'API. L'endpoint API può variare a seconda della posizione geografica.

WATSONX_APIKEY = getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): ")
WATSONX_PROJECT_ID = getpass.getpass("Please enter your project ID (hit enter): ")
URL = "https://us-south.ml.cloud.ibm.com"

Passaggio 4: inizializza il tuo LLM

Per questo tutorial utilizzeremo il modello Instruct Granite 3 -8B. Per inizializzare l'LLM, dobbiamo impostare i parametri del modello. Per maggiori informazioni su questi parametri del modello, come i limiti minimo e massimo del token, fare riferimento alla documentazione.

llm = ChatWatsonx(model_id="ibm/granite-3-8b-instruct",
url = URL,
apikey = WATSONX_APIKEY,
project_id = WATSONX_PROJECT_ID,
params = {"decoding_method": "greedy","temperature": 0, "min_new_tokens": 5,
"max_new_tokens": 2000})

Passaggio 5: crea un agente assistente di viaggio (compagno di viaggio)

Creiamo un assistente di viaggio che aiuti gli utenti nella pianificazione e nella ricerca dei viaggi.

Creeremo una semplice applicazione per l'assistente di viaggio in grado di recuperare informazioni sulle compagnie aeree e sugli hotel in risposta alle richieste degli utenti connettendosi a un'API di viaggio esterna. Per integrarci con gli agenti AI per la pianificazione dinamica dei viaggi, avremo una funzione semplice che effettua richieste API e le racchiude in uno strumento.

def travel_api(query: str) -> str:
# Example of connecting to a real travel API
response = requests.get("https://www.partners.skyscanner.net", params={"query": query})
if response.status_code == 200:
return response.json().get("result", "No results found.")
return "Error contacting travel API."

travel_tool = Tool(
name="TravelPlannerTool",
func=travel_api,
description="Connects to a travel API to find flights and hotels for a given city and date"
)
agent = initialize_agent(
tools=[travel_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors= "Check your output and make sure it conforms! Do not output an action and a final answer at the same time."
)
query = "What are the best places to visit in India during winters?"
response = agent.invoke(query)
print("\n--- Travel Agent Response ---")
print(response)

Passaggio 6: esegui una valutazione e ottieni il punteggio

Infine, eseguiamo una valutazione e stampiamone il punteggio finale. Per valutare l'assistente di viaggio utilizzando tre criteri distinti (correttezza, utilità e coerenza), viene sviluppato un prompt di valutazione strutturato per un LLM valutatore.

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

evaluation_prompt = PromptTemplate(
input_variables=["input", "prediction"],
template="""
You are an evaluation agent.

### User Input:
{input}

### Agent's Response:
{prediction}

Evaluate this response based on:
- Correctness (Is the information factually accurate?)
- Helpfulness (Is it useful and actionable?)
- Coherence (Is it well-written and logically structured?)

Reply in this format:
Correctness: <score>/5 - <reason>
Helpfulness: <score>/5 - <reason>
Coherence: <score>/5 - <reason>
"""
)
eval_input = evaluation_prompt.format(input=query, prediction=response)
evaluation_result = agent.invoke(eval_input)

L'output mostra sia una valutazione qualitativa che quantitativa dell'assistente di viaggio generato utilizzando tre criteri: correttezza, utilità e coerenza.

Analizziamo il significato di ogni punteggio e metrica nel contesto dell'output dell'agente:

  • La correttezza ci dice quanto sia precisa e logica la risposta. Nell'esempio precedente, il contenuto fattuale è corretto, quindi il punteggio di correttezza è (5 su 5).
  • L'utilità mostra quanto sia utile e pertinente la risposta alle esigenze dell'utente misurata in base alla sua disponibilità. Un punteggio di (5 su 5) in questo scenario significa che il piano di viaggio AI è utile e progettato con cura. Il punteggio indica che è utile per chi cerca per la prima volta i posti migliori da visitare in India durante l'inverno.
  • La coerenza indica se l'assistente è organizzato in modo logico e di facile lettura. Il nostro esempio ha ricevuto un punteggio di coerenza elevato di 5.

 

Conclusioni

Quando si valuta la capacità di un agente di soddisfare realmente le esigenze degli utenti, criteri come la coerenza, l'utilità e l'accuratezza giocano un ruolo centrale. Indipendentemente dal fatto che si lavori con OpenAI, IBM Granite o altri modelli LLM-as-a-service, è fondamentale affidarsi a metodi di valutazione strutturati, come dataset di valutazione, benchmark, annotazioni e dati di base, per testare approfonditamente gli output finali. In casi d'uso pratici come chatbot o supporto clienti basato su RAG, i framework open source come LangGraph sono inestimabili. Supportano l'automazione scalabile, il routing affidabile e consentono cicli di iterazione rapidi. Queste tecnologie semplificano anche l'alimentazione dei sistemi di AI generativa, il debug dei comportamenti e l'ottimizzazione e la configurazione di workflow complessi. Definendo attentamente i casi di test e tenendo d'occhio le metriche di osservabilità come costo di calcolo, prezzo e latenza, i team possono migliorare costantemente le performance del sistema. In definitiva, l'applicazione di un approccio di valutazione affidabile e ripetibile conferisce rigore ai sistemi di machine learning e ne rafforza l'affidabilità nel tempo.

Soluzioni correlate
Agenti AI per il Business

Crea, implementa e gestisci assistenti e agenti AI potenti che automatizzano workflow e processi con l'AI generativa.

    Scopri watsonx Orchestrate
    Soluzioni per agenti AI IBM

    Costruisci il futuro della tua azienda con soluzioni AI di cui puoi fidarti.

    Esplora le soluzioni basate su agenti AI
    Servizi AI di IBM Consulting

    I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.

    Esplora i servizi di intelligenza artificiale
    Prossimi passi

    Sia che tu scelga di personalizzare app e competenze precostituite o di creare e implementare servizi di agenti personalizzati utilizzando uno studio di AI, la piattaforma IBM watsonx è la soluzione che fa per te.

    Scopri watsonx Orchestrate Esplora watsonx.ai