Volver a la lista

La era en la que los agentes de IA se encargan de la bioinformática: scBaseCount y Evo Designer.

Se explica cómo un agente de IA que itera en un ciclo de planificación, ejecución y observación, en lugar de realizar una única inferencia, automatiza la curación de datos de células individuales y el diseño de genes, junto con un ejercicio práctico básico con LangChain.

Intermedio
|
20min
|
Verificado (2026-07-29)
bioinformatics AI agentsingle-cell curationtool callingagentic loop
Progreso0/120 (0%)

Si en F32 se trazó un gráfico, ahora observemos lo que se mueve sobre él

En F32, la propia secuencia de referencia se convirtió en un grafo. En F33, cambiamos el enfoque para tratar con software que realiza llamadas y toma decisiones en lugar de las personas, abarcando todas estas herramientas (alineadores, detectores de variantes y modelos base). Los modelos base tratados en F01~F25 realizaban una inferencia de un solo paso: recibían una entrada y producían una salida. Los agentes de IA son diferentes: reciben un objetivo, planifican por sí mismos la siguiente acción, ejecutan las herramientas, observan los resultados y vuelven a planificar la siguiente acción en un bucle iterativo.

Principio — El bucle que repite planificación, acción y observación

Diferencia entre inferencia de un solo paso y agentes

F02 (AlphaFold2) o F19 (Evo) toman una secuencia de entrada y producen una estructura o incrustación en un solo paso. En cambio, cuando se le da a un agente un objetivo como "investiga los patrones de expresión tisular específica de este gen y las variantes conocidas, y proporciona un resumen", el agente decide por sí mismo qué herramientas ejecutar y en qué orden para lograrlo. Esta estructura iterativa se conoce comúnmente como patrón ReAct (Reason + Act).

text
1. Razonar: "Primero hay que convertir el símbolo génico en un identificador estándar"
2. Actuar: llamar a la API de myGene.info
3. Observar: comprobar el ID de Entrez devuelto y la lista de tejidos con expresión
4. Razonar: "Ahora consultemos en GTEx la expresión por tejido"
5. Actuar: llamar a la API de GTEx
6. Observar: comprobar los datos de expresión → determinar si se alcanzó el objetivo
7. (Si no se alcanzó, repetir los pasos 2 a 6; si se alcanzó, generar el resumen final)

El hecho de que el agente determine por sí mismo la condición para detener este bucle (la determinación del cumplimiento del objetivo) es la diferencia decisiva con los pipelines de Snakemake·Nextflow (F27~F29), donde un humano ejecuta scripts en un orden predefinido.

scBaseCount — Delegando la curación de datos de célula única al agente

Los datos de RNA-seq de célula única están dispersos en repositorios públicos como GEO·SRA, y el formato de los metadatos y el estado del preprocesamiento varían en cada conjunto de datos. scBaseCount es un caso en el que se utilizó un agente de IA para descubrir conjuntos de datos de 10x Genomics en SRA, extraer metadatos y construir un repositorio que se actualiza automáticamente mediante procedimientos de procesamiento estandarizados. Los preprints informan que se han recolectado más de 502 millones de células de 27 especies biológicas y 75 tejidos. Sin embargo, no debe interpretarse como un hecho verificado que este caso incluya la capacidad de excluir autónomamente conjuntos de datos individuales según los resultados de QC o de reintentar cambiando los parámetros.

Evo Designer — Utilizando modelos fundacionales como componentes del bucle de diseño

Los modelos fundacionales de ADN como Evo, tratados en F19~F20, proporcionan puntuaciones funcionales o probabilidades de la siguiente base al introducir una secuencia. La tarea de diseño (design) no termina con una sola inferencia, sino que repite el proceso de propuesta → evaluación → mejora.

s0propuestas1evaluacioˊn de Evof(s1)mejoras2evaluacioˊnf(s2)    s_0 \xrightarrow{\text{propuesta}} s_1 \xrightarrow{\text{evaluación}\text{ de Evo}} f(s_1) \xrightarrow{\text{mejora}} s_2 \xrightarrow{\text{evaluación}} f(s_2) \;\to\; \cdots

Evo Designer es una interfaz que facilita al usuario el uso de la generación y el diseño de secuencias condicionales mediante Evo 2. Esto no significa que sea, por sí mismo, un agente cerrado que repite autónomamente el proceso hasta alcanzar el objetivo tras informar una puntuación de evaluación. La distinción precisa es que, al conectar una función de evaluación y una lógica de control por separado, puede utilizarse como un componente de generación dentro de un bucle de propuesta → evaluación → mejora como el mostrado arriba.

Ejemplo de cálculo manual: Estructura de acumulación de costos por llamadas a herramientas

