Saltar al contenido principal

GenAI Workflows

¡No todas las aplicaciones de IA son agentes! En el lenguaje de la ingeniería, los Agentes son sistemas con gran libertad y autonomía, pero con bajo control humano. Antes de pasar a los agentes, exploremos aplicaciones de LLM más controladas, porque en el futuro tus agentes las utilizarán como subsistemas.

Preguntas

  • ¿Qué no es un agente (en nuestro mundo de la ingeniería)?
  • ¿Qué es un Grafo Acíclico Dirigido (DAG)?
  • ¿Qué subtipos de workflows existen?

Pasos

Definición de ingeniería

Según la opinión que se está formando actualmente en la comunidad (X, Anthropic, OpenAI), los agentes son sistemas que funcionan cíclicamente hasta que deciden detenerse por sí mismos. Gracias a LLM, un Agente puede evaluar por sí mismo lo bien que ha realizado una tarea y suspender la ejecución (por ejemplo, mediante la llamada a ToolCall: ReturnFinalAnswer).

La mayoría de los agentes avanzados ahora, además de evaluar la ejecución de la tarea, también planifican de forma independiente los subpasos para lograr el objetivo, y se repiten en cada paso hasta que se completa, y solo entonces pasan a los siguientes pasos.

Por lo tanto, todo lo que es un DAG - directed acyclic graph - grafo acíclico dirigido - no es un agente.

Brevemente sobre DAG

or

Excepción

Si la ciclicidad es provocada por una lógica estricta, se considera un workflow, no un agente.

A continuación, verá el workflow "Resumen de texto infinito", que resume recursivamente el texto hasta que alcanza una longitud corta específica. Esto no es un agente, sino un workflow, aunque tenga ciclicidad.

1. Lee este artículo de Anthropic

2. Ejemplos de workflows LLM de la vida real

tip

Estudia los ejemplos a continuación. Esto es importante para la visión arquitectónica.

Intenta "compilar" algunas pipelines en tu cabeza.

Intentamos escribir ejemplos de consultas/prompts: léelos si algo no está claro.

Comunicación y soporte
Clasificador de correo electrónico
Ejemplos de solicitudes de entrada
Correo electrónico 1:
De: client@example.com
Asunto: Problema con el pago
Mensaje: "Hola, pagué el pedido hace unos días, pero el estado no ha cambiado. Por favor, ayúdenme."

Correo electrónico 2:
De: user2@example.com
Asunto: Pregunta sobre el producto
Mensaje: "Buenos días, por favor, cuénteme sobre las características de su aplicación."
Prompt del sistema: Clasificador de correos electrónicos
Eres un modelo que clasifica los correos electrónicos entrantes como 'spam' o 'not_spam'.
Recibes como entrada el encabezado y el cuerpo del correo electrónico.
La salida es una sola palabra: 'spam' o 'not_spam'.
Prompt del sistema: Validador (¿puede la LLM responder?)
Eres un modelo que comprueba si la LLM puede responder a una solicitud de forma autónoma.
Recibes el cuerpo del correo electrónico.
Si la respuesta es simple, muestra 'simple_answer', de lo contrario 'complex_answer'.
Prompt del sistema: Generación de respuesta
Eres un asistente de atención al cliente. Redacta una respuesta cortés y concisa al cliente basándote en el texto del correo electrónico:
\"\"\"{email_body}\"\"\"
Triaje de solicitudes al servicio de soporte
Ejemplos de solicitudes de entrada
Solicitud 1: "¿Cómo restablezco la contraseña de mi cuenta?"
Solicitud 2: "Tengo un error al pagar la suscripción, número de pedido #12345."
Prompt del sistema: Clasificación del intent
Eres un modelo que, basándose en el mensaje del cliente, determina el intent: 'FAQ' o 'technical_support'.
La salida es 'FAQ' o 'technical_support'.
Prompt del sistema: LLM generación de respuesta por FAQ
Eres un asistente que genera una respuesta basada en las FAQ encontradas.
Entrada: consulta del cliente y contenido de las FAQ:
\"\"\"Pregunta: {faq_question}
Respuesta: {faq_answer}\"\"\"
Salida: respuesta completa al cliente.
Sumarización de documentos
Pipeline de sumarización de documentos
Ejemplos de documentos de entrada
Documento 1: Artículo sobre JavaScript (≈ 5.000 tokens)
Documento 2: Informe de ventas trimestral (≈ 8.000 tokens)
Prompt del sistema: LLM — sumarización de partes
Eres un modelo para la sumarización de fragmentos de texto.
Tu tarea es, basándote en el fragmento de entrada (≤ 6000 tokens), formar un resumen breve e informativo (≤ 500 tokens).
Entrada: fragmento de texto del documento.
Salida: resumen del fragmento.
Sumarización de texto infinito

