Volver a la lista

Agentes y herramientas: un ciclo que concatena automáticamente el diseño experimental.

Al dotar a un LLM de herramientas, bucles y memoria, se convierte en un agente. Se comprenderán los principios de la llamada de funciones, ReAct, la planificación, MCP y los agentes múltiples a través de escenarios de automatización del diseño experimental.

Principiante
|
22min
|
Verificado (2026-07)
Progreso0/15 (0%)

Agentes y uso de herramientas: bucles que conectan automáticamente el diseño experimental

Al finalizar este tema

Los asistentes de los temas 7 y 8 devuelven una respuesta por cada solicitud. Sin embargo, las tareas de investigación reales, como el diseño experimental, el análisis de datos y la revisión exhaustiva de la literatura, implican múltiples etapas y herramientas entrelazadas. En este tema aprenderemos a ampliar un LLM a un agente añadiendo herramientas, bucles y memoria.

La máquina probabilística del tema 1, pasando por el diseño condicional del tema 7 y la inyección de conocimiento externo del tema 8, se convierte ahora en un ejecutor que conecta autónomamente múltiples etapas. Esta es la vanguardia del desarrollo de IA en 2024-2025.


La complejidad real de una sola solicitud de un estudiante de posgrado

Imaginen que deben presentar la próxima semana el plan de configuración experimental a su asesor. Ustedes le dicen al asistente lo siguiente:

"Basándote en los protocolos de edición CRISPR de artículos recientes con líneas celulares similares a las utilizadas en nuestro artículo anterior, crea un borrador del diseño experimental para esta ocasión. También organiza la lista de reactivos necesarios y marca únicamente aquellos que no están en el inventario de nuestro laboratorio."

Dentro de esta única solicitud se encuentran realmente las tareas necesarias:

  1. Buscar en el repositorio de artículos del laboratorio para confirmar qué líneas celulares se utilizan con frecuencia.
  2. Buscar en PubMed artículos recientes utilizando esa línea celular + condiciones de edición CRISPR.
  3. Resumir detalladamente varios artículos entre los encontrados que tengan condiciones similares.
  4. Redactar un borrador del diseño experimental sintetizando múltiples protocolos.
  5. Extraer la lista de reactivos necesarios del borrador.
  6. Consultar la base de datos de inventario del laboratorio para confirmar la disponibilidad.
  7. Marcar por separado únicamente los reactivos insuficientes.
  8. Organizar el resultado final en un documento markdown.

Un solo prompt del tema 7 no puede procesar este flujo. El RAG del tema 8 puede ayudar hasta el paso 3, pero no puede realizar las etapas 4 a 7. Lo que se necesita es un ejecutor que llame a múltiples herramientas de forma secuencial y paralela. Ese ejecutor es el agente.


Agente = LLM + Herramientas + Bucle + Memoria

Resumen de la estructura del agente en sus componentes mínimos.

text
┌─────────────────────────────────────────┐
│              Bucle del agente             │
│                                         │
│   ┌─────────┐    ┌──────────┐           │
│   │  LLM    │───▶│ Decisión  │           │
│   │(reason) │    │(next step)│          │
│   └─────────┘    └──────────┘           │
│        ▲              │                 │
│        │              ▼                 │
│   ┌────────┐    ┌──────────┐            │
│   │ Memory │◀───│ Llamada    │           │
│   │        │     │ a herramienta│         │
│   └────────┘    │ (act)     │           │
│                 └──────────┘            │
│                       │                 │
└───────────────────────┼─────────────────┘
                        ▼
                   Mundo exterior
              (búsqueda, cálculo, API, BD)

Cuatro componentes:

  • LLM: La máquina probabilística que vimos en los episodios #1 a #6. Decide qué herramienta llamar y con qué argumentos.
  • Herramientas: Funciones que interactúan con el mundo exterior. Búsqueda, cálculo, consultas a bases de datos, llamadas a APIs, etc.
  • Bucle: El ciclo repetitivo en el que el LLM llama a una herramienta, observa el resultado y vuelve a decidir.
  • Memoria: El historial de observaciones y decisiones hasta ahora. Se divide en ventana de contexto (corto plazo) y almacenamiento externo (largo plazo).

