Passa al contenuto principale

Concetti e Architettura LLMaaS

Panoramica

Il servizio LLMaaS (Large Language Models as a Service) di Cloud Temple fornisce un accesso sicuro e sovrano ai modelli di intelligenza artificiale più avanzati, con la qualificazione SecNumCloud dell'ANSSI.

🏗️ Architettura Tecnica

Infrastruttura Cloud Temple

Architettura Tecnica LLMaaS Cloud Temple

Componenti Principali

1. API Gateway LLMaaS

  • Compatible OpenAI : Integrazione trasparente con l'ecosistema esistente
  • Rate Limiting : Gestione delle quote per livello di fatturazione
  • Load Balancing : Distribuzione intelligente su 12 macchine GPU
  • Monitoring : Metriche in tempo reale e alerting

2. Servizio di Autenticazione

  • Token API sicuri : Rotazione automatica
  • Controllo degli accessi : Permessi granulari per modello
  • Audit trails : Tracciabilità completa degli accessi

🤖 Modelli e Token

Catalogo di Modelli

Catalogo completo : Liste des modèles

Gestione dei Token

Tipi di Token

  • Token di input : Il tuo prompt e contesto
  • Token di output : Risposta generata dal modello
  • Token di sistema : Metadati e istruzioni

Calcolo dei Costi

Chat/Completion = (Tokens entrée × 1.8€/M) + (Tokens sortie × 8€/M) + (Tokens sortie Raisonnement × 8€/M)
Reranking = Documents rerankés × 4€/M
Batch (async) = (Tokens entrée × 0.9€/M) + (Tokens sortie × 4€/M)
Audio (ASR) = 0.01€ / minute de transcription

Ottimizzazione

  • Context window : Riutilizzare le conversazioni per risparmiare
  • Modelli appropriati : Scegliere la dimensione in base alla complessità
  • Max tokens : Limitare la lunghezza delle risposte

Tokenizzazione

# Esempio di stima dei token
def estimate_tokens(text: str) -> int:
"""Estimation approximative : 1 token ≈ 4 caractères"""
return len(text) // 4

prompt = "Expliquez la photosynthèse"
response_max = 200 # token massimi desiderati

estimated_input = estimate_tokens(prompt) # ~6 token
total_cost = (estimated_input * 1.8 + response_max * 8) / 1_000_000
print(f"Coût estimé: {total_cost:.6f}€")

🔒 Sicurezza e Conformità

Qualificazione SecNumCloud

Il servizio LLMaaS viene elaborato su un'infrastruttura tecnica che beneficia della qualificazione SecNumCloud 3.2 dell'ANSSI, garantendo:

Protezione dei Dati

  • Crittografia end-to-end : TLS 1.3 per tutte le comunicazioni
  • Archiviazione sicura : Dati crittografati a riposo (AES-256)
  • Isolamento : Ambienti dedicati per tenant

Sovranità Digitale

  • Hosting in Francia : Datacenter Cloud Temple certificati
  • Legislazione francese : Conformità GDPR nativa
  • Nessuna esposizione : Nessun trasferimento verso cloud esteri

Audit e Tracciabilità

  • Log completi : Tutte le interazioni tracciate
  • Ritenzione : Conservazione in conformità alle politiche legali
  • Conformità : Report di audit disponibili

Controlli di Sicurezza

Controlli di Sicurezza LLMaaS

Sicurezza dei Prompt

L'analisi dei prompt è una funzionalità di sicurezza nativa e integrata nella piattaforma LLMaaS. Abilitata per impostazione predefinita, ha lo scopo di rilevare e prevenire i tentativi di "jailbreak" o di iniezione di prompt malevoli prima ancora che raggiungano il modello. Questa protezione si basa su un approccio multilivello.

Contattare il supporto per la disattivazione

È possibile disattivare questa analisi di sicurezza per casi d'uso molto specifici, sebbene non sia consigliato. Per qualsiasi domanda in merito o per richiedere una disattivazione, si prega di contattare il supporto Cloud Temple.

