Indice
  1. Passo 1: Richiamo del database
  2. Passo 2: Creazione degli strumenti
  3. Passo 3: Impostazione del modello
  4. Passo 4: Assemblaggio dell’agente
  5. Esempio di implementazione
  6. Definizione dell’agente AI
  7. Test dell’agente
  8. Conclusione

In questo articolo, vedremo come costruire un agente AI turistico che si occupa di fornire informazioni su Roma. Questa guida è utile per chi desidera avere un assistente virtuale che possa rispondere a domande turistiche e metereologiche nella Capitale, rendendo più semplice la pianificazione di una visita alla città eterna.

Passo 1: Richiamo del database

Il primo passo consiste nell’accesso al database precedentemente creato. Utilizzeremo un embedder per garantire che le distanze tra i vari elementi siano calcolate in modo coerente. È fondamentale che l’integrazione avvenga correttamente per un funzionamento fluido dell’agente.

Passo 2: Creazione degli strumenti

Successivamente, è necessario definire due strumenti principali:

  • Strumento di recupero: questo strumento interagisce con il database e ci consente di ottenere informazioni su Roma, i suoi monumenti e la sua storia.
  • Strumento meteorologico: serve a ottenere dati in tempo reale sulle condizioni meteorologiche in città, utile per i visitatori.

Passo 3: Impostazione del modello

Proseguiamo scegliendo il modello da utilizzare per l’agente. Questo è un passo cruciale, poiché il modello determina come l’agente elaborerà le informazioni.

Passo 4: Assemblaggio dell’agente

Ora che abbiamo configurato i nostri strumenti e il modello, possiamo assemblare l’agente. Dovremo integrare il modello, gli strumenti e altri parametri specifici per garantirne un’adeguata funzionalità.

Esempio di implementazione

Di seguito è riportato un esempio pratico di come implementare un agente AI turistico:

from dataclasses import dataclass
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain.tools import tool
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
import requests

# Configurazione degli embeddings
embeddings = OpenAIEmbeddings(api_key='YOUR_API_KEY')

# Lettura del database
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)
retriever = db.as_retriever(search_kwargs={"k": 3})

# Creazione dello strumento per la ricerca
tool_roma = create_retriever_tool(
    retriever,
    name="search_rome_art_history_culture",
    description='Consulta le informazioni su Roma e i suoi monumenti.'
)

@tool
def get_rome_weather() -> str:
    """Restituisce il meteo attuale di Roma."""
    lat, lon = 41.8919, 12.5113
    url = f"https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}¤t_weather=true"
    
    try:
        response = requests.get(url)
        data = response.json()
        if "current_weather" in data:
            temp = data["current_weather"]["temperature"]
            wind = data["current_weather"]["windspeed"]
            return f"A Roma ci sono attualmente {temp}°C con una velocità del vento di {wind} km/h."
        else:
            return "Non sono riuscito a recuperare i dati meteo."
    except Exception as e:
        return f"Errore nella chiamata API: {e}"

Definizione dell’agente AI

Adesso possiamo definire il nostro agente AI:

model = init_chat_model(
    "gpt-5.4-mini-2026-03-17",
    temperature=0,
    api_key='YOUR_API_KEY'
)

PROMPT = """
Sei un assistente turistico specializzato su Roma.
Utilizza i tool per fornire informazioni specifiche.
"""
agent = create_agent(
    model=model,
    system_prompt=PROMPT,
    tools=[tool_roma, get_rome_weather]
)

Test dell’agente

Ora è il momento di mettere alla prova il nostro agente. Ecco alcuni esempi di domande:

TU: Chi è il papa?
A.I.: Mi dispiace, questo è un servizio turistico riguardante Roma. Chiedi informazioni sui monumenti o sugli eventi a Roma.
==============================
TU: Che tempo fa oggi a Roma?
A.I.: A Roma ci sono attualmente 20.2°C con una velocità del vento di 9.0 km/h.
==============================
TU: Qual è la storia del Colosseo?
A.I.: Mi dispiace, questo è un servizio turistico riguardante Roma. Chiedi informazioni sui monumenti o sugli eventi a Roma.

Come dimostrato, l’agente risponde adeguatamente alle domande pertinenti e rifiuta quelle non correlate. Questo approccio garantisce che gli utenti ricevano informazioni utili senza divagazioni.

Conclusione

Creare un agente AI turistico per Roma è un processo interessante e utile, che può migliorare notevolmente l’esperienza dei visitatori. Assicurati di personalizzare le risposte e di affinare gli strumenti per ottimizzarne le performance. Buona fortuna con il tuo progetto!