Antes de la sesión

Prepara tu laptop: tu RAM, Python y la carpeta de práctica

En esta lección dejas lista la laptop para el taller: sabes cuánta memoria tienes, tienes Python funcionando, y una carpeta de práctica con los datos de ejemplo y la librería que usa el código.

Antes de empezar, seis ideas que vas a usar toda la sesión. Si vienes del taller de agentes en la terminal, las primeras dos ya las conoces: léelas rápido.

Seis ideas antes de empezar

1. Qué es una terminal

La terminal es una ventana donde escribes órdenes en lugar de hacer clic. Dentro corre un programa llamado shell que lee lo que escribes y lo ejecuta: en Mac suele ser zsh, en Linux bash y en Windows usamos PowerShell. Son como dialectos: la idea es la misma, pero algunas palabras cambian. Por eso más abajo hay un bloque para Mac/Linux y otro para Windows.

2. Qué es un comando y qué es ~

Un comando es una orden de una línea: escribes, presionas Enter y el shell la ejecuta. ~ es el atajo de tu carpeta personal (la que tiene Documentos, Descargas y Escritorio). ~/local-model-workshop quiere decir "la carpeta local-model-workshop dentro de tu carpeta personal".

3. Qué es la memoria RAM y por qué hoy importa tanto

Tu computadora tiene dos tipos de almacenamiento:

  • El disco guarda todo, aunque apagues la computadora, pero es lento de consultar. En la analogía del taller es la bodega.
  • La memoria RAM es donde va lo que estás usando en este momento. Es muy rápida, pero es mucho más chica que el disco y se vacía al apagar. En la analogía es tu cocina.

Un modelo de lenguaje vive en el disco como un archivo de varios GB, pero para contestar tiene que estar completo en la RAM. Y la RAM no es solo para él: tu sistema, el navegador y la videollamada también ocupan su lugar. Por eso este taller pide al menos 8 GB.

  Tu RAM de 8 GB, durante la sesión
  +------------------------------------------------------------+
  | Sistema    | Navegador y   | Modelo       | Libre para el  |
  | operativo  | videollamada  | (unos 2.5 GB)| contexto       |
  +------------------------------------------------------------+
     ya ocupado   ya ocupado      lo que agregas   el respiro

En la analogía del taller: el cocinero vive en la bodega (el disco), pero para cocinar tiene que entrar a tu cocina (la RAM), y tu cocina ya tiene otros muebles. Lo que queda libre es el espacio para su mesa de trabajo (el contexto).

4. Qué es Python y qué es una librería

Python es el lenguaje en el que está escrito el código del taller. Un script es un archivo .py con instrucciones; lo corres con python nombre.py. Una librería es código que alguien más escribió y que tú instalas para usarlo. Hoy usamos una sola: openai, la librería que arma los pedidos con el formato de la API. A pesar del nombre, no es solo para una empresa: sirve para cualquier servidor que hable ese formato, y LM Studio lo habla.

5. Qué es un entorno virtual

Un entorno virtual (.venv) es una carpeta, dentro de tu proyecto, donde se instalan las librerías solo para ese proyecto. Así no mezclas las librerías de este taller con las de otros programas de tu computadora. Se crea una vez, y en cada terminal nueva se activa con una línea. Cuando está activo, el principio de la línea de la terminal dice (.venv).

6. El Python mínimo para leer el código del taller

