Inicio / Artículos

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.

Editor: REACTAPP.TOP6 min de lectura1328 palabras

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

  1. Llega la pregunta. El modelo recibe el texto y comienza a interpretar lo que se solicita.
  2. El modelo relaciona la solicitud con los datos. Reconoce que “género” corresponde a la columna sex y decide que un gráfico de barras es adecuado para mostrar el recuento por categoría.
  • Se accede a los datos. No existe una base de datos separada; el DataFrame en memoria es la fuente de datos.
  • Se ejecuta el análisis. El modelo escribe código que cuenta los valores M y F, aplicando cualquier filtrado necesario, y el conector lo ejecuta.
  • Se interpreta el resultado. El modelo lee los conteos y los enmarca dentro del contexto de la población estudiantil.
  • Se presenta la respuesta. Se obtiene un gráfico de barras de la distribución junto con un resumen en lenguaje sencillo.
  • 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 o df[df['age'] == 18] para seleccionar a los estudiantes de 18 años.
  • Depuración: al establecer 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.
  • Aprendizaje: el agente deja de ser una caja negra y se convierte en una demostración en tiempo real de cómo se utiliza pandas para manipular datos.
  • 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_agent de 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=True y verbose=True permiten 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