← Volver al plan

Fundamentos

De asistentes a agentes

Del asistente que espera al agente que elige el siguiente paso. Ciclo de autonomía, herramientas de lectura y escritura en el flujo, supervisión humana, e instalación de GitHub Copilot.

Semana
02
Fecha
Martes 18 de agosto
Horario
09:40-10:50
Tipo
clase

Lectura completa

De asistentes a agentes

Agentes: quién elige el siguiente paso

Un agente es una capa de funcionamiento superior a la de los asistentes. Está programado de manera tal que el agente decide cuándo pausar su ejecución y esperar un mensaje del usuario. El modelo sigue prediciendo tokens. Cambia quién elige el siguiente paso: el agente puede decidir qué información traer, cuándo, y si pide una herramienta en el flujo.

Ciclo del agente: el modelo genera, el agente muestra, decide si hay herramienta o señal de término, y vuelve al modelo
Si es herramienta, ejecuta y entrega el resultado al modelo. Si no es término, agrega al historial y vuelve. Si es término, FIN.

Autonomía

Los agentes, por definición, son autónomos, lo cual les otorga más capacidades y formas de trabajar. Esta autonomía se entrega por medio de un ciclo. Reciben un mensaje e iteran hasta completar el objetivo.

1. El agente recibe un mensaje del usuario

2. Se envía al modelo, más el system prompt, y se espera la respuesta

3. Si la respuesta trae una señal de término, se detiene. Si no, agrega el mensaje al historial y vuelve al modelo

Esto se repite en bucle hasta que, eventualmente, el modelo envía una señal de término.

Este comportamiento agéntico es compartido entre el agente (código) y el modelo, puesto que el modelo está entrenado para dar respuestas en bucle.

Ciclo de autonomía: el modelo genera, el agente pregunta si hay señal de término, y si no agrega el mensaje al historial y vuelve al modelo
Este recorte no abre la rama de herramienta: solo el corte término / seguir.

Uso de herramientas

¿Qué ganamos si no va todo en una sola respuesta? Al separar los mensajes, el modelo puede solicitar uso de herramientas en el flujo de respuesta.

Las herramientas son funciones del entorno del agente para tomar acción sobre recursos, o bien para agregar información al contexto.

Normalmente, estas funciones se declaran en el system prompt, de manera que el agente sepa, desde un comienzo, que las tiene a su disposición.

Ciclo de herramientas: el modelo genera, el agente pregunta si hay invocación de herramienta; si ejecuta y entrega el resultado al modelo; si no, el ciclo continúa en los puntos suspensivos
SI: ejecuta y el resultado vuelve al modelo. NO: una línea a los tres puntos, el ciclo sigue. No hay FIN en este recorte.

Tipos de herramientas

Existen dos grandes tipos de herramientas: de lectura y de escritura.

Lectura. Cuando se utilizan para leer contenido de otras fuentes: archivos, páginas web, Onedrive, ejecutar un script*. Su propósito es entregar más contexto a la conversación.

Escritura. Herramientas que se utilizan para crear, modificar o eliminar recursos: crear/editar/eliminar un archivo, enviar un correo, subir un documento, interactuar con una aplicación, ejecutar un script*. Su propósito es accionar sobre las solicitudes que entrega el usuario en la conversación.

* Ejecutar un script es un caso ambiguo: se puede usar para lectura y para escritura.

TypeScript

web_search({ query: string })
read_file({ path: string })
edit_file({ path: string, old_text: string, new_text: string })
send_email({ to: string, subject: string, body: string })
run_script({ command: string })

Estas firmas siguen el formato de herramientas de OpenAI y de tool use en Hugging Face.

Supervisión humana

Para dar visibilidad al usuario de lo que está haciendo el agente, todos los mensajes* se muestran al usuario. El agente devuelve los resultados y la aplicación va mostrando estos mensajes.

* En verdad no se muestran todos. Hay mensajes de pensamiento que vamos a ver más adelante en el curso, y no se muestran necesariamente.

El mismo ciclo del agente, con las cajas de mostrar el mensaje y mostrar el resultado a plena opacidad
Las cajas punteadas de Definición quedan visibles: muestra el mensaje y muestra el resultado. La aplicación las pinta.

Cómo se ve todo junto

Tres ventanas, como en Clase 03. El chat no muestra el system. El JSON sí. ChatML es el texto. Caso: resumir las reuniones de hoy y qué necesitas para prepararte.

El usuario pide el resumen. El modelo pide list_events (lectura). El agente ejecuta. El resultado entra al historial. Después write_file (escritura) con path prep-hoy.md, y una señal de término (finish_reason stop / STOP).

Chat

Resúmeme las reuniones de hoy y qué necesito para prepararme.

1. list_events
date: hoy

resultado
10:00 stand-up. 14:00 ensayo de la presentación. 16:30 1:1 con Javiera.

2. write_file
path: prep-hoy.md

Resumen listo en prep-hoy.md.

JSON