En la sesión no vas a escribir código desde cero: lo copias. Pero sí vas a leerlo, y para eso te sirven estas piezas. Este ejemplo las tiene casi todas; los comentarios (lo que va después de #) dicen qué hace cada línea:

# Esto es un comentario: Python lo ignora, es una nota para quien lee
import json  # import: trae código de una librería para usarlo aquí

name = "Ana"  # variable: un nombre que guarda un valor; aquí, un texto (string)
amounts = [54.20, 6.50, 61.75]  # lista: varios valores en orden, entre corchetes
expense = {"category": "food", "amount": 54.20}  # diccionario: pares nombre: valor, entre llaves
print(expense["category"])  # lee el valor guardado bajo "category" y lo muestra: food


def add_all(values):  # def: crea una función llamada add_all que recibe un argumento
    total = 0  # empezamos la cuenta en cero
    for value in values:  # for: repite el bloque de abajo una vez por cada valor
        total = total + value  # va sumando
    return total  # return: lo que la función entrega al terminar


result = add_all(amounts)  # llamamos a la función con la lista; result guarda 122.45
if result > 100:  # if: el bloque de abajo solo corre si se cumple la condición
    print(f"Gastaste {result:.2f}")  # f-string: mete un valor dentro del texto, con 2 decimales

try:  # try: intenta algo que puede fallar...
    data = json.loads("esto no es JSON")
except json.JSONDecodeError:  # ...y si falla con este error, en vez de romperse, hace esto
    print("El texto no era JSON válido")

Dos reglas de Python que sorprenden la primera vez:

  • La sangría importa. Las líneas que van "dentro" de un def, un for, un if o un try llevan cuatro espacios al inicio. Si los quitas o pones de más, Python no entiende qué va dentro de qué. Por eso conviene copiar el código entero, no reescribirlo.
  • Un texto va entre comillas. "food" es un texto; food sin comillas sería el nombre de una variable.

Y un formato que vas a ver mucho: JSON. Es una forma de escribir datos como texto para que dos programas se los pasen, y se parece mucho a un diccionario de Python: llaves {} para agrupar pares "nombre": valor, y corchetes [] para listas. Por ejemplo, {"category": "home", "amount": 35.0}. Los servidores de modelos contestan en JSON, y en la sesión le vas a pedir al modelo que conteste en JSON.

Qué vas a tener al final

~  (tu carpeta personal)
|
+-- local-model-workshop/       <-- la carpeta de practica
    |
    +-- .venv/                  el entorno virtual, con la libreria openai
    +-- expenses.csv            gastos de septiembre (datos de ejemplo)
    +-- requirements.txt        la lista de librerias que necesita el codigo

En la sesión vas a ir agregando los scripts de Python uno por uno: chat.py, providers.py, measure.py y agent.py.

Paso 1. Revisa cuánta RAM tienes (y qué chip, si usas Mac)

  • Mac: menú de la manzana, Acerca de esta Mac. Mira dos datos: Chip (o Procesador) y Memoria.
  • Windows: Configuración > Sistema > Información. Mira RAM instalada.
  • Linux: en la terminal, free -h. Mira la columna total de la fila Mem.
Lo que vesQué significa para hoy
16 GB o másVas cómodo. El modelo del taller corre holgado
8 GBAlcanza para un modelo pequeño como el del taller (LM Studio recomienda 16 GB para ir holgado). Cierra pestañas y programas que no uses durante la sesión
Menos de 8 GBEl modelo no va a tener espacio. Sigue la sesión con la parte de la nube y mira la demo
Mac con chip IntelLM Studio no funciona en Mac con Intel. Sigue la sesión con la parte de la nube y mira la demo
Mac con chip Apple (M1 o más nuevo)Es de las mejores máquinas para correr modelos locales

Paso 2. Elige dónde vas a escribir: VS Code

Hoy vas a crear archivos de Python, así que te recomendamos Visual Studio Code (VS Code), un editor gratuito: ves tus archivos a la izquierda, el código en el centro y la terminal abajo, en la misma ventana. Descárgalo de code.visualstudio.com e instálalo con las opciones por defecto.

+----------------------------------------------------------------+
|  VS Code                                                       |
+---------------------+------------------------------------------+
| EXPLORADOR          |  chat.py                                 |
|                     |                                          |
| LOCAL-MODEL-        |  # chat.py: le manda una pregunta...     |
|   WORKSHOP          |  from openai import OpenAI               |
|   .venv/            |  ...                                     |
|   expenses.csv      |                                          |
|   requirements.txt  +------------------------------------------+
|   chat.py           |  TERMINAL                                |
|                     |  (.venv) $ python chat.py                |
+---------------------+------------------------------------------+

Si prefieres otra terminal (la de tu sistema, o Warp), también sirve. Lo único que necesitas es poder crear archivos y correr comandos en la misma carpeta.

Paso 3. Revisa que tengas Python 3.10 o superior

Abre una terminal (en VS Code: menú Terminal > New Terminal) y escribe la línea de tu sistema:

Mac y Linux:

python3 --version

Windows (PowerShell):

py --version

Si ves Python 3.10 o un número mayor (3.11, 3.12, 3.13...), estás listo. Si ves un número menor, o un error, instálalo:

  • Mac: descarga el instalador de python.org/downloads e instálalo con las opciones por defecto.
  • Windows: python.org ahora ofrece el Python install manager (python.org/downloads/windows). Instálalo y, si te pregunta si quieres agregar Python al PATH, di que sí. Si en su lugar usas el instalador clásico, marca la casilla "Add python.exe to PATH" en su primera pantalla. Con cualquiera de los dos, el comando py funciona.
  • En los dos casos, al terminar cierra la terminal, abre una nueva y repite el comando.
  • Linux (Ubuntu y derivados): sudo apt install python3 python3-venv.

Por qué cerrar y abrir la terminal: la terminal lee la lista de programas disponibles (el PATH) una sola vez, cuando se abre. Una terminal nueva ve lo que acabas de instalar.

Paso 4. Crea la carpeta de práctica

Copia el bloque de tu sistema, pégalo en la terminal y presiona Enter. Crea la carpeta y los dos archivos de datos.

En Mac o Linux

# Crea la carpeta de práctica y entra en ella
mkdir -p ~/local-model-workshop && cd ~/local-model-workshop

# Los gastos de septiembre: datos de ejemplo para la sesión
cat > expenses.csv <<'EOF'
date,description,category,amount
2026-09-01,Groceries at the market,food,54.20
2026-09-02,Bus card top-up,transport,20.00
2026-09-03,Coffee with a friend,Food,6.50
2026-09-05,Internet bill,home,35.00
2026-09-07,Movie tickets,fun,18.00
2026-09-09,Groceries at the market,food,61.75
2026-09-12,Taxi home,Transport,12.40
2026-09-14,Electricity bill,home,42.10
2026-09-18,Lunch near the office,food,11.90
2026-09-21,Concert,fun,45.00
2026-09-25,Bus card top-up,transport,20.00
2026-09-28,Groceries at the market,food,58.30
EOF

# La lista de librerías que necesita el código: solo una
cat > requirements.txt <<'EOF'
openai
EOF

# Muestra lo que quedó en la carpeta
ls

En Windows (PowerShell)

# Crea la carpeta de práctica y entra en ella
New-Item -ItemType Directory -Force -Path "$HOME\local-model-workshop" | Out-Null
Set-Location "$HOME\local-model-workshop"

# Los gastos de septiembre: datos de ejemplo para la sesión
@'
date,description,category,amount
2026-09-01,Groceries at the market,food,54.20
2026-09-02,Bus card top-up,transport,20.00
2026-09-03,Coffee with a friend,Food,6.50
2026-09-05,Internet bill,home,35.00
2026-09-07,Movie tickets,fun,18.00
2026-09-09,Groceries at the market,food,61.75
2026-09-12,Taxi home,Transport,12.40
2026-09-14,Electricity bill,home,42.10
2026-09-18,Lunch near the office,food,11.90
2026-09-21,Concert,fun,45.00
2026-09-25,Bus card top-up,transport,20.00
2026-09-28,Groceries at the market,food,58.30
'@ | Set-Content -Encoding ascii expenses.csv

# La lista de librerías que necesita el código: solo una
'openai' | Set-Content -Encoding ascii requirements.txt

# Muestra lo que quedó en la carpeta
ls

Qué hace el bloque

LíneaQué hace
mkdir -p ~/local-model-workshop (o New-Item ...)Crea la carpeta. -p (o -Force) evita el error si ya existe
cd ~/local-model-workshop (o Set-Location ...)Entra a la carpeta
cat > expenses.csv <<'EOF' ... EOFGuarda en expenses.csv todo lo que hay entre esas dos líneas, tal cual
@' ... '@ | Set-Content ...Lo mismo en PowerShell: un bloque de texto que se escribe en el archivo
lsMuestra lo que hay en la carpeta

Es seguro pegar el bloque dos veces: vuelve a escribir los mismos archivos encima.

Sobre expenses.csv: es una tabla en texto plano (CSV, valores separados por comas), con un detalle raro a propósito: algunas categorías están en mayúsculas (Food, Transport). No lo corrijas: en la parte 4 de la sesión vas a ver por qué importa.

Abre la carpeta en VS Code

Menú File > Open Folder (Archivo > Abrir carpeta), entra a tu carpeta personal y elige local-model-workshop. Si te pregunta si confías en los autores, di que sí: la carpeta es tuya. A la izquierda verás expenses.csv y requirements.txt. Abre una terminal con Terminal > New Terminal: se abre ya parada dentro de la carpeta.

Paso 5. Crea el entorno virtual e instala la librería

En la terminal, dentro de local-model-workshop, pega el bloque de tu sistema.

En Mac o Linux

# Crea el entorno virtual en la carpeta .venv
python3 -m venv .venv

# Lo activa: desde aquí, "python" y "pip" son los del proyecto
source .venv/bin/activate

# Instala las librerías de requirements.txt (solo openai)
pip install -r requirements.txt

En Windows (PowerShell)

# Crea el entorno virtual en la carpeta .venv
py -m venv .venv

# Permite correr el script de activación, solo en esta terminal
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

# Lo activa: desde aquí, "python" y "pip" son los del proyecto
.\.venv\Scripts\Activate.ps1

# Instala las librerías de requirements.txt (solo openai)
pip install -r requirements.txt

La línea de Set-ExecutionPolicy existe porque Windows, por seguridad, no deja correr scripts de PowerShell que no conoce. -Scope Process quiere decir "solo en esta ventana": al cerrarla, vuelve a la regla de siempre.

Comprueba que quedó

Con el entorno activo, el principio de la línea de la terminal dice (.venv). Escribe:

python -c "import openai; print(openai.__version__)"

Si ves un número de versión, la librería está instalada. Desde aquí, en todos los sistemas el comando es python (sin el 3), porque es el Python del entorno virtual.

Cada terminal nueva empieza sin el entorno activo. Si mañana abres otra terminal, entra a la carpeta y vuelve a correr solo la línea de activación (source .venv/bin/activate en Mac y Linux; Set-ExecutionPolicy ... y .\.venv\Scripts\Activate.ps1 en Windows). Si ves ModuleNotFoundError: No module named 'openai', casi siempre es eso.

Verifica que estás listo

  • Sé cuánta RAM tengo, y si uso Mac, que tiene chip Apple.
  • python3 --version (o py --version) muestra 3.10 o más.
  • ls dentro de local-model-workshop muestra expenses.csv y requirements.txt.
  • Con (.venv) activo, el comando de comprobación muestra la versión de openai.
¿Y si pip install falla?

Revisa dos cosas. Primera: que la línea empiece con (.venv); si no, el entorno no está activo y hay que correr la línea de activación. Segunda: que tengas internet, porque pip descarga la librería. Si aun así falla, llega así: lo arreglamos en los primeros minutos de la sesión.

Para comprobar que entendiste

1. El modelo está en tu disco. ¿Por qué además importa la RAM?

Porque para contestar, el modelo tiene que estar completo en la RAM, que es la memoria rápida de "lo que se está usando ahora". El disco solo lo guarda. Y la RAM la comparte con el sistema, el navegador y la videollamada.

2. ¿Para qué sirve el entorno virtual .venv?

Para instalar las librerías solo para este proyecto, sin mezclarlas con las de otros programas de tu computadora. Se crea una vez y se activa en cada terminal nueva.

3. Abres una terminal nueva, corres un script y ves No module named 'openai'. ¿Qué pasó?

Que la terminal nueva empezó sin el entorno virtual activo, y el Python de tu sistema no tiene la librería. Entra a la carpeta, corre la línea de activación y vuelve a intentarlo.

Resumen

  • El modelo vive en el disco pero contesta desde la RAM, y la RAM la compartes con todo lo demás: por eso el taller pide al menos 8 GB. LM Studio no funciona en Mac con Intel.
  • Tienes Python 3.10 o superior, la carpeta local-model-workshop con expenses.csv y requirements.txt, y un entorno virtual con la librería openai.
  • openai es la librería que arma pedidos con el formato de la API; sirve para cualquier servidor que hable ese formato, incluido LM Studio. Siguiente paso: instalar LM Studio y descargar el modelo.