E-learning: IA, LLM, MCP y Tensores

Conceptos practicos con ejemplos Python ejecutables en esta pagina.

Los ejemplos son predefinidos y se ejecutan en el servidor para mantener seguridad y previsibilidad.

Requirements for full ML examples

pip install -r requirements.txt
# Includes: torch, tensorflow-cpu
Academy tracks
SQL y Bases de Datos — Curso Completo Análisis de Datos con Python — Curso Profesional Python Fundamentals Machine Learning with Python Django Web Development

IA (Inteligencia Artificial)

La IA permite que las maquinas realicen tareas que normalmente requieren inteligencia humana, como clasificacion y prediccion.

# 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)
Paso a paso
  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 detras
y = 1 if x >= t else 0
Salida esperada: Risk labels: ['low', 'high', 'low', 'high', 'low']

LLM (Large Language Model)

Un LLM es un modelo de lenguaje entrenado con grandes volumenes de texto para generar, resumir y transformar contenido.

# 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}")
Paso a paso
  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 detras
P(w_t|w_{t-1}) ~= count(w_{t-1}, w_t) / count(w_{t-1})
Salida esperada: Bigramas con pares de tokens y conteos, ej: ('ai', 'helps'): 1

MCP (Model Context Protocol)

MCP estandariza como las herramientas entregan contexto a los modelos, con integraciones mas seguras y predecibles.

# 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"])
Paso a paso
  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 detras
Decision = argmax score(tool_i | context)
Salida esperada: Context keys: ['user_intent', 'tool', 'constraints'] Tool selected: sql_query

Tensores

Un tensor es una estructura n-dimensional para representar datos en IA y deep learning (vectores, matrices y volumenes).

# 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)
Paso a paso
  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 detras
X in R^(m x n), s_j = sum_i X_ij
Salida esperada: Shape: (2, 3) Column sums: [5, 7, 9]

PyTorch (red neuronal minima)

Ejemplo simple con capas lineales para ver tensores de entrada y salida.

# 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]))
Paso a paso
  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 detras
y = W2 * ReLU(W1 * x + b1) + b2
Salida esperada: Input shape: (4, 3) Output shape: (4, 1) First output: valor numerico

TensorFlow (Keras minimo)

Ejemplo Sequential sencillo para entender inferencia por lotes.

# 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]))
Paso a paso
  1. Build a Sequential model with Dense layers.
  2. Feed batch tensor and run forward inference.
  3. Read tensor shape and sample output.
Matematica detras
Dense(x) = activation(x * W + b)
Salida esperada: Input shape: (4, 3) Output shape: (4, 1) First output: valor numerico

Mini LLM pedagogico

Modelo de lenguaje muy pequeno (bigramas) para ensenar tokens, logits y probabilidades.

# 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))
Paso a paso
  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 detras
p(next) = softmax(logits_last_token)
Salida esperada: Vocab: [...] Last input token: ... Top next-token probabilities: 3 lineas token-probabilidad

RAG (Retrieval-Augmented Generation)

RAG combina recuperacion de contexto + generacion para respuestas mas precisas y auditables.

# 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] + "...")
Paso a paso
  1. 1) Indexa una pequena base de conocimiento (documentos).
  2. 2) Recupera el mejor contexto para la consulta.
  3. 3) Construye el prompt final con pregunta + contexto recuperado.
Matematica detras
argmax_d sim(query, doc_d) -> prompt = [query + top_doc]
Salida esperada: Query: ... Top document: ... Prompt preview: ...

Servicios IA dedicados

Servidores IA dedicados: GPU privada, aislamiento por tenant, monitoreo, SLA y MLOps.

LGPD by design: minimizacion de datos, retention policy, auditoria, consentimiento y derecho al borrado.

Podemos desplegar su AI server dedicado con cumplimiento LGPD.

Contact