Supongamos que solo puedes usar una LLM que quepa un máximo de 8000 tokens en sus capas de Atención. Como máximo, la LLM puede generar hasta 2000 tokens. (Total: 6000 tokens de input, 2000 de output)

Por ejemplo, para un texto de 18 megatokens, el algoritmo funcionará en 2 ciclos de sumarización:

  1. 1 ciclo: 18 000 tokens -> 6 000 tokens 1.1. 18 000 tokens -> 3 fragmentos de 6 000 tokens 1.2. 3 fragmentos de 6 000 tokens -> 3 resúmenes de 2 000 tokens 1.3. 3 resúmenes de 2 000 tokens -> concatenación en 1 resumen de 6 000 tokens
  2. 2 ciclo: 6 000 tokens -> 2 000 tokens 2.1. 6 000 tokens -> 1 fragmento de 6 000 tokens 2.2. 1 fragmento de 6 000 tokens -> 1 resumen de 2 000 tokens 2.3. 1 resumen de 2 000 tokens -> resumen final
Ejemplos de documento de entrada
Documento: Especificación técnica del producto (≈ 400.000 tokens)
Prompt del sistema: LLM — resume cada parte hasta 2000 tokens
Resume el texto en 2000 tokens.
Análisis y procesamiento de texto grande con lógica de administrador
Ejemplos de datos de entrada
Lógica de procesamiento: "Encuentra todas las menciones de las palabras 'error' y 'excepción', cuenta su frecuencia."
Texto: Logs de la aplicación (≈ 100.000 tokens)
Prompt del sistema: LLM — procesamiento de fragmento de texto
Eres un modelo analítico. Tu tarea es, basándote en la lógica dada por el usuario y el fragmento de texto de entrada, formar un informe parcial.
Entrada:
- Lógica de procesamiento: {lógica}
- Texto del fragmento: {texto}
Salida:
- Informe parcial.
Monitorización social y recomendaciones
Monitorización de redes sociales
Ejemplos de solicitudes de entrada
Solicitud 1: "Recopilar los últimos 100 tuits con el hashtag #nuestroProducto"
Solicitud 2: "Obtener publicaciones de Instagram de las últimas 24 horas con mención de la marca"
Ejemplo de prompt del sistema para el paso "análisis de sentimiento"
Eres un modelo de análisis de sentimiento de redes sociales. Tu tarea es clasificar cada publicación como "Negativa", "Neutral" o "Positiva".
Datos de entrada:
- Texto de la publicación: {texto}
Datos de salida:
- Tonalidad: {Negativa|Neutral|Positiva}
- Breve justificación de la clasificación.
Sistema de recomendación
Ejemplos de datos de entrada
Perfil del usuario:
- ID: 12345
- Historial de visualizaciones: ["Teléfono", "Auriculares", "Fundas"]
- Edad: 29
- Intereses: tecnología, música
Ejemplo de prompt del sistema para el paso "generación de recomendaciones"
Eres un sistema de recomendaciones basado en LLM. Tu tarea es, basándote en los embeddings del usuario y la lista de productos similares, formar cinco recomendaciones relevantes.
Datos de entrada:
- Embeddings del usuario: {vector}
- Lista de productos similares: [{id, nombre, embedding}, ...]
Datos de salida:
- Matriz JSON con recomendaciones:
[
{id: ..., nombre: ..., razón: ...},
...
]
Revisión de código y publicación
Revisión de código automatizada
Ejemplos de solicitudes de entrada
Solicitud 1: Pull Request con cambios en el archivo app.js:
```diff
- function add(a, b) { return a + b; }
+ function add(a, b) { return Number(a) + Number(b); }

Solicitud 2: Pull Request, eliminando variables no utilizadas en utils.js:

- const unused = 42;
+ // eliminado
</details>

<details>
<summary>Prompt del sistema: LLM — generación de comentarios</summary>

```text
Eres un asistente para la revisión de código automatizada.
Tu tarea es, basándote en el diff de Pull Request:
- detectar errores sintácticos o lógicos,
- señalar violaciones de la guía de estilo,
- proponer recomendaciones para mejorar el código.
Datos de entrada:
- diff de Pull Request: {diff}
Formato de salida (structured output):
[
{file: "app.js", line: 1, comment: "Se recomienda convertir explícitamente los parámetros a Number para una suma de cadenas segura."},
{file: "utils.js", line: 3, comment: "La variable 'unused' no se utiliza, vale la pena eliminarla."}
]
Publicación de blog
Ejemplos de solicitudes de entrada
Borrador del artículo:
"OpenAI presentó un nuevo modelo GPT-4. Ofrece capacidades mejoradas para la generación de texto, el soporte de código y el análisis de datos. Algunas partes del texto se pueden hacer más fluidas y expresivas..."
Prompt del sistema: LLM — revisión ortográfica
Eres un modelo para la revisión ortográfica de textos.
Tu tarea es encontrar y corregir errores tipográficos y errores de imprenta.
Entrada:
- texto del borrador: {draft_text}
Salida:
- texto corregido sin errores.
Prompt del sistema: LLM — mejora del estilo
Eres un modelo para la edición estilística de textos.
Tu tarea es hacer que el texto sea más fluido, claro y atractivo, conservando el significado original.
Entrada:
- texto después de la corrección ortográfica: {corrected_text}
Salida: texto editado.
Marketing y ventas
Personalización de la campaña de marketing
Ejemplos de solicitudes de entrada
Datos de CRM 1: {id: 101, nombre: "Anna", edad: 28, últimas_compras: ["zapatillas","camiseta"], intereses: ["deporte","viajes"]}
Datos de CRM 2: {id: 102, nombre: "Boris", edad: 35, últimas_compras: ["smartwatch"], intereses: ["tecnología","fitness"]}
Prompts del sistema
LLM: segmentación de la audiencia
Eres un modelo que, basándose en una lista de datos de CRM, segmenta a los clientes por categorías (edad, intereses, historial de compras).
Entrada: lista de clientes [{id, nombre, edad, últimas_compras, intereses}, ...]
Salida: matriz JSON de segmentos:
[
{segment_id: 1, criterios: "deportistas 25-35", clientes: [101, ...]},
...
]
LLM: generación de mensajes
Eres un asistente de redactor publicitario que crea correos electrónicos personalizados para cada segmento.
Entrada: segmento {segment_id, criterios, clientes} y plantilla de mensaje.
Salida: matriz JSON de mensajes:
[
{segment_id: 1, subject: "Oferta especial para deportistas", body: "..."},
...
]
Calificación de leads y upsale (Ventas)
Ejemplos de solicitudes de entrada
Lead 1: {id: "LID123", compañía: "Acme Corp", presupuesto: 50000, necesidad: "Sistema CRM"}
Lead 2: {id: "LID124", compañía: "Beta LLC", presupuesto: 150000, necesidad: "análisis de ventas"}
Prompts del sistema
LLM: calificación
Eres un modelo que evalúa los leads según su disposición a comprar.
Entrada: lead {id, compañía, presupuesto, necesidad}
Salida: {lead_id, status: "listo"/"no listo", score: número}
LLM: propuesta comercial
Eres un asistente de ventas que genera propuestas comerciales.
Entrada: lead {lead_id, compañía, necesidad, presupuesto} y plantilla de CP.
Salida: {lead_id, proposal: "texto de la propuesta comercial"}
LLM: análisis de respuestas
Eres un modelo para analizar los comentarios de los clientes.
Entrada: correspondencia {lead_id, mensajes: [...]}
Salida: {lead_id, sentiment: "positivo"/"negativo"/"neutral"}
LLM: generación de upsale
Eres un asistente de upsell que forma una propuesta adicional.
Entrada: lead {lead_id} e historial de interacciones.
Salida: {lead_id, upsell_offer: "texto de la propuesta adicional"}
Procesos operativos
Recompra automática de productos
Ejemplos de datos de entrada
{
"sales_data": [
{"product_id": "A1", "date": "2024-06-01", "quantity": 120},
{"product_id": "B2", "date": "2024-06-01", "quantity": 75}
],
"safety_stock": 50
}
Prompts del sistema
LLM: previsión de la demanda
Eres un modelo de previsión de la demanda.
Entrada: matriz de registros de ventas con campos {product_id, date, quantity}.
Tarea: basándose en datos históricos, predecir la demanda de cada producto para el próximo período.
Salida: matriz de objetos [{product_id, forecast_quantity}, ...].
LLM: generación de pedido
Eres un asistente para la formación de pedidos al proveedor.
Entrada: previsión de la demanda [{product_id, forecast_quantity}, ...] y parámetro de seguridad (safety_stock).
Tarea: calcular la cantidad del pedido para cubrir la demanda prevista más el stock de seguridad.
Salida: matriz de objetos [{product_id, order_quantity}, ...].
Verificación de la conformidad de los documentos
Ejemplos de datos de entrada
Tipo de documento: contrato de arrendamiento
Texto del documento:
"El presente contrato se celebra entre el Arrendador y el Arrendatario...
Artículo 1. Objeto del contrato...
Artículo 2. Plazo de validez..."
Prompts del sistema
LLM: extracción de puntos clave
Eres un modelo para extraer puntos clave de un texto jurídico.
Entrada: texto completo del documento.
Tarea: resaltar los números de los artículos y su breve contenido.
Salida: matriz de objetos [{article: número, summary: texto}, ...].
LLM: evaluación de la conformidad con las reglas
Eres un modelo de verificación de la conformidad de un documento con las normas establecidas.
Entrada: matriz de puntos clave y lista de reglas.
Tarea: para cada punto, determinar si cumple con las reglas.
Salida: [{article, compliance: "cumple"/"no cumple", comments}, ...].
LLM: formación de informe
Eres un asistente para la preparación de informes.
Entrada: resultados de la evaluación de la conformidad.
Tarea: generar un informe estructurado en markdown con las secciones "Puntos conformes" y "Infracciones".
Salida: texto markdown del informe.
Procesos de RR. HH.
Selección de currículums (Recruitment)
Ejemplos de datos de entrada
[
{
"name": "Iván Ivanov",
"skills": ["Python", "SQL", "Docker"],
"experience_years": 3,
"education": "Máster en Ciencias de la Computación"
},
{
"name": "Anna Petrova",
"skills": ["Java", "Spring", "Microservices"],
"experience_years": 5,
"education": "Licenciatura en TI"
}
]
Prompts del sistema
LLM: análisis de currículums
Eres un modelo para estructurar currículums.
Entrada: texto del currículum.
Tarea: extraer {name, skills, experience_years, education}.
Salida: objeto JSON con los campos del candidato.
LLM: evaluación de candidatos
Eres un modelo para evaluar currículums según criterios dados.
Entrada: objeto {name, skills, experience_years}.
Criterios: relevancia de las habilidades y años de experiencia.
Salida: {name, score: número de 0 a 100}.
LLM: programación de entrevista
Eres un asistente para la planificación de entrevistas.
Entrada: lista de candidatos que superaron el umbral y franjas horarias disponibles para la entrevista.
Tarea: asignar candidatos a las franjas horarias.
Salida: [{name, interview_time}, ...].
Automatización de la incorporación (RR. HH.)
Ejemplos de datos de entrada
{
"name": "Serguéi Kuznetsov",
"position": "Desarrollador Frontend",
"start_date": "2024-07-01"
}
Prompts del sistema
LLM: preparación de documentos
Eres un asistente de RR. HH. para la preparación de documentos corporativos.
Entrada: {name, position, start_date}.
Tarea: formar una lista y plantillas de documentos (contrato de trabajo, NDA, etc.).
Salida: [{document_type, template_text}, ...].
LLM: instrucciones de TI y accesos
Eres un modelo para generar instrucciones para la configuración del entorno de TI.
Entrada: puesto del empleado.
Tarea: crear una lista de verificación para la creación de cuentas y la configuración del software.
Salida: lista de elementos de la lista de verificación.
LLM: plan de formación
Eres un asistente para la formación de nuevos empleados.
Entrada: puesto.
Tarea: desarrollar un plan de formación paso a paso con módulos y plazos.
Salida: [{module, duration_days}, ...].
LLM: recopilación de feedback
Eres un modelo para generar un cuestionario de feedback.
Entrada: lista de etapas de la incorporación.
Tarea: formular preguntas para cada etapa.
Salida: [{stage, questions: [...]}, ...].
LLM: notificación a RR. HH.
Eres un asistente para notificar a RR. HH. sobre los resultados.
Entrada: resultados del feedback.
Tarea: redactar un breve mensaje con las conclusiones clave.
Salida: texto de la notificación.
DevOps
Monitorización de la pipeline CICD
Ejemplos de datos de entrada
Commit: {id: "abc123", author: "ivan", timestamp: "2024-06-15T10:23:00Z"}
Logs de compilación: "ERROR: Module not found: 'utils.js'"
Ejemplos de prompts del sistema
LLM: análisis de logs
Eres un modelo para analizar logs de CI. Entrada: texto de los logs de compilación. Tarea: encontrar la causa del error y proponer una solución. Salida: {error_type, message, recommendation}.
LLM: análisis de resultados
Eres un modelo para analizar los resultados de las pruebas automáticas. Entrada: salida del ejecutor de pruebas. Tarea: identificar las pruebas fallidas y describir el problema. Salida: [{test_name, status: "fail"/"pass", log}].
Pruebas automáticas: generación y análisis
Ejemplos de datos de entrada
Cambios en el código: diff de la función sum(a, b)
Resultados de las pruebas: 3 passed, 1 failed (test_sum.js)
Ejemplos de prompts del sistema
LLM: generación de pruebas automáticas
Eres un asistente para la generación de pruebas automáticas. Entrada: diff del código. Tarea: generar pruebas unitarias en Jest para funciones nuevas o modificadas. Salida: código de las pruebas.
LLM: análisis de resultados
Eres un modelo para analizar los resultados de las pruebas. Entrada: salida del ejecutor de pruebas. Tarea: resaltar las pruebas fallidas y sugerir opciones de corrección. Salida: [{test_name, status, suggestion}].
Otros casos de uso
Generación de cuestionarios para la formación
Ejemplos de datos de entrada
Material de formación: "Fundamentos de HTTP: métodos GET/POST, códigos de estado"
Ejemplos de prompts del sistema
LLM: generación de preguntas
Eres un modelo para generar preguntas de formación. Entrada: texto del material. Tarea: formular 5 preguntas de diferentes tipos (abiertas, de opción múltiple). Salida: [{question, type}].
LLM: verificación de la calidad
Eres un modelo para evaluar la calidad de las preguntas. Entrada: lista de preguntas. Tarea: verificar la corrección de las formulaciones y la dificultad. Salida: [{question, ok: true/false, comment}].
Automatización de informes de gastos
Ejemplos de datos de entrada
{
"transactions": [
{"id": "T1", "amount": 250},
{"id": "T2", "amount": 75}
]
}
Ejemplos de prompts del sistema
LLM: extracción de gastos
Eres un modelo para extraer datos sobre gastos. Entrada: array de transacciones. Tarea: devolver una lista de {id, amount}.
LLM: categorización
Eres un modelo para clasificar gastos. Entrada: lista de {id, amount}. Tarea: asignar una categoría de la lista. Salida: [{id, category}].
Planificador personal de viajes
Ejemplos de datos de entrada
{
"destination": "Barcelona",
"dates": ["2024-07-01", "2024-07-07"],
"preferences": ["museos", "playa"]
}
Ejemplos de prompts del sistema
LLM: plan de ruta
Eres un asistente para la planificación de viajes. Entrada: parámetros del viaje. Tarea: proponer una ruta por días. Salida: [{day, activities}].
LLM: generación de reservas
Eres un modelo para formar reservas. Entrada: ruta. Tarea: generar datos para la reserva de hotel y transporte. Salida: [{service, details}].
LLM: formateo del plan
Eres un asistente para formatear el plan. Entrada: datos de las reservas y la ruta. Tarea: recopilar un documento único con el horario. Salida: markdown.
Enrutamiento de solicitudes a cuatro departamentos
Ejemplos de solicitudes entrantes
Solicitud 1: "¡Hola! Quiero saber sobre las nuevas tarifas."
Solicitud 2: "No puedo pagar la factura, el pago es rechazado."
Solicitud 3: "¿Cómo conecto el roaming internacional?"
Solicitud 4: "¿Dónde puedo encontrar el contrato de oferta?"
Prompt del sistema: Enrutamiento LLM
Eres un modelo de enrutamiento de solicitudes entrantes de clientes.
Datos de entrada:
- Texto de la solicitud del cliente: {request}
Tarea: determinar la dirección de procesamiento de la solicitud: uno de los valores "Ventas", "Soporte técnico", "Facturación", "Preguntas generales".
Salida: cadena con uno de los valores especificados.
Prompt del sistema: Procesamiento de solicitudes LLM
Eres un modelo para procesar las solicitudes de los clientes en la dirección {direction}.
Datos de entrada:
- Texto de la solicitud del cliente: {request}
Tarea: formar una respuesta detallada y cortés a la solicitud de acuerdo con las especificidades de la dirección.
Salida: respuesta de texto al cliente.
Ejemplos de flujos de trabajo Web3
Minting y listado de NFT
Ejemplos de datos de entrada
{
"name": "CryptoKitty #2024",
"description": "NFT exclusivo con un gatito animado",
"image": "https://example.com/cat.gif",
"attributes": [
{ "trait_type": "rarity", "value": "epic" },
{ "trait_type": "background", "value": "galaxy" }
]
}
Prompts del sistema
LLM: generación de metadatos JSON
Eres un modelo para generar metadatos JSON de NFT en formato ERC-721.
Entrada: {name, description, image, attributes}.
Salida: objeto JSON sin comentarios innecesarios.
LLM: generación de la descripción para el listado
Eres un modelo para escribir descripciones de venta de NFT.
Entrada: metadatos JSON de NFT.
Tarea: formar una descripción corta (2–3 frases) y pegadiza.
Salida: texto limpio.
Swap de tokens en DEX
Ejemplos de solicitudes entrantes
Solicitud 1: "Cambiar 1.5 ETH a DAI al mejor tipo de cambio."
Solicitud 2: "Swapear 1000 USDC a USDT con comisiones mínimas."
Prompts del sistema
LLM: análisis de los parámetros del swap
Eres un modelo para extraer los parámetros del swap de una solicitud de texto.
Entrada: texto de la solicitud.
Tarea: devolver JSON {from_token, to_token, amount}.
LLM: selección de la ruta óptima
Eres un modelo para seleccionar la ruta óptima del swap en DEX.
Entrada: JSON {from_token, to_token, amount}.
Tarea: proponer una ruta de intercambio a través de pools, minimizando el deslizamiento.
Salida: JSON {route, estimated_gas}.
Creación de una propuesta en DAO
Ejemplos de solicitudes entrantes
Idea 1: "Proponer aumentar el pool de liquidez a través de una comisión del 5% de las transacciones."
Idea 2: "Implementar un programa de recompensas para los participantes activos de DAO."
Prompts del sistema
LLM: borrador del texto de la propuesta
Eres un modelo para transformar una idea en una propuesta formal de DAO.
Entrada: texto de la idea.
Tarea: formar JSON {title, description}.
LLM: formateo según los requisitos de DAO
Eres un modelo para formatear un borrador según la plantilla de DAO.
Entrada: JSON {title, description}.
Requisitos: title hasta 100 caracteres, description hasta 1000 caracteres.
Salida: JSON {title, description}.
LLM: resumen de los resultados de la votación
Eres un modelo para crear un resumen final de la votación.
Entrada: lista de votos [{voter, vote}].
Tarea: contar los resultados y formular una conclusión.
Salida: resumen de texto.
Auditoría automatizada de contratos inteligentes
Ejemplos de datos de entrada
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleToken {
mapping(address => uint256) public balances;
function mint(address to, uint256 amount) public {
balances[to] += amount;
}
}
Prompts del sistema
LLM: análisis de seguridad
Eres un modelo para analizar la seguridad de los contratos inteligentes.
Entrada: código fuente del contrato.
Tarea: identificar vulnerabilidades (overflow, reentrancy, etc.) y dar recomendaciones.
Salida: JSON [{issue, severity, recommendation}].
LLM: generación de informe sobre vulnerabilidades
Eres un modelo para redactar un informe basado en el análisis de vulnerabilidades.
Entrada: resultados del análisis de seguridad.
Tarea: escribir un informe detallado en markdown con una descripción de cada problema y recomendaciones.
Salida: markdown.