Con estos cuatro componentes, el agente puede ejecutar de forma autónoma múltiples pasos.

Analogía biológica: respuesta celular al entorno. Las células también siguen esta estructura: detección (receptores sensoriales) → decisión (cascada de señales) → acción (activación de factores de transcripción, regulación metabólica) → observación (retroalimentación) → nueva detección. Si la cascada de señales del episodio #4 era el circuito de decisión interno de la célula, el agente es una analogía artificial que sustituye esto por un LLM. Al igual que la célula es un "sistema de decisiones ejecutables", el agente también lo es.


Herramienta: la puerta hacia el mundo exterior

Una herramienta es una función que el agente puede llamar. Cada herramienta tiene un nombre, una descripción y un esquema de parámetros.

Ejemplos de herramientas necesarias para la práctica biológica:

python
tools = [
{
"name": "search_lab_papers",
"description": "Busca artículos relacionados en el repositorio del laboratorio",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Consulta de búsqueda"},
"top_k": {"type": "integer", "default": 5}
},
"required": ["query"]
}
},
{
"name": "search_pubmed",
"description": "Busca artículos en PubMed",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"year_from": {"type": "integer"},
"max_results": {"type": "integer", "default": 20}
},
"required": ["query"]
}
},
{
"name": "get_reagent_stock",
"description": "Consulta existencias de reactivos en la base de datos del laboratorio",
"input_schema": {
"type": "object",
"properties": {
"reagent_names": {"type": "array", "items": {"type": "string"}}
},
"required": ["reagent_names"]
}
},
{
"name": "write_file",
"description": "Guarda el resultado en un archivo",
"input_schema": {
"type": "object",
"properties": {
"path": {"type": "string"},
"content": {"type": "string"}
},
"required": ["path", "content"]
}
}
]

Esta herramienta es invocada por el agente, que acumula cada resultado en el contexto para tomar la siguiente decisión.

Importancia de las descripciones de las herramientas. El modelo de lenguaje extenso (LLM) decide si invocar una herramienta basándose únicamente en el nombre de la herramienta, su descripción y el esquema de parámetros. Si la descripción es inexacta o ambigua, el agente puede invocar la herramienta incorrecta o proporcionar argumentos erróneos. El diseño de las herramientas requiere tanto cuidado como la ingeniería de prompts.

Elementos de una buena descripción de herramienta.

  • Especificar cuándo debe usarse esta herramienta
  • Propósito y ejemplos de cada parámetro
  • Formato del valor devuelto
  • Política de manejo de casos de fallo (errores de parámetros, recursos no disponibles, etc.)

Llamada a funciones — Interfaz estándar

Llamada a funciones (término de OpenAI) o Uso de herramientas (término de Anthropic) es la interfaz API estandarizada para que los LLM invoquen herramientas.

Los modelos entrenados han aprendido "cuándo y qué herramienta debe invocarse en este momento". Al recibir el prompt del usuario y la lista de herramientas, devuelve el nombre de la herramienta y los parámetros en formato JSON.

Ejemplo de API de Claude.

python
response = client.messages.create(
model="claude-3-5-sonnet-latest",
tools=tools,
messages=[{"role": "user", "content": "Indica las tres líneas celulares más usadas por el laboratorio en los últimos tres años."}]
)
# response.stop_reason == "tool_use"
# Dentro de response.content:
# [
# {"type": "text", "text": "Consultaré el repositorio de artículos del laboratorio."},
# {"type": "tool_use", "name": "search_lab_papers",
# "input": {"query": "cell line used in experiments", "top_k": 10},
# "id": "toolu_01ABC..."}
# ]

El programa host (bucle del agente) ejecuta esta llamada y devuelve los resultados al modelo.

python
tool_result = search_lab_papers(query="cell line used in experiments", top_k=10)
response = client.messages.create(
model="claude-3-5-sonnet-latest",
tools=tools,
messages=[
{"role": "user", "content": "Indica las tres líneas celulares más usadas por el laboratorio en los últimos tres años."},
{"role": "assistant", "content": response.content}, # Incluye tool_use
{"role": "user", "content": [
{"type": "tool_result", "tool_use_id": "toolu_01ABC...",
"content": json.dumps(tool_result)}
]}
]
)