1. Analisi Strutturale (check_structure)

  • Verifica JSON malformato : Il sistema rileva se il prompt inizia con un { e tenta di eseguirne il parsing come JSON. Se il parsing ha successo e il JSON contiene parole chiave sospette (es: "system", "bypass"), o se il parsing fallisce in modo inaspettato, ciò può indicare un tentativo di iniezione.
  • Normalizzazione Unicode : Il prompt viene normalizzato utilizzando unicodedata.normalize('NFKC', prompt). Se il prompt originale differisce dalla sua versione normalizzata, ciò può indicare l'uso di caratteri Unicode ingannevoli (omoglifi) per eludere i filtri. Ad esempio, "аdmin" (cirillico) invece di "admin" (latino).

2. Rilevamento di Pattern Sospetti (check_patterns)

  • Il sistema utilizza espressioni regolari (regex) per identificare pattern noti di attacchi ai prompt, e questo, in diverse lingue (français, anglais, chinois, japonais).
  • Esempi di pattern rilevati :
    • Comandi di Sistema : Parole chiave come "ignora le istruzioni", "ignore instructions", "忽略指令", "指示を無視".
    • Iniezione HTML : Tag HTML nascosti o malevoli, ad esempio <div caché>, <hidden div>.
    • Iniezione Markdown : Link Markdown malevoli, ad esempio [texte](javascript:...), [text](data:...).
    • Sequenze Ripetute : Ripetizione eccessiva di parole o frasi come "dimentica dimentica dimentica", "forget forget forget".
    • Caratteri Speciali/Misti : Utilizzo di caratteri Unicode insoliti o mescolanza di script per nascondere comandi (ex: "s\u0443stème").

3. Analisi Comportamentale (check_behavior)

  • Il load balancer mantiene uno storico dei prompt recenti.
  • Rilevamento della Frammentazione : Combina i prompt recenti per verificare se un attacco è frammentato su più richieste. Ad esempio, se "ignore" viene inviato in un prompt e "instructions" nel successivo, il sistema può rilevarli insieme.
  • Rilevamento della Ripetizione : Identifica se lo stesso prompt viene ripetuto in modo eccessivo. La soglia attuale per il rilevamento della ripetizione è di 30 prompt consecutivi identici.

Questo approccio multilivello consente di rilevare un'ampia gamma di attacchi ai prompt, dai più semplici ai più sofisticati, combinando l'analisi statica del contenuto e l'analisi dinamica del comportamento.

📈 Prestazioni e Scalabilità

Monitoraggio in Tempo Reale

Accesso tramite Console Cloud Temple :

  • Metriche di utilizzo per modello
  • Grafici di latenza e throughput
  • Avvisi sulle soglie di prestazioni
  • Cronologia delle richieste

🌐 Integrazione ed Ecosistema

Compatibilità OpenAI

Il servizio LLMaaS è compatibile con l'API OpenAI :

# Migrazione trasparente
from openai import OpenAI

# Prima (OpenAI)
client_openai = OpenAI(api_key="sk-...")

# Dopo (Cloud Temple LLMaaS)
client_ct = OpenAI(
api_key="votre-token-cloud-temple",
base_url="https://api.ai.cloud-temple.com/v1"
)

# Codice identico!
response = client_ct.chat.completions.create(
model="gpt-oss:120b", # Modello Cloud Temple
messages=[{"role": "user", "content": "Bonjour"}]
)

Ecosistema Supportato

Frameworks IA

  • LangChain : Integrazione nativa
  • Haystack : Pipeline di documenti
  • Semantic Kernel : Orchestrazione Microsoft
  • AutoGen : Agent conversazionali

Strumenti di Sviluppo

  • Jupyter : Notebooks interattivi
  • Streamlit : Applicazioni web rapide
  • Gradio : Interfacce utente IA
  • FastAPI : API backend

Piattaforme No-Code

  • Zapier : Automazioni
  • Make : Integrazioni visive
  • Bubble : Applicazioni web

🔄 Ciclo di Vita dei Modelli

Aggiornamento dei Modelli

Ciclo di Vita dei Modelli LLMaaS

Politica di Versioning

  • Modelli stabili : Versioni fisse disponibili per 6 mesi
  • Modelli sperimentali : Versioni beta per early adopters
  • Deprecazione : Preavviso di 3 mesi prima della rimozione
  • Migrazione : Servizi professionali disponibili per garantire le vostre transizioni

Pianificazione Preventiva del Ciclo di Vita

La tabella sottostante presenta il ciclo di vita preventivo dei nostri modelli. L'ecosistema dell'IA generativa evolve molto rapidamente, il che spiega cicli di vita che possono sembrare brevi. La nostra volontà è di fornirvi accesso ai modelli più performanti del momento.

Tuttavia, ci impegniamo a preservare nel tempo i modelli più utilizzati dai nostri clienti. Per casi d'uso critici che richiedono stabilità a lungo termine, sono possibili fasi di supporto esteso. Non esitate a contattare il supporto per discutere delle vostre esigenze specifiche.

Questa pianificazione è fornita a titolo indicativo ed è riveduta all'inizio di ogni trimestre.

  • DMP (Data di Messa in Produzione) : Data in cui il modello diventa disponibile in produzione.
  • DSP (Data di Fine Supporto) : Data prevista a partire dalla quale il modello non sarà più mantenuto. Viene rispettato un preavviso di 3 mesi prima di qualsiasi rimozione effettiva.
ModelloEditoreFaseDMPDSPLTSMigrazione consigliata
cogito:32bDeep CogitoProduzione13/06/202530/06/2026Nogpt-oss:120b
embeddinggemma:300mGoogleProduzione10/09/202530/06/2026No
gemma3:27bGoogleProduzione13/06/202530/06/2026No
glm-4.7-flash:30bZhipu AIProduzione22/01/202630/06/2026No
ministral-3:14bMistral AIProduzione30/12/202530/06/2026No
ministral-3:3bMistral AIProduzione30/12/202530/06/2026No
ministral-3:8bMistral AIProduzione30/12/202530/06/2026No
olmo-3:32bAllenAIProduzione30/12/202530/06/2026No
olmo-3:7bAllenAIProduzione30/12/202530/06/2026No
qwen3-omni:30bQwen TeamProduzione05/01/202630/06/2026No
qwen3-vl:2bQwen TeamProduzione30/12/202530/06/2026No
qwen3-vl:32bQwen TeamProduzione30/12/202530/06/2026No
qwen3-vl:8bQwen TeamProduzione05/01/202630/06/2026No
rnj-1:8bEssential AIProduzione30/12/202530/06/2026No
devstral-small-2:24bMistral AI & All Hands AIProduzione02/02/202630/09/2026No
gemma4:e2bGoogleProduzione19/04/202630/09/2026No
gemma4:e4bGoogleProduzione19/04/202630/09/2026No
gpt-oss:20bOpenAIProduzione08/08/202530/09/2026No
mistral-small3.2:24bMistral AIProduzione23/06/202530/09/2026No
qwen3.5:4bQwen TeamProduzione24/03/202630/09/2026No
qwen3.5:9bQwen TeamProduzione24/03/202630/09/2026No
bge-reranker-largeBAAIProduzione13/05/202630/12/2026No
deepseek-ocrDeepSeek AIProduzione22/11/202530/12/2026No
functiongemma:270mGoogleProduzione30/12/202530/12/2026No
gemma4:31bGoogleProduzione14/04/202630/12/2026No
granite3-guardian:2bIBMProduzione13/06/202530/12/2026No
granite3-guardian:8bIBMProduzione13/06/202530/12/2026No
granite3.2-vision:2bIBMProduzione13/06/202530/12/2026No
mistral-small4:119bMistral AIProduzione13/05/202630/12/2026No
nemotron-3-super:120bNVIDIAProduzione01/04/202630/12/2026No
nemotron-cascade:30bNVIDIAProduzione01/04/202630/12/2026No
nemotron3-nano:30bNVIDIAProduzione04/01/202630/12/2026No
qwen-coder-next:80bQwen TeamProduzione04/02/202630/12/2026No
qwen3-embedding:0.6bQwen TeamProduzione14/05/202630/12/2026No
qwen3-embedding:4bQwen TeamProduzione14/05/202630/12/2026No
qwen3-embedding:8bQwen TeamProduzione14/05/202630/12/2026No
qwen3-next:80bQwen TeamProduzione02/02/202630/12/2026No
qwen3-reranker:0.6bQwen TeamProduzione13/05/202630/12/2026No
qwen3-reranker:4bQwen TeamProduzione13/05/202630/12/2026No
qwen3-vl:235bQwen TeamProduzione04/01/202630/12/2026No
qwen3-vl:30bQwen TeamProduzione30/12/202530/12/2026No
qwen3-vl:4bQwen TeamProduzione30/12/202530/12/2026No
qwen3.5:0.8bQwen TeamProduzione24/03/202630/12/2026No
qwen3.6:27bQwen TeamProduzione01/05/202630/12/2026No
qwen3.6:35bQwen TeamProduzione01/05/202630/12/2026No
qwen3:0.6bQwen TeamProduzione13/06/202530/12/2026
translategemma:12bGoogleProduzione22/01/202630/12/2026No
translategemma:27bGoogleProduzione22/01/202630/12/2026No
translategemma:4bGoogleProduzione22/01/202630/12/2026No
voxtralMistral AIProduzione01/04/202630/12/2026No
z-image:16bCommunityProduzione01/04/202630/12/2026No
nvidia/llama-nemotron-rerank-vl-1b-v2NVIDIAProduzione13/05/202630/06/2027No
bge-m3:567mBAAIProduzione18/10/202530/12/2027
gpt-oss:120bOpenAIProduzione11/11/202530/12/2027
granite-embedding:278mIBMProduzione13/06/202530/12/2027
llama3.3:70bMetaProduzione13/06/202530/12/2027
qwen3-2507:235bQwen TeamProduzione04/01/202630/12/2027
qwen3-2507-think:4bQwen TeamProduzione31/08/202530/12/2027

Legenda

  • Phase: Ciclo di vita del modello (Valutazione, Produzione, Deprecato)
  • DMP: Data di Messa in Produzione
  • DSP: Data di Dismissione Prevista
  • LTS: Long Term Support. I modelli LTS beneficiano di una stabilità garantita e di un supporto esteso, ideale per le applicazioni critiche.
  • Migration consigliata: Modello raccomandato per sostituire un modello a fine vita.

Per monitorare lo stato del ciclo di vita in tempo reale, consulta la pagina : LLMaaS Status - Ciclo di vita


Modelli Deprecati

Il mondo degli LLM evolve molto rapidamente. Per garantire ai nostri clienti l'accesso alle tecnologie più performanti, depreciamo regolarmente i modelli che non sono più all'altezza degli standard attuali o che non vengono utilizzati. I modelli elencati di seguito non sono più disponibili sulla piattaforma pubblica. Possono tuttavia essere riattivati per progetti specifici, su richiesta.

ModelloFaseData di Deprecazione
devstral:24bDeprecato30/03/2026
granite3.1-moe:2bDeprecato30/03/2026
granite4-small-h:32bDeprecato15/05/2026
granite4-tiny-h:7bDeprecato15/05/2026
medgemma:27bDeprecato15/05/2026
qwen3-2507-gptq:235bDeprecato15/05/2026
qwen3-coder:30bDeprecato30/03/2026
qwen3:30b-a3bDeprecato30/03/2026
deepseek-r1:14bDeprecato30/12/2025
deepseek-r1:32bDeprecato30/12/2025
gemma3:1bDeprecato30/12/2025
gemma3:4bDeprecato30/12/2025
qwen3:1.7bDeprecato30/12/2025
qwen3:14bDeprecato30/12/2025
qwen3:4bDeprecato30/12/2025
qwen3:8bDeprecato30/12/2025
qwen3:32bDeprecato30/12/2025
qwq:32bDeprecato30/12/2025
granite3.3:2bDeprecato30/12/2025
granite3.3:8bDeprecato30/12/2025
mistral-small3.1:24bDeprecato30/12/2025
qwen2.5vl:32bDeprecato30/12/2025
qwen2.5vl:3bDeprecato30/12/2025
qwen2.5vl:72bDeprecato30/12/2025
qwen2.5vl:7bDeprecato30/12/2025
cogito:8bDeprecato30/12/2025
deepcoder:14bDeprecato30/12/2025
cogito:3bDeprecato30/12/2025
qwen3:235bDeprecato22/11/2025
qwen3-2507-think:30b-a3bDeprecato14/11/2025
gemma3:12bDeprecato21/11/2025
cogito:14bDeprecato17/10/2025
deepseek-r1:70bDeprecato17/10/2025
granite3.1-moe:3bDeprecato17/10/2025
llama3.1:8bDeprecato17/10/2025
phi4-reasoning:14bDeprecato17/10/2025
qwen2.5:0.5bDeprecato17/10/2025
qwen2.5:1.5bDeprecato17/10/2025
qwen2.5:14bDeprecato17/10/2025
qwen2.5:32bDeprecato17/10/2025
qwen2.5:3bDeprecato17/10/2025
deepseek-r1:671bDeprecato17/10/2025

💡 Buone Pratiche

Per sfruttare al meglio l'API LLMaaS, è essenziale adottare strategie di ottimizzazione dei costi, delle prestazioni e della sicurezza.

Ottimizzazione dei Costi

Il controllo dei costi si basa su un utilizzo intelligente dei token e dei modelli.

  1. Scelta del Modello : Non utilizzare un modello eccessivamente potente per un compito semplice. Un modello più grande è più capace, ma è anche più lento e consuma molta più energia, il che impatta direttamente sul costo. Adatta la dimensione del modello alla complessità della tua esigenza per un equilibrio ottimale.

    Ad esempio, per elaborare un milione di token :

    • Gemma 3 1B consuma 0.15 kWh.

    • Llama 3.3 70B consuma 11.75 kWh, ovvero 78 volte di più.

      # Per una classificazione del sentiment, un modello compatto è sufficiente ed economico.
      if task == "sentiment_analysis":
      model = "qwen3.5:0.8b"
      # Per un'analisi giuridica complessa, è necessario un modello più grande.
      elif task == "legal_analysis":
      model = "gpt-oss:120b"
  2. Gestione del Contesto : La cronologia della conversazione (messages) viene inviata a ogni chiamata, consumando token in input. Per conversazioni lunghe, valuta strategie di riassunto o di finestra scorrevole per conservare solo le informazioni pertinenti.

    # Per una conversazione lunga, è possibile riassumere i primi scambi.
    messages = [
    {"role": "system", "content": "Vous êtes un assistant IA."},
    {"role": "user", "content": "Résumé des 10 premiers échanges..."},
    {"role": "assistant", "content": "Ok, j'ai le contexte."},
    {"role": "user", "content": "Voici ma nouvelle question."}
    ]
  3. Limitazione dei Token in Output : Utilizza sempre il parametro max_tokens per evitare risposte eccessivamente lunghe e costose. Imposta un limite ragionevole in base a ciò che ti aspetti.

    # Richiedere un riassunto di massimo 100 parole.
    response = client.chat.completions.create(
    model="gpt-oss:120b",
    messages=[{"role": "user", "content": "Résume ce document..."}],
    max_tokens=150, # Margine di sicurezza per ~100 parole
    )

Prestazioni

La reattività della tua applicazione dipende dal modo in cui gestisci le chiamate all'API.

  1. Richieste Asincrone : Per elaborare più richieste senza attendere il completamento di ciascuna, utilizza chiamate asincrone. Questo è particolarmente utile per le applicazioni backend che gestiscono un elevato volume di richieste simultanee.

    import asyncio
    from openai import AsyncOpenAI

    client = AsyncOpenAI(api_key="...", base_url="...")

    async def process_prompt(prompt: str):
    # Elabora una singola richiesta in modo asincrono
    response = await client.chat.completions.create(model="gpt-oss:120b", messages=[{"role": "user", "content": prompt}])
    return response.choices[0].message.content

    async def batch_requests(prompts: list):
    # Avvia più task in parallelo e attende il loro completamento
    tasks = [process_prompt(p) for p in prompts]
    return await asyncio.gather(*tasks)
  2. Streaming per l'Esperienza Utente (UX) : Per le interfacce utente (chatbot, assistenti), lo streaming è essenziale. Consente di visualizzare la risposta del modello parola per parola, offrendo un'impressione di reattività immediata invece di attendere la risposta completa.

    # Visualizza la risposta in tempo reale in un'interfaccia utente
    response_stream = client.chat.completions.create(
    model="gpt-oss:120b",
    messages=[{"role": "user", "content": "Raconte-moi une histoire."}],
    stream=True
    )
    for chunk in response_stream:
    if chunk.choices[0].delta.content:
    # Visualizza il frammento di testo nell'interfaccia utente
    print(chunk.choices[0].delta.content, end="", flush=True)

Sicurezza

La sicurezza della tua applicazione è fondamentale, soprattutto quando si gestiscono gli input degli utenti.

  1. Validazione e Pulizia degli Input (Sanitization) : Non fidatevi mai degli input degli utenti. Prima di inviarli all'API, sanizzateli per rimuovere qualsiasi codice potenzialmente dannoso o istruzioni di "prompt injection". Limitate inoltre la loro dimensione per evitare abusi.

    def sanitize_input(user_input: str) -> str:
    # Esempio semplice: rimuovere i delimitatori di codice e limitare la lunghezza.
    # Possono essere utilizzate librerie più robuste per una sanitization avanzata.
    cleaned = user_input.replace("`", "").replace("'", "").replace("\"", "")
    return cleaned[:2000] # Limita la dimensione a 2000 caratteri
  2. Gestione Robusta degli Errori : Incorniciate sempre le chiamate API in blocchi try...except per gestire gli errori di rete, gli errori dell'API (es: 429 Rate Limit, 500 Internal Server Error) e fornire un'esperienza utente degradata ma funzionale.

    from openai import APIError, APITimeoutError

    try:
    response = client.chat.completions.create(...)
    except APITimeoutError:
    # Gestire il caso in cui la richiesta impiega troppo tempo
    return "Le service prend plus de temps que prévu, veuillez réessayer."
    except APIError as e:
    # Gestire gli errori specifici dell'API
    logger.error(f"Erreur API LLMaaS: {e.status_code} - {e.message}")
    return "Désolé, une erreur est survenue avec le service d'IA."
    except Exception as e:
    # Gestire tutti gli altri errori (rete, ecc.)
    logger.error(f"Une erreur inattendue est survenue: {e}")
    return "Désolé, une erreur inattendue est survenue."