Haciendo preguntas a un DataFrame: cómo el agente Pandas de LangChain crea gráficos
Cómo create_pandas_dataframe_agent convierte una pregunta en lenguaje cotidiano en código de pandas y un gráfico, cómo inspeccionar sus pasos intermedios, y las medidas de protección que necesita.
Fuentes: Building Your Data Visualization Agent: A Student’s Guide to AI Analytics
Explorar un conjunto de datos que antes requería dominio del lenguaje de consultas o de una biblioteca de gráficos para poder observar siquiera una tendencia. Con un agente impulsado por LLM frente a un DataFrame de pandas, en cambio se puede escribir una solicitud como “dibujar el recuento por género con barras” y obtener tanto un gráfico como una breve explicación. Esa comodidad conlleva riesgos reales, ya que el agente funciona al escribir y ejecutar código en Python en su máquina. Esta guía explica los tres componentes involucrados, sigue una pregunta paso a paso hasta que se convierte en un gráfico, muestra cómo inspeccionar el código que escribe el agente y enumera las medidas de protección necesarias antes de confiar en sus resultados.
Un punto importante desde el principio: create_pandas_dataframe_agent forma parte del paquete experimental de LangChain. Es muy adecuado para la creación de prototipos y la exploración, pero no está diseñado para su uso en entornos de producción a menos que se implementen revisiones exhaustivas por parte de humanos y medidas de aislamiento alrededor de él.
De la sintaxis a la intención
El flujo de trabajo tradicional exige que sepas cómo hacer algo antes de poder aprender nada: qué método de pandas agrupa filas, qué llamada de matplotlib dibuja un gráfico de barras, cómo etiquetar los ejes. El enfoque con agentes invierte esta lógica: describes lo que deseas saber y el modelo determina cómo calcularlo y mostrarlo.
El efecto práctico es que más personas pueden trabajar directamente con los datos. Un analista de negocios o un experto en el área que comprende las preguntas pero no la sintaxis puede llegar a una respuesta sin tener que esperar a alguien que conozca las bibliotecas. La atención se desplaza de cómo escribir el código a qué preguntas son realmente importantes para tomar una decisión. El compromiso, mencionado más abajo, es que ahora hay que verificar código que no se ha escrito.
Los tres componentes detrás del agente
Una forma útil de visualizar el sistema es como un motor de razonamiento, un almacén de datos estructurado y un conector entre ellos.
El LLM como motor de razonamiento
El modelo de lenguaje interpreta su solicitud, escribe el código en Python necesario para responderla y elige un tipo de gráfico adecuado, como por ejemplo un gráfico de barras para mostrar las cantidades por categoría. Su función es servir como puente entre el lenguaje natural y la lógica ejecutable, incluyendo determinar qué representan realmente los datos.
El DataFrame como almacén organizado de datos
pandas almacena los datos en forma de tabla con filas y columnas etiquetadas. Tomemos como ejemplo el conjunto de datos UCI Student Alcohol Consumption: atributos como sex y age se guardan como columnas, listas para ser filtradas y agregadas. Esta estructura consistente es lo que permite al agente realizar operaciones precisas rápidamente.
LangChain como conector
create_pandas_dataframe_agent proporciona el prompt y las herramientas ya preparadas que permiten al modelo acceder al DataFrame. En realidad, el agente recibe una herramienta de ejecución en Python con su DataFrame disponible como df, además de un prompt que indica al modelo cómo utilizarlo. Usted no necesita establecer esa conexión por su cuenta.
Cómo una pregunta se convierte en un gráfico
Al seguir el flujo de una sola solicitud a través del sistema, queda claro cuál es la función de cada componente. Supongamos que la pregunta es “Dibuje el recuento por género en forma de barras.”
- Llega la pregunta. El modelo recibe el texto y comienza a interpretar lo que se solicita.
- El modelo relaciona la solicitud con los datos. Reconoce que “género” corresponde a la columna
sexy decide que un gráfico de barras es adecuado para mostrar el recuento por categoría.
M y F, aplicando cualquier filtrado necesario, y el conector lo ejecuta.Los pasos 2 y 4 son donde ocurren la mayoría de los errores. Un mapeo incorrecto de columnas o un filtrado ligeramente erróneo aún pueden generar un gráfico de aspecto limpio, y esa es precisamente la razón por la que el siguiente apartado es importante.
Adentrándonos: pasos intermedios y código generado
Es útil separar el código que ejecutas del código que ejecuta el agente. Puedes llamar a df.head() tú mismo para ver las primeras cinco filas y comprender las columnas. En cambio, el agente escribe su propio código para responder a cada solicitud, y puedes hacer que ese código sea visible.
Al crear el agente con create_pandas_dataframe_agent, pasa return_intermediate_steps=True. El resultado incluirá entonces cada acción que realizó el agente, junto con el código que ejecutó y la salida que observó. Esto permite tres cosas:
- Verificación: puedes confirmar que el agente calculó su respuesta en lugar de adivinarla. Verás expresiones reales como
len(df)para contar filas odf[df['age'] == 18]para seleccionar a los estudiantes de 18 años.
verbose=True, también se imprime en la consola el razonamiento del agente y el código generado mientras se ejecuta, de modo que cuando un resultado parezca extraño pueda ver dónde falló la lógica.Las dos opciones son complementarias. verbose=True es útil cuando observa una ejecución de forma interactiva, mientras que return_intermediate_steps=True devuelve los pasos como datos, los cuales puede registrar, mostrar en un cuaderno de notas o verificar automáticamente.
Seguridad: el agente ejecuta el código que escribe
Dado que el agente ejecuta Python generado por modelos, una instrucción maliciosa o simplemente errónea puede leer archivos, realizar llamadas a la red o eliminar datos con los mismos privilegios que su proceso. Las versiones recientes de langchain_experimental lo dejan claro al negarse a crear el agente a menos que se especifique allow_dangerous_code=True; consulte la documentación actual correspondiente a su versión. Ese indicador es un reconocimiento del riesgo, no una medida de mitigación.
También considere como no fiables todos los datos que no haya creado usted mismo. Una celda que contenga texto, como una instrucción para el modelo, puede influir en el código que este genera, lo cual constituye una forma de inyección de prompts fácil de pasar por alto cuando la entrada es un archivo de hoja de cálculo.
Lista de verificación para un uso responsable
Mantenga a alguien al tanto de cada proyecto y revise los siguientes puntos:
- Ejecute el agente en un entorno aislado, como un contenedor o un ambiente desechable sin credenciales y con acceso limitado a archivos y redes, para que el código no intencionado o malicioso no pueda causar daños.
- Escriba instrucciones claras y específicas. Indicar los nombres exactos de las columnas y el tipo de agregación deseado reduce la posibilidad de que el agente elija el campo incorrecto o invente uno.
- Verifique los resultados con su propio conocimiento. Nunca acepte un gráfico a ciegas; utilice los pasos intermedios para confirmar que se utilizaron las columnas, filtros y cálculos correctos.
- Itere. El análisis es un diálogo. Si el primer gráfico no es del todo preciso, utilice la información obtenida en los pasos intermedios para mejorar la siguiente solicitud.
- Trabaje con una copia de los datos. Las operaciones que modifican el DataFrame directamente pueden cambiar silenciosamente lo que se muestre en preguntas posteriores.
Puntos clave
- Un agente de pandas combina tres componentes: un LLM que razona y escribe código, un DataFrame que almacena datos estructurados y la función
create_pandas_dataframe_agentde LangChain que los conecta. - La mayoría de los errores ocurren cuando el modelo asocia palabras a columnas o escribe el código de análisis, aunque aún así puede generar gráficos convincentes.
- Los parámetros
return_intermediate_steps=Trueyverbose=Truepermiten ver el código generado, lo que facilita la verificación y la depuración. - El agente ejecuta código Python arbitrario, se encuentra en un paquete experimental y requiere entornos aislados así como revisión humana antes de poder utilizarse en entornos de producción.
- El agente aporta velocidad; usted proporciona el contexto del dominio y el juicio crítico necesarios para convertir sus resultados en una conclusión precisa.
Lecturas relacionadas
- Enrutamiento de Preguntas a Través de Herramientas SQL y Búsqueda Web con un Agente Gemini — Cómo un agente de llamadas a herramientas de LangChain en Vertex AI elige entre tres herramientas de texto a SQL de SQLite y la búsqueda web en tiempo real, además de los errores relacionados con datos, dependencias y autenticación que se pueden esperar.
- Refuerzo de un Agente Python LangChain con Siete Middlewares Incorporados — Aprenda cómo los middlewares de LangChain 1.0 añaden funcionalidades como resumen, límites de llamadas, reintentos, fallback de modelos, eliminación de información personal sensible y aprobación humana a un agente Gemini sin afectar su lógica principal.