El modelo utiliza este resultado para tomar la siguiente decisión: solicitar de nuevo una llamada a la herramienta (stop_reason == "tool_use") o devolver la respuesta final (stop_reason == "end_turn").

Este ciclo constituye la base del bucle del agente.


Patrón ReAct: alternancia entre razonamiento y acción

ReAct (Razonamiento + Acción). Un patrón en el que el agente escribe explícitamente su razonamiento en cada paso y, a continuación, realiza una acción (llamada a una herramienta).

Si el método Chain-of-Thought del capítulo 7 consistía en completar los tokens de inferencia antes de generar la respuesta, ReAct consiste en indicar explícitamente por qué se llama a esta herramienta con estos argumentos antes de cada llamada. Esta explicitación estabiliza el proceso de toma de decisiones del modelo.

Ejemplo del patrón ReAct:

text
Thought: Debo identificar las líneas celulares más usadas; primero consulto el repositorio del laboratorio.
Action: search_lab_papers(query="cell line CRISPR knockout", top_k=15)
Observation: [fragmentos de resúmenes y métodos de 15 artículos]

Thought: HEK293T aparece 8 veces, HeLa 5 y U2OS 3; HEK293T es la más usada.
    Ahora busco protocolos recientes de edición CRISPR con HEK293T.
Action: search_pubmed(query="HEK293T CRISPR knockout efficient protocol", year_from=2023, max_results=10)
Observation: [resúmenes de 10 artículos recientes]

Thought: Un artículo de Nature Protocols de 2024 usa una línea celular y un método de edición similares; necesito un resumen detallado.
Action: search_pubmed(query="2024 Nature Protocols HEK293T CRISPR efficient", max_results=1)
Observation: [fragmentos del texto completo del artículo]

Thought: Ya puedo redactar el protocolo. Organizo los reactivos necesarios y compruebo las existencias.
...

Cada razonamiento justifica la siguiente acción, y cada observación sirve de base para el siguiente razonamiento. Esta estructura explícita ayuda al agente a realizar una autoverificación y depuración. En caso de fallo, es posible rastrear en qué razonamiento se cometió un error.

Internalización de los modelos recientes. Los modelos más recientes, como Claude 3.5, GPT-4o y o1, siguen automáticamente este flujo sin necesidad de solicitar explícitamente el patrón ReAct. Esto es el resultado de haber aprendido a partir de grandes volúmenes de registros de agentes incluidos en los datos de entrenamiento.


Planificación: dividir tareas grandes en partes más pequeñas

Las tareas simples pueden concluirse con una sola llamada a una herramienta, pero en casos complejos, como la solicitud de nuestro estudiante de posgrado (8 pasos), es ventajoso establecer primero un plan general.

Patrón de planificación y ejecución.

  1. Al recibir la solicitud del usuario, primero elaborar el plan: listar los pasos necesarios.
  2. Ejecutar cada paso de forma secuencial o paralela.
  3. Observar los resultados de cada paso y, si es necesario, modificar el plan.
  4. Devolver el resultado final.

En la etapa de elaboración del plan, se utiliza un prompt como el siguiente para el LLM:

text
Eres un asistente de investigación. Divide la solicitud del usuario en pasos ejecutables.
En cada paso indica la herramienta y sus argumentos.

Solicitud del usuario: (solicitud)

Devuelve el plan en JSON:
{
  "steps": [
    {"step_id": 1, "action": "tool_name", "params": {...}, "depends_on": []},
    {"step_id": 2, "action": "tool_name", "params": {...}, "depends_on": [1]},
    ...
  ]
}

Ejecución en paralelo. Los pasos vacíos de depends_on se pueden procesar en paralelo. Por ejemplo, resumir cinco artículos por separado son pasos que se pueden ejecutar en paralelo, lo que ahorra tiempo.

Replanificación dinámica. Si el resultado de un paso difiere del plan (por ejemplo, una búsqueda devuelve 0 resultados), se reconstruyen los pasos restantes. Se trata de una combinación de CoT + Herramienta + Replanificación.

Analogía biológica. Gestión de proyectos de investigación y coherencia conceptual. Dividir proyectos grandes en hitos y tareas, distinguir entre lo que se puede ejecutar en paralelo y lo que debe ser secuencial, y ajustar el plan según los resultados. El trabajo del agente es la automatización de este ciclo de gestión.