En proyectos empresariales industriales, los workflows a menudo constan de más de 20 nodos, mezclados con integraciones de API, lógicas estrictas, subworkflows LLM y Agentes de IA. Y a veces pueden llegar hasta 100 nodos.

2. Enrutamiento avanzado en LLM Workflows

Pasos adicionales

E1. langchain

LangChain es una biblioteca para construir y utilizar LLM-workflows. Es antigua, pero está bien documentada y tiene una gran comunidad.

Revisa qué entidades hay en LangChain: https://python.langchain.com/docs/concepts/

Ejemplo del código langchain más simple.

E2. Meta-comprensión de patrones

  1. https://refactoring.guru/design-patterns/chain-of-responsibility
  2. https://refactoring.guru/design-patterns/command
Contenido obsoleto

Ahora sabemos...

En esta lección, nos familiarizamos con los fundamentos de los workflows LLM: analizamos la definición de ingeniería de los agentes y la diferencia entre los sistemas cíclicos y las estructuras DAG, estudiamos ejemplos prácticos, patrones de diseño y profundizamos en el enrutamiento.

peligro

Sin embargo, no seas demasiado estricto con otras personas en las definiciones. Comprender la diferencia entre agentes, chatbots y workflows solo es necesario para los ingenieros, para evitar la falta de comunicación.

Los gerentes, clientes e inversores no deben comprender esta diferencia. Déjales la oportunidad de llamar a todo como les convenga: AI Agentes, "redes neuronales", "inteligencia artificial"".

Ejercicios

  1. Si tu sistema tiene ciclicidad, ¿es un agente o un workflow?
  2. ¿Qué patrones de ramificación recuerdas?
  3. *Para aquellos que completaron el módulo sobre algoritmos para GenAI:
    • piensa en cómo puedes combinar enfoques algorítmicos y workflows LLM
  4. Diseña en papel:
    • Un sistema de respuesta automática a consultas de soporte en una aplicación móvil de entrega de comida
    • Un workflow para respuestas automáticas a mensajes en tu mensajero de un contacto desconocido
    • Un sistema para la creación automática de publicaciones para tu blog
    • Un sistema de puntuación de un candidato para una vacante, luego un sistema de comparación de varios candidatos a la vez