[
  { "role": "system",
    "content": "Eres un agente de agenda. Herramientas: list_events(date), write_file(path, text). Si ya puedes entregar el resumen, termina." },
  { "role": "user",
    "content": "Resúmeme las reuniones de hoy y qué necesito para prepararme." },
  { "role": "assistant",
    "tool_calls": [{ "name": "list_events",
      "arguments": { "date": "hoy" } }] },
  { "role": "tool",
    "content": "10:00 stand-up. 14:00 ensayo de la presentación. 16:30 1:1 con Javiera." },
  { "role": "assistant",
    "tool_calls": [{ "name": "write_file",
      "arguments": { "path": "prep-hoy.md", "text": "..." } }] },
  { "role": "assistant",
    "content": "Resumen listo en prep-hoy.md.",
    "finish_reason": "stop" }
]

ChatML

<|im_start|>system
Eres un agente de agenda. Herramientas: list_events, write_file. Si ya puedes entregar el resumen, termina.<|im_end|>
<|im_start|>user
Resúmeme las reuniones de hoy y qué necesito para prepararme.<|im_end|>
<|im_start|>assistant
<tool_call>
{"name":"list_events","arguments":{"date":"hoy"}}
</tool_call><|im_end|>
<|im_start|>tool
10:00 stand-up. 14:00 ensayo. 16:30 1:1.<|im_end|>
<|im_start|>assistant
<tool_call>write_file prep-hoy.md</tool_call><|im_end|>
<|im_start|>assistant
Resumen listo en prep-hoy.md.<|im_end|>
STOP

Instalemos GitHub Copilot

Vamos a poner en práctica lo aprendido. Esta es la GitHub Copilot app de escritorio, no Microsoft Copilot del navegador. Cuentan con GitHub y Git. Si alguien no tiene cuenta, que se cree una personal. La UC no sustituye GitHub.

Paso 1: descargar

1. Entra a github.com/features/ai/github-app

2. El botón verde descarga tu plataforma

3. Si no coincide, abre la flecha: macOS Silicon, Intel, Windows o Linux

Página de descarga de GitHub Copilot app, con el menú abierto: macOS Intel, macOS Silicon, Windows x64, Windows ARM y Linux
El menú de la flecha elige el instalador de tu sistema.

Paso 2: instalar

En macOS abres el .dmg, arrastras GitHub Copilot a Aplicaciones y la abres desde ahí. En Windows ejecutas el instalador .exe. En Linux abres el paquete del menú.

Si el sistema pregunta si confías en la app, acéptala: es el instalador oficial de GitHub.

Paso 3: iniciar sesión

1. Ábrela y elige Sign in to GitHub

2. Completa la autenticación en el navegador

3. Si pide un plan, elijan la opción de estudiante o la gratuita

Por ser estudiantes cuentan con el GitHub Student Developer Pack, así que no tienen que pagar en ningún momento.

Documentación oficial: abrir la app, Sign in to GitHub, elegir un plan o un proveedor, y seleccionar repositorios
Sign in to GitHub. El navegador completa OAuth y vuelves a la app.

Paso 4: conectar un proyecto

1. En Home, + Add project, o el + junto a Sessions

2. Una carpeta local, un repositorio de GitHub, o una URL

3. Dejen el modo en Interactive y prueben un pedido corto

Aún no peguen el informe. Solo confirmen que la app responde.

GitHub Copilot app en Home: Sessions, el recuadro de prompt, Interactive, Auto y el botón Add project
Interactive, no Autopilot. Una carpeta local basta para conectar el proyecto.

Paso 5: Student Developer Pack

Por ser estudiantes tienen acceso al GitHub Student Developer Pack.

1. Entra a education.github.com/pack

2. Sign up for Student Developer Pack

3. La verificación y Copilot Student son pasos distintos, y pueden tardar

El pack cubre Copilot: no tienen que pagar en ningún momento.

Página GitHub Student Developer Pack, con el botón Sign up for Student Developer Pack
La verificación puede tardar días. No es la actividad del informe.

Vamos a ganar money

En Copilot, pegan este pedido. Miren si busca fuentes, si escribe el PDF y el Excel, y si pueden detener la sesión.

Prompt

Haz un informe financiero de las cinco acciones que más subieron y las cinco que más bajaron en la bolsa durante la última semana.

Busca fuentes actuales. Entrega dos archivos:
1. un reporte en PDF con el ranking y una breve explicación de cada movimiento
2. un Excel con el análisis: ticker, variación de la semana, y las fuentes que usaste

Lectura: fuentes. Escritura: dos archivos. Y el stop. Si la app no abre, anota qué herramienta pedirías primero y dónde apretarías stop.

¿Y cómo tenemos control?

Mientras están en ejecución, siempre podemos detener su evaluación. Eso detiene todo proceso y generación del modelo.

Normalmente, las herramientas de escritura requieren permisos/autorización para actuar. Aquí es donde es muy importante verificar que la intención de la herramienta es la que nosotros esperamos: qué archivo, qué correo, qué recurso.

Sin embargo, a medida que los agentes mejoran, la industria se está moviendo a un mundo de menos autorización y más guardrails (lo vimos en la clase pasada). Por ello es importante fijar buenas instrucciones para controlar las acciones. El system de ayer sigue sentado arriba del agente.