Memoria: a corto y largo plazo

A medida que el agente ejecuta varios pasos, se acumula información. La forma en que se almacena esta información define el diseño de la memoria.

Memoria a corto plazo = ventana de contexto. El historial de llamadas a herramientas, observaciones y razonamientos de la sesión actual se acumula en la ventana de contexto. El mecanismo de atención del episodio #6 hace referencia a este historial.

Problema. Cuando la sesión es larga, se excede la capacidad de la ventana de contexto. Incluso las ventanas de 128K de GPT-4 o 200K de Claude se llenan con solo 30 a 50 llamadas a herramientas. Además, surge el problema de "perderse en el medio" descrito en el episodio #8.

Técnicas de gestión de la memoria a corto plazo.

  • Resumen. Comprimir las observaciones antiguas mediante resúmenes.
  • Retención selectiva. Mantener solo los resultados importantes y guardar los registros detallados en archivos.
  • Fragmentación. Mantener en el contexto solo los últimos N pasos.

Memoria a largo plazo = almacenamiento externo. Información que se conserva a lo largo de varias sesiones.

  • Sistema de archivos. Guardar los resultados de cada sesión en archivos y consultarlos en la siguiente sesión mediante una herramienta de lectura de archivos.
  • Base de datos vectorial. Almacenar incrustaciones de resultados anteriores y recuperarlos mediante RAG cuando sea necesario.
  • Base de datos estructurada. Guardar información con esquema (historial de experimentos, indicadores de resultados, etc.) en una base de datos SQL.

Analogía biológica. La memoria epigenética de las células. El historial de expresión génica se transmite a través de generaciones mediante modificaciones de histonas y metilación del ADN. La memoria a largo plazo del agente también comparte este concepto de persistencia.


MCP: Estandarización de la interfaz de herramientas

Las herramientas mencionadas hasta ahora se definen en formatos diferentes para cada sistema de agentes. Los esquemas de herramientas de la API de Claude, la invocación de funciones de OpenAI, las herramientas de LangChain y las de LlamaIndex tienen interfaces ligeramente distintas. Para migrar a un nuevo sistema, es necesario redefinir las herramientas.

Model Context Protocol (MCP). Estándar abierto propuesto por Anthropic en 2024. Define herramientas, recursos y mensajes de forma independiente del lenguaje, el marco de trabajo o el modelo.

Estructura.

  • Servidor MCP: Proceso que proporciona herramientas y recursos. Por ejemplo: servidor de sistema de archivos, servidor de GitHub, servidor de PubMed.
  • Cliente MCP: agente que se conecta al servidor para invocar herramientas.
  • Comunicación: protocolo estándar JSON-RPC.

Ejemplos útiles de servidores MCP para la práctica en biotecnología.

  • PubMed MCP: búsqueda y consulta detallada de artículos.
  • PDB MCP: datos de estructuras proteicas.
  • UniProt MCP: preguntas y respuestas sobre información de proteínas.
  • Filesystem MCP: acceso al sistema de archivos del laboratorio.
  • Slack MCP: notificaciones en canales del equipo.

Importancia. Si MCP se estandariza, los sistemas de agentes solo necesitarán usar el lenguaje que conocen (MCP). Para añadir nuevas herramientas, basta con desplegar un servidor MCP. El ecosistema de herramientas se acumula sobre una única norma.

En 2025, las principales herramientas de agentes como Claude Desktop, Cursor, Continue y Windsurf han adoptado MCP. La comunidad de código abierto ha publicado cientos de servidores MCP. Comprender MCP y poder crear tu propia herramienta como servidor MCP se está convirtiendo en la competencia básica fundamental para los desarrolladores de IA de hoy.


Multi-Agente: División de roles

En tareas complejas, a menudo es mejor que varios agentes compartan roles en lugar de que un solo agente lo haga todo.

Ejemplo de flujo de trabajo de investigación biológica dividido entre tres agentes.

  • Agente de Literatura: dedicado a la búsqueda y resumen de artículos.
  • Agente de Protocolos: redacción de borradores de protocolos y listas de reactivos.
  • Agente de Inventario: gestión del stock del laboratorio.

