E-learning: IA, LLM, MCP e Tensori

Concetti pratici con esempi Python eseguibili in questa pagina.

Gli esempi sono predefiniti ed eseguiti sul server per mantenere sicurezza e prevedibilita.

Requirements for full ML examples

pip install -r requirements.txt
# Includes: torch, tensorflow-cpu
Academy tracks
SQL e Database — Corso Completo Analisi dei Dati con Python — Corso Professionale Python Fundamentals Machine Learning with Python Django Web Development

IA (Intelligenza Artificiale)

L'IA consente alle macchine di svolgere compiti che normalmente richiedono intelligenza umana, come classificazione e previsione.

# Simple threshold classifier
loans = [1200, 3400, 900, 5100, 2200]
threshold = 2500
labels = ["high" if x >= threshold else "low" for x in loans]
print("Loans:", loans)
print("Risk labels:", labels)
Passo dopo passo
  1. Define a rule and a threshold.
  2. Compute one label per observation.
  3. Compare output labels with your expected risk classes.
  4. This is a deterministic classifier baseline before neural models.
Matematica dietro
y = 1 if x >= t else 0
Output atteso: Risk labels: ['low', 'high', 'low', 'high', 'low']

LLM (Large Language Model)

Un LLM e un modello linguistico addestrato su grandi volumi di testo per generare, riassumere e trasformare contenuti.

# Tiny toy language model with bigram counts
text = "ai helps teams make better decisions with data"
words = text.split()
bigrams = {}
for i in range(len(words) - 1):
    pair = (words[i], words[i + 1])
    bigrams[pair] = bigrams.get(pair, 0) + 1
print("Bigrams:")
for pair, count in sorted(bigrams.items()):
    print(f"{pair}: {count}")
Passo dopo passo
  1. Split text into tokens.
  2. Count each adjacent token pair.
  3. Use counts to estimate next-word likelihood.
  4. This is the conceptual bridge to autoregressive LLM decoding.
Matematica dietro
P(w_t|w_{t-1}) ~= count(w_{t-1}, w_t) / count(w_{t-1})
Output atteso: Bigrammi con coppie di token e conteggi, es: ('ai', 'helps'): 1

MCP (Model Context Protocol)

MCP standardizza il modo in cui gli strumenti forniscono contesto ai modelli, con integrazioni piu sicure e prevedibili.

# MCP-like context payload (tool + request + constraints)
context = {
    "user_intent": "summarize monthly sales",
    "tool": "sql_query",
    "constraints": ["read_only", "tenant_isolation"],
}
print("Context keys:", list(context.keys()))
print("Tool selected:", context["tool"])
Passo dopo passo
  1. Collect user intent.
  2. Attach tool and constraints metadata.
  3. Pass context to model and execute deterministic tool call.
  4. Observe that routing quality depends on context quality.
Matematica dietro
Decision = argmax score(tool_i | context)
Output atteso: Context keys: ['user_intent', 'tool', 'constraints'] Tool selected: sql_query

Tensori

Un tensore e una struttura n-dimensionale usata per rappresentare dati in IA e deep learning (vettori, matrici e volumi).

# Tensor basics using nested lists (2D matrix)
matrix = [
    [1, 2, 3],
    [4, 5, 6],
]
rows = len(matrix)
cols = len(matrix[0])
col_sums = [sum(matrix[r][c] for r in range(rows)) for c in range(cols)]
print("Shape:", (rows, cols))
print("Column sums:", col_sums)
Passo dopo passo
  1. Represent data as matrix X (rows, cols).
  2. Compute summaries per axis.
  3. Reuse same structure for transformations.
  4. The same concept scales to 3D/4D tensors for batches and channels.
Matematica dietro
X in R^(m x n), s_j = sum_i X_ij
Output atteso: Shape: (2, 3) Column sums: [5, 7, 9]

PyTorch (rete neurale minima)

Esempio semplice con layer lineari per vedere tensori di input e output.

# Minimal PyTorch forward pass
try:
    import torch
except Exception as e:
    print("PyTorch not available:", e)
else:
    torch.manual_seed(0)
    x = torch.randn(4, 3)
    model = torch.nn.Sequential(
        torch.nn.Linear(3, 4),
        torch.nn.ReLU(),
        torch.nn.Linear(4, 1),
    )
    y = model(x)
    print("Input shape:", tuple(x.shape))
    print("Output shape:", tuple(y.shape))
    print("First output:", float(y[0, 0]))