Supongamos que alcanzar un objetivo requiere, en promedio, 5 llamadas a herramientas por cada ejecución del agente, y que cada llamada tarda en promedio 3 segundos. Si se procesan 10 objetivos en lote, la suma simple sería:

10×5×3segundos=150segundos10 \times 5 \times 3\text{segundos} = 150\text{segundos}

Sin embargo, si existe una probabilidad del 20% de que ocurra una ruta de reintento de llamadas a herramientas fallidas y el número de llamadas aumenta 2 veces en cada reintento, el número esperado de llamadas aumenta a 5×(1+0.2×1)=65 \times (1 + 0.2 \times 1) = 6, lo que en la práctica se acerca a los 180 segundos. Al diseñar pipelines de agentes, es fundamental desde el punto de vista práctico estimar previamente el costo esperado de estas rutas de reintento.

Práctica: Automatización de la consulta de genes con un agente mínimo de LangChain (Colab)

python
# Ejecutar en Colab. Configura un agente con llamadas a herramientas usando una versión mínima de LangChain.
!pip install -q "langchain>=1,<2" "langchain-openai>=1,<2" requests
import requests
from langchain_core.tools import tool
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI # Cada persona configura la clave de API en una variable de entorno
@tool
def gene_lookup(symbol: str) -> str:
"""Consulta en myGene.info el ID estándar y el resumen a partir de un símbolo génico."""
r = requests.get(
"https://mygene.info/v3/query",
params={"q": f"symbol:{symbol}", "species": "human", "fields": "symbol,entrezgene,summary"},
timeout=20,
)
r.raise_for_status()
hits = r.json().get("hits", [])
if not hits:
return f"No hay resultados para '{symbol}'"
top = hits[0]
return f"ID de Entrez: {top.get('entrezgene')}, resumen: {top.get('summary', 'Sin resumen')[:200]}"
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
agent = create_agent(
model=llm,
tools=[gene_lookup],
system_prompt="Comprueba la evidencia con herramientas y después resume brevemente en español el gen indicado.",
)
result = agent.invoke({
"messages": [{"role": "user", "content": "Investiga el gen BRCA1"}]
})
print(result["messages"][-1].content)

El resultado devuelto por messages contiene el mensaje del modelo y los resultados de las llamadas a herramientas, en el orden en que se produjeron. Imprima todo result["messages"] para verificar qué herramienta se invocó y cómo se reflejó su resultado en la respuesta final. La API de LangChain cambia significativamente entre versiones, por lo que este ejemplo se basa en la versión 1.x.

Correspondencias en ciencias de la computación

  • Máquina de estados finitos (FSM): El ciclo ReAct de "razonamiento → acción → observación" se asemeja más a una FSM estocástica, en la que las transiciones de estado no están definidas explícitamente y el modelo decide por sí mismo el siguiente estado.
  • Distribución de funciones: El proceso por el cual un agente selecciona y llama a una de varias herramientas tiene la misma estructura que una tabla de distribución que selecciona dinámicamente una función en tiempo de ejecución.
  • Patrón intérprete: El ciclo del agente de "generación de plan → ejecución → replanificación" se asemeja al ciclo de ejecución de un intérprete que analiza y ejecuta el programa línea por línea, actualizando el estado de ejecución.

Fallos comunes

  • El agente inventa resultados de herramientas inexistentes (observación alucinada): En algunos casos, el agente completa con valores plausibles los fallos en la llamada a la herramienta o las respuestas vacías para avanzar al siguiente paso. Las respuestas de las herramientas deben incluir señales de error explícitas y se debe distinguir entre respuestas vacías y normales a nivel de código.
  • Condiciones de finalización del ciclo ambiguas que generan costos cercanos a la iteración infinita: Si los criterios para lograr el objetivo son demasiado laxos, el agente vuelve a llamar repetidamente a la misma herramienta. Es necesario implementar mecanismos de seguridad que impongan un límite máximo de iteraciones y un límite de costos a nivel de código.

Para profundizar

El texto ha sido reconstruido directamente por el equipo de investigación de BPD. Profundice consultando las fuentes originales.

  • Artículo original de ReAct (Yao et al., 2022): "ReAct: Synergizing Reasoning and Acting in Language Models".
  • Documentación oficial de LangChain: Referencia para la definición de herramientas y el ejecutor de agentes.
  • Materiales presentados sobre scBaseCount: Caso de estudio de un agente automatizado de curación de datos de células individuales.
  • Documentación de la API de myGene.info: La API REST de consulta de genes utilizada en este ejercicio práctico.

En el siguiente capítulo F34, se abordará la tendencia por la cual los propios objetivos que estos agentes invocan, es decir, los algoritmos de alineación, están siendo reemplazados por modelos fundamentales.

💬 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...