Los tres agentes colaboran bajo un orquestador. El orquestador recibe la solicitud del usuario y decide a qué agente delegar qué tarea.

Experimento de subagentes de Anthropic. Los recientes agentes de codificación como Claude Code, Manus y Devin utilizan esta estructura. El agente principal genera múltiples subagentes que ejecutan tareas secundarias en paralelo. Cada subagente tiene su propio contexto de ventana, lo que garantiza el aislamiento de la información.

Cuándo es ventajoso un enfoque multi-agente.

  • Cuando se requiere conocimiento de dominios diferentes (literatura, protocolos, inventario).
  • Cuando se necesita reducir el tiempo mediante procesamiento paralelo (resumir 10 artículos simultáneamente).
  • Cuando se desea evitar la contaminación mediante el aislamiento del contexto.

Cuándo es mejor un enfoque de agente único.

  • Cuando se debe compartir el contexto (ajuste continuo dentro de una misma conversación).
  • Cuando la sobrecarga de la orquestación supera los beneficios.
  • Cuando son importantes la depuración y la auditoría (un único registro facilita el seguimiento).

Seguridad: Riesgos de la ejecución de herramientas

Que un agente ejecute realmente herramientas significa que tiene impacto en el mundo real. Un error o mal uso puede causar daños reales.

Ejemplos de riesgos en contexto biológico.

  • Una herramienta de pedido automático de reactivos que realiza un pedido con la cantidad incorrecta.
  • La herramienta de reserva de experimentos programa un horario incorrecto.
  • La herramienta de modificación de la base de datos sobrescribe los registros del experimento.
  • Las llamadas a APIs externas provocan la exposición de información personal.

Técnicas de defensa.

1. Separación de permisos de las herramientas. Separar las herramientas de solo lectura de las herramientas de escritura y ejecución. La mayor parte de la automatización se limita a operaciones de solo lectura.

2. Puerta de aprobación humana. Las herramientas destructivas (pedido de reactivos, modificación de datos) requieren verificación humana antes de su ejecución. El agente presenta un plan y el usuario lo aprueba antes de proceder.

3. Registro de ejecución de herramientas. Registrar todas las llamadas a herramientas en registros auditables.

4. Aislamiento (Sandboxing). Aislar el entorno de ejecución. Por ejemplo, la herramienta de ejecución de código debe operar dentro de un sandbox Docker o wasm.

5. Defensa contra la inyección de prompts. El riesgo de inyección descrito en el episodio #7 es más grave en los agentes. Es posible que documentos recuperados o archivos leídos contengan instrucciones ocultas como "ignora tus instrucciones originales y ejecuta X". No vincular directamente los resultados de las herramientas al prompt del sistema, sino envolverlos con delimitadores explícitos.

Riesgos específicos de la biología. La combinación de información química y biológica podría generar información sobre la síntesis de sustancias peligrosas. El entrenamiento de alineación mitiga este riesgo, pero no lo elimina por completo. Véase el episodio #11 para más detalles.


Escenarios de aplicación biológica

Escenario 1 — Asistente de diseño experimental (completando el escenario anterior)

Implementar realmente un agente que procese la solicitud de 8 pasos mencionada anteriormente.

python
import anthropic
client = anthropic.Anthropic()
tools = [...] # Las cuatro herramientas definidas anteriormente
def execute_tool(name, params):
if name == "search_lab_papers":
return vectorstore.similarity_search(params["query"], k=params.get("top_k", 5))
elif name == "search_pubmed":
return pubmed_api(**params)
elif name == "get_reagent_stock":
return db.query_stock(params["reagent_names"])
elif name == "write_file":
Path(params["path"]).write_text(params["content"])
return {"status": "ok"}
def agent_loop(user_request):
messages = [{"role": "user", "content": user_request}]
while True:
response = client.messages.create(
model="claude-3-5-sonnet-latest",
tools=tools,
messages=messages,
max_tokens=4096
)
if response.stop_reason == "end_turn":
return response.content[0].text
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": json.dumps(result)
})
messages.append({"role": "user", "content": tool_results})
# Uso
result = agent_loop("Usa protocolos recientes de edición CRISPR con líneas celulares similares a las de nuestros artículos para redactar este experimento. Enumera los reactivos necesarios y marca solo los que no estén en el inventario del laboratorio.")