Passo dopo passo
  1. Create input tensor x with shape [batch, features].
  2. Apply linear layer, non-linearity, then output layer.
  3. Inspect output shape and first prediction value.
Matematica dietro
y = W2 * ReLU(W1 * x + b1) + b2
Output atteso: Input shape: (4, 3) Output shape: (4, 1) First output: valore numerico

TensorFlow (Keras minimo)

Esempio Sequential semplice per capire l'inferenza su batch.

# Minimal TensorFlow/Keras forward pass
try:
    import tensorflow as tf
except Exception as e:
    print("TensorFlow not available:", e)
else:
    tf.random.set_seed(0)
    x = tf.random.normal((4, 3))
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(4, activation="relu"),
        tf.keras.layers.Dense(1),
    ])
    y = model(x)
    print("Input shape:", x.shape)
    print("Output shape:", y.shape)
    print("First output:", float(y[0, 0]))
Passo dopo passo
  1. Build a Sequential model with Dense layers.
  2. Feed batch tensor and run forward inference.
  3. Read tensor shape and sample output.
Matematica dietro
Dense(x) = activation(x * W + b)
Output atteso: Input shape: (4, 3) Output shape: (4, 1) First output: valore numerico

Mini LLM didattico

Modello linguistico molto piccolo (bigrammi) per insegnare token, logits e probabilita.

# Tiny LLM teaching model (char-level bigram logits)
try:
    import torch
except Exception as e:
    print("PyTorch not available:", e)
else:
    text = "hello llm"
    vocab = sorted(set(text))
    stoi = {c: i for i, c in enumerate(vocab)}
    itos = {i: c for c, i in stoi.items()}

    ids = torch.tensor([stoi[c] for c in text], dtype=torch.long)
    model = torch.nn.Embedding(len(vocab), len(vocab))
    logits = model(ids)
    probs = torch.softmax(logits[-1], dim=-1)

    top_p, top_i = torch.topk(probs, k=min(3, len(vocab)))
    print("Vocab:", vocab)
    print("Last input token:", repr(itos[int(ids[-1])]))
    print("Top next-token probabilities:")
    for p, i in zip(top_p, top_i):
        print(itos[int(i)], round(float(p), 4))
Passo dopo passo
  1. Build a character vocabulary and token IDs.
  2. Use embedding table as learnable logits producer.
  3. Apply softmax and read top-k next-token probabilities.
Matematica dietro
p(next) = softmax(logits_last_token)
Output atteso: Vocab: [...] Last input token: ... Top next-token probabilities: 3 righe token-probabilita

RAG (Retrieval-Augmented Generation)

RAG combina recupero di contesto + generazione per risposte piu accurate e verificabili.

# Tiny RAG demo (keyword overlap retrieval + prompt assembly)
docs = [
    "LGPD requires lawful basis, consent management, and data subject rights.",
    "Dedicated AI servers provide tenant isolation and private GPU workloads.",
    "RAG improves answer grounding by injecting retrieved context into prompts.",
]
query = "How to run AI servers with LGPD compliance?"

q_terms = set(w.strip('.,!?').lower() for w in query.split())
scored = []
for d in docs:
    d_terms = set(w.strip('.,!?').lower() for w in d.split())
    score = len(q_terms & d_terms)
    scored.append((score, d))

scored.sort(reverse=True, key=lambda x: x[0])
top_doc = scored[0][1]
prompt = f"Question: {query}\nContext: {top_doc}\nAnswer:"

print("Query:", query)
print("Top document:", top_doc)
print("Prompt preview:", prompt[:120] + "...")
Passo dopo passo
  1. 1) Indicizza una piccola base di conoscenza (documenti).
  2. 2) Recupera il miglior contesto per la domanda.
  3. 3) Costruisci il prompt finale con domanda + contesto recuperato.
Matematica dietro
argmax_d sim(query, doc_d) -> prompt = [query + top_doc]
Output atteso: Query: ... Top document: ... Prompt preview: ...

Servizi AI dedicati

Server AI dedicati: GPU privata, isolamento tenant, monitoraggio, SLA e MLOps.

LGPD by design: minimizzazione dati, retention policy, audit trail, consenso e diritto alla cancellazione.

Possiamo distribuire il tuo AI server dedicato con conformita LGPD.

Contact