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!