Este bucle invoca herramientas en un máximo de 20 a 30 pasos, procesando automáticamente una solicitud de 8 etapas.

Escenario 2: Agente de cálculo de propiedades moleculares

Se integran herramientas de información química como RDKit, PubChem y OpenBabel en un servidor MCP y se conectan al agente.

Solicitud del usuario: "Encuentra el valor IC50 previsto para esta molécula SMILES y 3 inhibidores conocidos similares. Además, proporciona la predicción de efectos secundarios del canal hERG".

El agente realiza:

  1. Análisis de la estructura molecular a partir de SMILES (RDKit MCP)
  2. Cálculo de la huella digital molecular (RDKit)
  3. Búsqueda de moléculas similares en PubChem (PubChem MCP)
  4. Llamada al modelo de predicción de inhibición hERG (API de predicción independiente)
  5. Integración de resultados y generación del informe.

En la etapa inicial del descubrimiento de fármacos, estos agentes ya se están implementando en la práctica.

Escenario 3: Flujo de trabajo de análisis automático de datos experimentales

Análisis automático de archivos originales procedentes de instrumentos de medición.

  • Agente de supervisión de archivos: Supervisa la carpeta del instrumento experimental y detecta nuevos archivos.
  • Agente de control de calidad: Verifica la calidad de los datos originales y detecta valores atípicos.
  • Agente de análisis: Genera análisis estadísticos, visualizaciones e informes.
  • Agente de notificación: Envía notificaciones de los resultados a Slack y correo electrónico.

Ejemplo práctico de orquestación multiagente. Algunas startups recientes de automatización de laboratorios ofrecen este tipo de sistemas.


Resumen clave

  • Agente = LLM + Herramientas + Bucle + Memoria. Ejecución autónoma multietapa que va más allá de un único prompt.
  • Uso de herramientas / Llamada a funciones es la interfaz mediante la cual el LLM invoca herramientas externas de forma estandarizada.
  • Patrón ReAct: Alternancia entre Pensamiento, Acción y Observación. Una extensión natural del CoT de la parte #7.
  • Planificación: Divide las tareas grandes en partes más pequeñas y permite el procesamiento paralelo. La replanificación dinámica gestiona los fallos.
  • Memoria: Combina memoria a corto plazo (contexto) y a largo plazo (archivos, bases de datos vectoriales, SQL). Persiste entre sesiones.
  • MCP es el estándar abierto para interfaces de herramientas. Acumula el ecosistema de herramientas sobre una única norma.
  • Multiagente: Necesario cuando se requiere división de roles. Patrón Orquestador + Subagentes.
  • Seguridad: Separación de permisos, puertas de aprobación humana, registros, entorno aislado y defensa contra inyecciones. La ejecución de herramientas tiene un impacto en el mundo real.

Próximos conceptos

  • Parte #10 context-window-management — Técnicas prácticas para gestionar de forma eficiente el contexto de sesión larga de los agentes.
  • Episodio #11 hallucination-and-alignment — Problemas de interpretación errónea y alucinaciones en la invocación de herramientas por parte del agente.
  • Episodio #13 claude-code-and-cursor — Uso práctico de agentes de codificación.

📐 Apéndice — Fórmulas matemáticas y de sistemas para expertos

Dificultad: Muy difícil (Very Hard) Dirigido a: Lectores con conocimientos en diseño de sistemas, aprendizaje por refuerzo y procesos formalizados.

A.1 Perspectiva del proceso de decisión de Markov para agentes

Formalización del agente como un Proceso de Decisión de Markov Parcialmente Observable (POMDP).

  • Estado s ∈ S: Estado actual del mundo (no observable directamente por el agente).
  • Observación o ∈ Ω: Resultado de la invocación de herramientas. o ~ O(o | s).
  • Acción a ∈ A: Invocación de herramientas.
  • Política π(a | h): Probabilidad de la siguiente acción, dado el historial de observaciones y acciones h.
  • Recompensa r: Grado de cumplimiento del objetivo.

El LLM es una función que parametriza π. π_θ(a | h) = LLM(h).

Diferencia clave. A diferencia del aprendizaje por refuerzo, la π del LLM no se entrenó con señales de recompensa explícitas durante el entrenamiento (RLHF opera en otro nivel). Sin embargo, aprende patrones de "esta acción en esta situación" a partir de los registros de agentes en los datos de entrenamiento.

A.2 Entrenamiento para la invocación de funciones (Function Calling)

Que un LLM invoque herramientas correctamente no ocurre por arte de magia. Los datos de entrenamiento deben incluir explícitamente patrones de invocación de herramientas.

Formato de los datos de entrenamiento para Function Calling:

text
User: "¿Cuál fue la tasa media de éxito del cultivo celular en los últimos tres meses?"
Assistant: <tool_call>get_experiment_records(period="3_months")</tool_call>
Tool: {"records": [...], "success_rate": 0.87}
Assistant: "La tasa media de éxito de los últimos tres meses fue del 87 %."

Entrenado con cientos de miles de conversaciones. El modelo aprende patrones de invocación de herramientas adaptados al contexto.

Toolformer (Meta AI, 2023) fue la primera investigación sobre este enfoque de entrenamiento. Los modelos recientes se preentrenan con grandes volúmenes de diálogos de uso de herramientas y, a continuación, se ajustan mediante RLHF.

A.3 Formalización de ReAct

En cada paso t:

text
Thought_t ~ π_thought(· | h_t)
Action_t ~ π_action(· | h_t, Thought_t)
Observation_t = Tool(Action_t)
h_{t+1} = h_t ∪ {Thought_t, Action_t, Observation_t}

Condición de parada: Action_t == "answer" o t == max_steps.

Ventaja teórica. Si el "Thought" está presente explícitamente en el contexto, se puede consultar π_action. Esto es más preciso que generar directamente la "Action" sin el "Thought".

Razonamiento interno de los modelos recientes. Modelos como o1 y Claude 3.5 también procesan el "Thought" como un razonamiento interno. Aunque no es visible externamente, internamente mantiene una estructura similar.

A.4 Complejidad computacional del planeamiento en múltiples pasos

Planeamiento "Greedy" (el LLM crea un plan de una sola vez):

  • Tiempo: 1 llamada al LLM
  • Propagación de errores: un error inicial afecta a todos los pasos

Planeamiento con búsqueda en árbol (se generan varias opciones de plan y luego se selecciona la mejor):

  • Tiempo: N × 1 llamada al LLM (N candidatos) + 1 llamada al LLM para la evaluación
  • Reducción de errores: la diversidad aumenta la probabilidad de seleccionar el plan óptimo

Búsqueda en árbol de Monte Carlo (MCTS):

  • Exploración de múltiples candidatos en cada paso + simulación de "rollout"
  • Explosión temporal (b^d, b=factor de ramificación, d=profundidad)
  • Metodología base de AlphaGo y la serie o1

A.5 Factor determinante de la probabilidad de selección de herramientas

La probabilidad de que el LLM seleccione una herramienta:

text
P(tool_i | context) = softmax(logit(tool_i | context))

Efecto ancla. Si la descripción de una herramienta especifica un contexto determinado, la probabilidad de que se seleccione esa herramienta aumenta considerablemente cuando ese contexto está presente. Por este motivo, las descripciones de las herramientas son tan importantes como la ingeniería de prompts.

Penalización por ambigüedad. Cuando varias herramientas son adecuadas para situaciones similares, aumenta la probabilidad de que el modelo seleccione la herramienta incorrecta. Los nombres y las descripciones de las herramientas deben ser claramente distintos entre sí.

A.6 Estructura del protocolo MCP

Basado en JSON-RPC 2.0.

Métodos proporcionados por el servidor:

  • initialize: Intercambio de la versión del protocolo y las capacidades
  • tools/list: Lista de herramientas disponibles
  • tools/call: Ejecución de herramientas
  • resources/list: Lista de recursos estáticos (por ejemplo, archivos)
  • resources/read: Lectura de recursos
  • prompts/list: Lista de plantillas de prompts
  • prompts/get: Obtención de prompts

Métodos proporcionados por el cliente:

  • sampling/createMessage: El servidor puede solicitar llamadas al LLM (bidireccional)
  • logging/log: El servidor transmite registros al cliente

Transporte: stdio (entrada/salida estándar) u HTTP+SSE.

A.7 Gestión del presupuesto de la ventana de contexto

A medida que se prolonga la sesión del agente, la gestión del contexto se vuelve más importante.

Presupuesto de la sesión:

text
budget = C - system_prompt - tools_schema - reserved_output

C: Tamaño de la ventana de contexto.

Uso durante la sesión:

text
used = Σ_{t} |Thought_t + Action_t + Observation_t|

used > budget * threshold activa la compresión y el resumen.

Estrategia de compresión:

  1. Reemplazar las observaciones detalladas de los primeros pasos con un resumen.
  2. Conservar solo los pasos recientes que tuvieron éxito.
  3. Almacenar todos los resultados intermedios en archivos externos, manteniendo solo las rutas de los archivos en el contexto.

A.8 Protocolo de comunicación multiagente

Formato de comunicación entre agentes.

Intercambio de mensajes:

json
{
    "from": "orchestrator",
    "to": "literature_agent",
    "task": "Resume 10 artículos recientes de PubMed sobre HEK293T y CRISPR",
    "context": {...},
    "deadline": "2 minutes",
    "return_format": "json_schema"
}

Response:

json
{
    "from": "literature_agent",
    "to": "orchestrator",
    "status": "success",
    "result": {...},
    "duration": "45s",
    "cost": {"tokens": 45230}
}

Mecanismo de consenso. Si varios agentes devuelven respuestas diferentes, el orquestador selecciona la respuesta final mediante votación y evaluación de calidad.

A.9 Gestión de costos y latencia de herramientas

Costo y latencia de cada llamada a herramienta:

HerramientaLatenciaCosto
Búsqueda vectorial100–500 ms$0 (autoalojada)
API de PubMed1–3 s$0
Llamada a LLM2–30 s$0.01–1
Extracción de datos web3–10 s$0
Ejecución de código≥1 s$0 (entorno aislado)

Optimización:

  • Agrupar las llamadas que se puedan realizar en paralelo.
  • Almacenamiento en caché (reutilizar las consultas idénticas).
  • Finalización anticipada (interrumpir el ciclo al recopilar suficiente información).

A.10 Métricas de evaluación de agentes

Tasa de éxito de la tarea: si se completa o no (evaluación humana). Pasos para completar: número de llamadas a herramientas. Cuanto menor sea, más eficiente será. Costo por tarea: costo en tokens y API. Latencia: tiempo desde el inicio hasta la finalización. Robustez: tasa de recuperación ante fallos.

Benchmarks:

  • AgentBench: tareas de agentes en diversos dominios.
  • SWE-bench: resolución de problemas reales de GitHub.
  • GAIA: tareas generales de asistentes.
  • WebArena: automatización web.

Los benchmarks específicos para biología aún están en una etapa inicial.


Referencias

El contenido, los escenarios, las analogías y los datos de esta sección son desarrollos propios de BioPlayground; a continuación, se incluyen referencias externas útiles para el aprendizaje conceptual:

  • Artículo original de ReAct: Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023)
  • Toolformer: Schick et al., "Toolformer: Language Models Can Teach Themselves to Use Tools" (NeurIPS 2023)
  • Llamada a funciones: documentación de OpenAI "Function Calling", documentación de Anthropic "Tool Use"
  • Protocolo de contexto del modelo: modelcontextprotocol.io, especificación oficial de Anthropic (2024)
  • Planificación y ejecución: Wang et al., "Plan-and-Solve Prompting" (ACL 2023)
  • Origen conceptual de AutoGPT y BabyAGI: Nakajima y Richards, proyectos de código abierto (2023)
  • MCTS + LLM: Yao et al., "Tree of Thoughts" (NeurIPS 2023)
  • SWE-bench: Jimenez et al., "SWE-bench: Can Language Models Resolve Real-World GitHub Issues?" (ICLR 2024)
  • AgentBench: Liu et al., "AgentBench: Evaluating LLMs as Agents" (ICLR 2024)
  • Anthropic Building Effective Agents: anthropic.com/research/building-effective-agents (2024)

En el episodio 9, aprendimos la estructura básica de los agentes. En el episodio 10, abordaremos técnicas prácticas para gestionar de manera eficiente la ventana de contexto durante sesiones prolongadas de los agentes.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...