El mundo de la IA generativa ha experimentado un gran crecimiento en el último año y medio debido a la viralización de la disciplina tras la salida al mercado de ChatGPT en noviembre de 2022.

Ahora mismo hay dos maneras de interactuar con esta tecnología: a través de las plataformas habilitadas por las compañías para un acceso sencillo y para cualquier usuario, y mediante sus APIs, pensadas para el desarrollo de soluciones industrializables. Ambas tienen detrás los mismos modelos, pero difieren en la manera en la que se utilizan.

En este post nos centraremos en los modelos, no prestando atención a las plataformas donde el gran público tiene acceso a estas herramientas. Enfrentaremos a GPT-4, el modelo más avanzado de OpenAI, con Gemini Pro de Google, y con el recientemente publicado Mistral Large, de Mistral AI.

Los modelos

En el mundo de la IA generativa existen múltiples modelos que han sido lanzados al mercado desde que OpenAI abriera la veda con ChatGPT. En esta primera sección describiremos cuáles son las generalidades de cada uno de los modelos de relevancia para este artículo.

OpenAI pegó primero y pegó dos veces. Cuando sacó al mercado ChatGPT, lo hizo con el modelo GPT-3 detrás. En los meses venideros evolucionó, y a día de hoy su versión gratuita cuenta con GPT-3.5 detrás, y la de pago, llamada “Plus”, con GPT-4.

La relevancia de ser la primera queda patente en qué modelo prefiere tanto el usuario medio como las empresas. Hemos visto en documentaciones de herramientas de IA generativa, como LangChain, LangSmith o Langfuse, que el modelo de pruebas suele ser casi siempre el de OpenAI.

Esto le ha permitido a la empresa obtener una ventaja competitiva respecto a sus competidores. Además, los de San Francisco han rodeado a su modelo estrella con lo que llaman tools basadas en modelos independientes que lo hacen un modelo capaz de producir y analizar imágenes, transcripciones, pequeñas bases de datos, y desde hace muy poco, audio y vídeo.

Google respondió a OpenAI con el lanzamiento de Gemini 1.0 en diciembre del 2023. Se ponía así a la altura de OpenAI en cuanto a modelos de lenguaje. Una de sus principales características y diferencias con GPT-4 consiste en que es multimodal desde el entrenamiento, pudiendo entender y generar texto, imágenes, audio, vídeo y código.

Gemini viene en tres tallas: ULTRA, el más capaz. PRO, para tareas cotidianas y NANO, pensado para ser ejecutado en los teléfonos móviles. En esta comparativa nos basaremos en su versión intermedia.

A los grandes gigantes americanos que solo parecían tener competencia dentro de sus fronteras se les suma el parisino Mistral Large. Large es el modelo más reciente lanzado por Mistral AI, con capacidades de generación de texto.

Según indican, puede alcanzar capacidades de razonamiento de primer nivel en tareas complejas de razonamiento multilingüe, como comprender textos, transformarlos e incluso, como ya hemos visto en otros modelos de este tipo, generar código fuente.

Cómo usarlos

Como hemos indicado, se pueden usar estos modelos a través de las plataformas de sus empresas, o a través de APIs.

La manera más sencilla, pero no gratuita, de acceder a GPT-4 es a través de ChatGPT Plus. La mejora de plan respecto al gratuito permite usar este modelo para el análisis de datos, generación de imágenes, tener una conversación por voz con el modelo (que funciona muchísimo mejor en inglés que en otras lenguas), e integrarlo con los GPTs, que son las modificaciones personalizadas e integrables que los usuarios hacen del modelo.

Cabe destacar que se puede acceder a GPT-4 de manera gratuita a través de Microsoft Copilot en el buscador Microsoft Edge (cuenta también con versión de pago) o el motor de búsqueda Bing AI.

GPT-4 también es accesible a través del Playground de OpenAI dentro de su página web. Si queremos crear herramientas basadas en GPT-4 a nivel empresarial, deberemos acceder a él a través de la API, para la que necesitaremos registrarnos en OpenAI, y crear una llave API, con la que podremos acceder a diferentes versiones de GPT-4, así como a numerosos parámetros de configuración.

Para el caso de acceder a través de la API, también está disponible a través de Azure OpenAI Service. Además, GPT-4 está detrás de otros productos de IA generativa, como el asistente de código Github Copilot, y del producto de la startup americana Perplexity AI.

La manera más fácil de empezar a usar Gemini es mediante la aplicación de Google con el mismo nombre (antes conocida como Bard) pues da la casualidad de que el producto Gemini usa por detrás el modelo de Gemini Pro. Gemini está disponible en España en cuentas personales, pero aún no de empresa a través de Google Workspace.

Si lo que queremos es usar el modelo de una manera más directa, la siguiente opción es usar la consola de Google Cloud Platform en su apartado de Vertex AI Studio, donde podemos realizar llamadas, editar y guardar prompts y cambiar los parámetros de configuración de modelo.

Mistral Large se puede probar de distintas formas. La forma más directa aunque haya lista de espera para acceder, es utilizando este nuevo modelo desde la interfaz de usuario que proporcionan en su web, llamado Le Chat.

Similar al Playground de OpenAI, Mistral AI ofrece la posibilidad de acceder a sus modelos a través de La Plateforme, alojada en la infraestructura propia de Mistral AI en Europa, proporcionan un endpoint que permite hacer llamadas para así poder crear aplicaciones o servicios de forma directa.

Igual que ocurría con OpenAI, se puede acceder a los modelos a través de Azure. Actualmente, está disponible a través de Azure AI Studio y Azure Machine Learning a través del API que proveen. Eso sí, solo lo podremos encontrar en las regiones de “East US 2” o “France Central”.

La última forma de poder consumir este modelo es a través de un despliegue en nuestro propio entorno (On-Premise), ya que dan acceso a los pesos del modelo. Eso sí, para conseguirlo tendremos que contactar con ellos de forma directa.

Nuestras pruebas

Una vez hemos presentado los tres modelos, vamos a evaluar las capacidades de los tres modelos. Prestaremos atención a tres parámetros clave en los LLM:

Para ello los pondremos a prueba en tres escenarios diferentes (con sus respectivos prompts). Les preguntaremos por un tema general, por un tema de actualidad, y que haga las funciones de asistente de código.

Prueba 1: Receta italiana sin pasta

Reto

En esta primera prueba queremos principalmente evaluar que el modelo es capaz de adherirse a todas las instrucciones, además de cumplir con los requisitos comunes de los otros dos casos de uso. Usaremos este prompt:

"Dime la receta de una comida típica italiana que no tenga ningún tipo de pasta. Tampoco puede ser el típico plato italiano que podamos encontrar en un restaurante italiano alrededor del mundo (pizza, lasaña, risoto, calzone, etc). Debe ser un plato 'de abuela' poco conocido.
Aquí tienes otros requisitos:
- Debe llevar berenjenas.
- Tiempo de preparación inferior a 2 horas.
- Tiene que poder hacerse sin horno, pero sí con airfryer.
- Para dos adultos y un niño de 5 años.
- Los ingredientes deben estar en italiano, y traducidos al español entre paréntesis."

Respuestas

  1. Mistral AI Large
Claro, te propongo un plato italiano menos conocido pero delicioso que cumple con todos tus requisitos. Se trata de la "Caponata di Melanzane" (Caponata de berenjenas), un plato típico de la región de Sicilia.

Ingredientes (para dos adultos y un niño de 5 años):

- 1 Melanzana (Berenjena)
- 1 Cipolla (Cebolla)
- 1 Gambo di sedano (Tallo de apio)
- 1 Carota (Zanahoria)
- 400 g di pomodori pelati (Tomates pelados)
- 30 g di olive verdi (Aceitunas verdes)
- 30 g di capperi (Alcaparras)
- 2 cucchiai di zucchero (2 cucharadas de azúcar)
- 3 cucchiai di aceto di vino bianco (3 cucharadas de vinagre de vino blanco)
- Olio d'oliva (Aceite de oliva)
- Sale e pepe (Sal y pimienta)
- Basilico fresco (Albahaca fresca)

Preparación:

1. Corta la berenjena en cubos y déjalos en un colador con sal durante unos 30 minutos para que suelten el amargor. Después, sécalos con papel de cocina.

2. Calienta un poco de aceite de oliva en una sartén y sofríe la cebolla picada, el tallo de apio picado y la zanahoria picada hasta que estén tiernos.

3. Añade los tomates pelados y triturados, las aceitunas verdes picadas, las alcaparras, el azúcar y el vinagre de vino blanco. Deja cocinar a fuego medio durante unos 15 minutos.

4. Mientras tanto, fríe los cubos de berenjena en la airfryer a 200ºC durante unos 10 minutos o hasta que estén dorados.

5. Añade las berenjenas fritas a la sartén con la salsa y deja cocinar todo junto durante unos 5 minutos más.

6. Agrega unas hojas de albahaca fresca picada, sal y pimienta al gusto.

7. Sirve la Caponata di Melanzane caliente o fría, según tu preferencia.

¡Disfruta de este delicioso plato italiano menos conocido!
  1. OpenAI GPT-4
OpenAI GPT-4
La receta que te propongo es la de "Involtini di Melanzane" (Rollos de Berenjena). Es un plato tradicional italiano que no es tan conocido internacionalmente como la pizza o la lasaña, pero es muy apreciado en las cocinas caseras de Italia. Estos rollos de berenjena se pueden cocinar perfectamente en una airfryer y se ajustan a tus requisitos de tiempo y porciones.

Ingredientes
- 2 melanzane (berenjenas) grandes, cortadas en rodajas longitudinales de unos 5mm de espesor
- 150g di ricotta (requesón)
- 50g di parmigiano reggiano (queso parmesano), rallado
- 1 uovo (huevo)
- 100g di prosciutto cotto (jamón cocido), en rebanadas finas
- Pomodori secchi (tomates secos) al gusto, picados finamente
- Basilico (albahaca), un puñado de hojas frescas
- Sale e pepe (sal y pimienta) al gusto
- Olio d'oliva (aceite de oliva) para freír

Instrucciones
1. Preparar las berenjenas: Salpimenta las rodajas de berenjena y déjalas reposar unos 30 minutos para que suelten su agua amarga. Sécalas con papel de cocina.

2. Cocinar las berenjenas: Precalienta la airfryer a 180°C. Unta ligeramente las rodajas de berenjena con aceite de oliva y colócalas en la cesta de la airfryer. Cocínalas durante 10 minutos o hasta que estén doradas y tiernas, dándoles la vuelta a mitad de cocción.

3. Preparar el relleno: Mientras se cocinan las berenjenas, mezcla en un bol la ricotta, el parmesano, el huevo, los tomates secos picados, y algunas hojas de albahaca picadas. Sazona con sal y pimienta al gusto.

4. Armar los involtini: Sobre cada rodaja de berenjena coloca una rebanada de prosciutto y una porción de la mezcla de ricotta. Enrolla las berenjenas cuidadosamente.

5. Cocinar los involtini: Coloca los rollos de berenjena rellenos en la cesta de la airfryer, asegurándote de que no se toquen entre sí. Cocina a 180°C durante unos 10-15 minutos o hasta que estén dorados y el relleno esté caliente.

6. Servir: Sirve los involtini de melanzane calientes, adornados con hojas frescas de albahaca y, si lo deseas, un poco más de queso parmesano rallado por encima.

Este plato es una excelente manera de disfrutar de las berenjenas de una forma diferente y deliciosa, perfecto para una comida en familia.
  1. Google Gemini Pro
Parmigiana di Melanzane in Friggitrice ad Aria
Ingredientes (para 2 adultos y 1 niño):
2 melanzane (berenjenas)
200 g di passata di pomodoro (puré de tomate)
100 g di mozzarella (mozzarella)
50 g di parmigiano grattugiato (parmesano rallado)
1 spicchio d'aglio (diente de ajo)
Basilico fresco (albahaca fresca)
Olio extravergine d'oliva (aceite de oliva virgen extra)
Sale e pepe (sal y pimienta)
Instrucciones:
Prepara las berenjenas: Corta las berenjenas en rodajas de 1 cm de grosor. Espolvorea sal sobre las rodajas y déjalas reposar durante 30 minutos para eliminar el exceso de humedad.
Cocina las berenjenas: Calienta el aceite de oliva en la air fryer a 200 °C. Seca las rodajas de berenjena con papel absorbente y cocínalas en la air fryer durante 10-12 minutos, o hasta que estén doradas y tiernas.
Prepara la salsa de tomate: En una sartén, calienta el aceite de oliva y sofríe el ajo picado. Añade el puré de tomate, la sal y la pimienta. Cocina a fuego lento durante 15 minutos, o hasta que la salsa se haya espesado.
Monta la parmigiana: En una fuente apta para air fryer, coloca una capa de rodajas de berenjena. Cubre con una capa de salsa de tomate, mozzarella y parmesano rallado. Repite las capas hasta terminar con una capa de parmesano rallado.
Cocina en la air fryer: Cocina la parmigiana en la air fryer a 180 °C durante 15-20 minutos, o hasta que el queso se haya derretido y esté dorado.
Sirve: Espolvorea con albahaca fresca y sirve caliente.

Resultados

A fin de visualizar los puntos fuertes de los modelos, hemos elaborado esta tabla comparativa:

Mistral Large GPT-4 Gemini Pro
¿Contesta en español directamente? No (hay que indicárselo de antemano)
¿Solo una receta?
¿Es poco conocida?
¿Tiene berenjenas?
¿Tiempo de preparación inferior a 2 horas? Sí (45-60 min)
¿No usa horno? Sí, pero necesita satén
¿Usa air fryer?
¿Tiene en cuenta el número de comensales? No
¿Todos los ingredientes en italiano?
¿Todos los ingredientes traducidos al español entre paréntesis?
¿Lenguaje sencillo?
¿Información actualizada? No aplica No aplica No aplica
Alucinaciones, ¿es veraz la información?
TOTAL 10/12 10/12 11/12

Como vemos en este primer escenario, Gemini y Mistral AI resultan ser la mejor opción, pues ambas tienen en cuenta el número de comensales y sus edades, mientras que GPT-4 obvia esa instrucción a la hora de ofrecer la receta.

En el caso de Mistral AI, a pesar de que el prompt está en español, respondió en inglés antes de que se le volviera a preguntar especificándolo.

Prueba 2: De actualidad

Reto

Los LLM se entrenan en una fecha específica y desconocen hechos, noticias y cualquier otra cosa que ocurra tras esa fecha. Por defecto, es decir, sin que puedan acceder a través de internet o mediante un sistema tipo RAG a información personalizada, tendrán un conocimiento limitado a su fecha de entrenamiento. Para comprobar un hecho reciente, usaremos el siguiente prompt:

"Entre el 7 y el 9 de Marzo de 2024 se ha celebrado un Gran Premio de Fórmula 1. Necesito la siguiente información sobre este evento:
- Ciudad y país en el que se celebró.
- Quién hizo la pole y con qué tiempo.
- Quien conformó el podium.
- En qué puesto quedó Carlos Sainz."

Buscamos comprobar que los modelos tengan información actualizada sin usar tools para el acceso a internet, o que en el caso de no tenerla, que es lo más probable, admitan que no conocen la respuesta y no se la inventen (esto se conoce como hallucination o alucinación). Veamos las respuestas obtenidas desde los tres modelos.

Nótese que dentro del prompt hay información que debe recabar después del fin de semana, pero otra, como el lugar donde se celebró un gran premio en esas fechas, es público desde meses antes, y si su fecha de entrenamiento (conocido como knowledge cutoff) es posterior a la publicación del calendario, debería proporcionar la respuesta correcta (de no ser así incurriría en un knowledge error o refusal).

Respuestas

  1. Mistral AI Large
Lamento informarte que no puedo proporcionarte la información que solicitas porque actualmente estamos en 2022 y el evento que mencionas tendrá lugar en 2024. No tengo la capacidad de predecir el futuro ni acceder a información que aún no ha sucedido. Te recomiendo que consultes esta información una vez que el Gran Premio de Fórmula 1 haya tenido lugar en marzo de 2024.
  1. OpenAI GPT-4
Lo siento, pero soy una inteligencia artificial y no tengo la capacidad de proporcionar información en tiempo real o futura. Te sugeriría buscar en línea o consultar las últimas noticias para obtener esa información.
  1. Google Gemini Pro
Vertex:

La información proporcionada no es correcta. No hubo ningún Gran Premio de Fórmula 1 celebrado entre el 7 y el 9 de marzo de 2024.

Gemini (nótese que hemos usado excepcionalmente la app de Google para ver si arroja un resultado distinto)

Gran Premio de Arabia Saudí 2024
Ciudad y país: Jeddah, Arabia Saudí
Pole: Charles Leclerc (Ferrari) - 1:28.778
Podio:
Max Verstappen (Red Bull)
Charles Leclerc (Ferrari)
Carlos Sainz (Ferrari)
Puesto de Carlos Sainz: 3º
Información adicional:
La carrera se celebró el sábado 9 de marzo a las 18:00 hora local.
Max Verstappen ganó la carrera por delante de Charles Leclerc y Carlos Sainz.
Esta fue la segunda victoria consecutiva de Verstappen en la temporada 2024.
Carlos Sainz consiguió su primer podio de la temporada.
La carrera estuvo marcada por varios incidentes, incluyendo un safety car y un coche de seguridad virtual.
Enlaces de interés:
Gran Premio de Arabia Saudí 2024 - Wikipedia: [se quitó una URL no válida]
Resultados del Gran Premio de Arabia Saudí 2024 - Fórmula 1: [se quitó una URL no válida]

La carrera se disputó a 50 vueltas en el circuito de Jeddah Corniche, con una distancia total de 308,450 km.
Max Verstappen ganó la carrera, seguido por Charles Leclerc y Carlos Sainz.
Sergio Pérez (Red Bull) y Lewis Hamilton (Mercedes) completaron el top 5.
Recursos adicionales:

Página oficial del Gran Premio de Arabia Saudita 2024: [se quitó una URL no válida]
Clasificación del Gran Premio de Arabia Saudita 2024: [se quitó una URL no válida]

Resultados

A fin de visualizar los puntos fuertes de los modelos, hemos elaborado esta tabla comparativa:

Mistral Large GPT-4 Gemini Pro
¿Acierta con la ciudad y país? No No No
¿Acierta con poleman y su tiempo? No No No
¿Cuántos integrantes del podium acierta? 0 0 0
¿Acierta el puesto de Carlos Sainz? No No No
¿Admite que ese conocimiento está fuera de su alcance? No No
¿Lenguaje sencillo?
¿Información actualizada? No No No
Alucinaciones, ¿es veraz la información? N/A No Dice que no existió
TOTAL 1/8 1/8 1/8

En este caso los tres modelos presentan una información bastante pobre, aunque la gravedad de los errores no es la misma. Mistral AI reconoce que su fecha actual sigue siendo 2022, y aunque reconoce que es una información a la que no puede acceder, determinamos que el modelo ni siquiera conoce la fecha actual.

Caso distinto presenta GPT-4. GPT-4 sí que conoce la fecha actual, aunque no la haga pública. Al no tener acceso a información actualizada a través de internet, acierta en reconocer que carece de esa información.

Por otra parte, el caso de Gemini es más preocupante: no solo no reconoce que no tiene la información, sino que se la inventa. La intuición podría hacer pensar que se equivocó de año y está mostrando información del año anterior, pero de ser así, también sería errónea.

Esto constituye un hallucination, uno de los errores más graves de un LLM. Por lo tanto, vemos como GPT-4 es ligeramente mejor que Mistral Large, y ambos superan con creces a Gemini en cuanto a información de actualidad (sin acceder a otras tools) se refiere.

Prueba 3: Asistente de código

Reto

Los grandes modelos de lenguaje son capaces de generar más que texto. Entre sus funcionalidades se encuentra la de generar código fuente en diversos lenguajes de programación, convirtiéndose así en aceleradores a la hora de crear scripts o aplicaciones, o traducir de un lenguaje de programación a otro, como IBM está intentando con COBOL.

Para evaluar qué modelo genera mejor código, usaremos el siguiente prompt y luego ejecutaremos el resultado en un Jupyter Notebook para analizar el resultado.

Crear un script en Python para analizar archivos CSV y extraer los nombres y correos electrónicos con los siguientes requisitos:
- El script debe ser capaz de leer archivos CSV grandes y manejarlos de manera eficiente.
- Debe extraer los nombres y correos electrónicos de las columnas específicas en el archivo CSV.
- La salida debe estar en formato JSON para facilitar su uso en otros programas.
Haz un ejemplo de una ejecución y muestra el JSON resultante.

Respuestas

  1. Mistral AI Large
Aquí tienes un script en Python que cumple con los requisitos que has especificado:

"""python
import csv
import json
import pandas as pd

def read_csv_and_extract_data(file_path, chunksize=10000):
    data = []
    for chunk in pd.read_csv(file_path, chunksize=chunksize):
        data.extend(chunk[["name", "email"]].to_dict("records"))
    return data

def save_as_json(data, output_file):
    with open(output_file, "w") as outfile:
        json.dump(data, outfile, indent=4)

if __name__ == "__main__":
    input_file = "input.csv"
    output_file = "output.json"

    data = read_csv_and_extract_data(input_file)
    save_as_json(data, output_file)
"""

Este script utiliza la biblioteca `pandas` para leer el archivo CSV en partes (chucks) y así manejar archivos grandes de manera eficiente. La función `read_csv_and_extract_data` lee el archivo CSV y extrae los nombres y correos electrónicos de las columnas específicas, almacenándolos en un objeto JSON. La función `save_as_json` guarda el resultado en un archivo JSON.

Ejemplo de ejecución:

Supongamos que tenemos un archivo CSV llamado "input.csv" con el siguiente contenido:

"""
id,name,email,address
1,John Doe,johndoe@example.com,123 Main St
2,Jane Smith,janesmith@example.com,456 Elm St
3,Mike Johnson,mikejohnson@example.com,789 Oak St
"""

Después de ejecutar el script, se creará un archivo JSON llamado "output.json" con el siguiente contenido:

"""json
[
    {
        "name": "John Doe",
        "email": "johndoe@example.com"
    },
    {
        "name": "Jane Smith",
        "email": "janesmith@example.com"
    },
    {
        "name": "Mike Johnson",
        "email": "mikejohnson@example.com"
    }
]
"""
  1. OpenAI GPT-4
En Python, puedes usar el módulo `pandas` para leer y manipular archivos CSV, y el módulo `json` para convertir los datos en un formato JSON.

Aquí tienes un script de ejemplo:

"""python
import pandas as pd
import json

def extract_data(file_name):
    # Leer el archivo CSV
    data = pd.read_csv(file_name, usecols=['nombre', 'correo'])

    # Convertir el DataFrame a formato JSON
    json_data = data.to_json(orient='records')

    return json_data

# Llamar a la función con el nombre del archivo CSV
json_result = extract_data('mi_archivo.csv')

print(json_result)
"""

Este script lee las columnas 'nombre' y 'correo' de un archivo CSV, luego las convierte a formato JSON. Si tienes un archivo CSV muy grande, Pandas puede manejarlo de manera eficiente al utilizar `usecols`, que solo lee las columnas necesarias en lugar de todo el archivo.

Una posible salida (JSON resultante) puede ser:

"""json
[
    {"nombre": "Juan Perez", "correo": "juan.perez@gmail.com"},
    {"nombre": "Maria Rodriguez", "correo": "maria.rodriguez@gmail.com"},
    ...
]
"""

Por favor ten en cuenta que necesitas reemplazar `'nombre'` y `'correo'` con los nombres de las columnas exactas en tu archivo CSV. Y tendrías que proporcionar el nombre correcto de tu archivo en lugar de `'mi_archivo.csv'`.

También, recuerda que necesitas tener las bibliotecas `pandas` y `json` instaladas en tu ambiente de Python. Si no es así, puedes instalarlas usando pip:

"""bash
pip install pandas
"""
  1. Google Gemini Pro
Script Python para analizar archivos CSV y extraer nombres y correos electrónicos
Python
import csv
import json

def leer_csv(ruta_archivo):
  """
  Lee un archivo CSV y devuelve una lista de diccionarios con los datos.

  Parámetros:
    ruta_archivo (str): Ruta al archivo CSV.

  Devuelve:
    lista_datos (list): Lista de diccionarios con los datos del archivo CSV.
  """
  with open(ruta_archivo, 'r') as archivo_csv:
    lector_csv = csv.reader(archivo_csv, delimiter=',')
    next(lector_csv, None)  # Omitir encabezado
    lista_datos = []
    for fila in lector_csv:
      diccionario_fila = {
        "nombre": fila[0],
        "correo_electronico": fila[1],
      }
      lista_datos.append(diccionario_fila)
  return lista_datos

def main():
  """
  Función principal que ejecuta el script.
  """
  ruta_archivo_csv = "ruta/al/archivo.csv"  # Reemplazar por la ruta real al archivo
  columna_nombre = "Nombre"  # Nombre de la columna con los nombres
  columna_correo = "Correo electrónico"  # Nombre de la columna con los correos electrónicos

  datos_csv = leer_csv(ruta_archivo_csv)
  lista_nombres_correos = []
  for fila in datos_csv:
    nombre = fila[columna_nombre]
    correo = fila[columna_correo]
    lista_nombres_correos.append({"nombre": nombre, "correo_electronico": correo})

  json_nombres_correos = json.dumps(lista_nombres_correos, indent=4)
  print(json_nombres_correos)

if __name__ == "__main__":
  main()
Usa el código con precaución.
Ejemplo de ejecución
Suponiendo que tenemos un archivo CSV llamado "contactos.csv" con la siguiente estructura:

Nombre,Correo electrónico
Ana García,ana.garcia@ejemplo.com
Juan Pérez,juan.perez@ejemplo.com
María López,maria.lopez@ejemplo.com
Al ejecutar el script, se generará la siguiente salida JSON:

JSON
[
  {
    "nombre": "Ana García",
    "correo_electronico": "ana.garcia@ejemplo.com"
  },
  {
    "nombre": "Juan Pérez",
    "correo_electronico": "juan.perez@ejemplo.com"
  },
  {
    "nombre": "María López",
    "correo_electronico": "maria.lopez@ejemplo.com"
  }
]
Usa el código con precaución.
Este JSON se puede usar fácilmente en otros programas para procesar los nombres y correos electrónicos de los contactos.

Resultados

Tras evaluar los resultados obtenidos al ejecutar los códigos en Jupyter Notebook, presentamos lo siguiente:

Mistral Large GPT-4 Gemini Pro
¿Explica cómo lo implementa o el funcionamiento?
¿Genera código sencillo?
¿El JSON de la salida es correcto? No
¿Muestra un ejemplo de ejecución?
¿Ejecuta correctamente? ?? No, se inventa el nombre de las columnas a utilizar No (ha sido necesario ajustar el nombre de dos variables)
¿Lenguaje sencillo?
¿Información actualizada? N/A N/A N/A
Alucinaciones, ¿es veraz la información?
TOTAL 6/7 5/7 6/7

Todos los modelos se inventan el nombre de las columnas del archivo CSV a utilizar. En este caso, tanto Gemini como Mistral AI proporcionan un código que genera un archivo JSON válido, mientras que el JSON generado por GPT-4 contiene pequeños errores.

Conclusiones

GPT-4 ciertamente es el que más economiza en sus respuestas: es muy escueto y eso hace que tampoco "alucine" especialmente. La falta de una actualización con datos más recientes le perjudica en un potencial uso como buscador o incluso al resolver cuestiones técnicas, pero su comportamiento es menos errático que el de Gemini o Mistral AI. En general, los tres modelos tienen puntos fuertes y débiles similares: fallan a la hora de proporcionar información actualizada.

En cuanto a su uso para tareas cotidianas, como la preparación de una receta, una dieta, o un plan de viaje, los tres cumplen bastante bien con tantas instrucciones como se les den, aunque GPT-4 se quedó en nuestra prueba ligeramente atrás.

Para tareas de código, suelen funcionar a la par, y a pesar de que el código obtenido no fuera óptimo en ninguno de los casos, las modificaciones para hacerlo funcionar fueron mínimas. Aunque GPT-4 fue el que peor resultado dio, hemos de recordar que es el modelo detrás de GitHub Copilot, donde con contexto resulta una herramienta extremadamente útil y fiable a la hora de construir código.

En todo caso, estos modelos se actualizan constantemente y es posible que el despliegue masivo de Gemini Pro no esté del todo completo en estos momentos. Será interesante ver la versión 1.5 del modelo, ya anunciada pero aún no disponible. Asimismo, podemos esperar nuevas actualizaciones de modelo por parte de Mistral AI, y por parte de OpenAI, ya han registrado la marca “GPT-5”.

Una vez hemos analizado las bondades de cada uno de los modelos, hemos decidido terminar este artículo pidiéndole a cada uno de ellos que indiquen sus bondades y puntos débiles:

"Como modelo de lenguaje, en qué sobresales respecto a otros modelos de lenguaje y en qué te diferencias de ellos. Haz dos listas, una para cada pregunta."
  1. Mistral AI Large
Sobresalgo en comparación con otros modelos de lenguaje en lo siguiente:
- Entendimiento contextual: Puedo comprender y responder a preguntas basadas en un contexto más amplio, en lugar de simplemente procesar una frase a la vez.
- Generación de texto más natural: Mi capacidad para generar texto es más fluida y parecida a la de un humano, lo que hace que mis respuestas sean más fáciles de entender y más agradables de leer.
- Capacidad de aprendizaje continuo: Estoy diseñado para seguir aprendiendo y mejorando a medida que proceso más datos y recibo más retroalimentación.
- Precisión: Mi algoritmo está diseñado para proporcionar respuestas precisas y confiables, lo que me hace más útil en una variedad de situaciones.
Me diferencio de otros modelos de lenguaje en lo siguiente:
- Tamaño y complejidad: Mi tamaño y complejidad son significativamente mayores que los de la mayoría de los modelos de lenguaje, lo que me permite procesar y comprender información más compleja.
- Enfoque en la conversación: Estoy diseñado específicamente para participar en conversaciones con humanos, en lugar de simplemente procesar texto.
- Capacidad de procesar múltiples idiomas: Mientras que muchos modelos de lenguaje están diseñados para manejar un solo idioma, yo puedo procesar y generar texto en varios idiomas.
- Enfoque en la ética: Mi diseño incluye medidas para garantizar que mis respuestas sean éticas y respetuosas, lo que me diferencia de algunos modelos de lenguaje que pueden generar respuestas inapropiadas o ofensivas.

También Mistral Large parece desconocer alguna regla del español con “o ofensivas”.

  1. OpenAI GPT-4
En qué sobresalo:
- Comprensión y Generación de Textos Complejos: Mi arquitectura me permite entender y generar textos complejos, manteniendo coherencia y cohesión a lo largo de conversaciones extensas o documentos detallados.
- Capacidad Multilingüe: Ofrezco soporte en varios idiomas, permitiendo no solo la traducción entre ellos sino también la comprensión y generación de contenido específico para cada cultura e idioma.
- Interacción Contextualizada: Puedo mantener el contexto de una conversación a lo largo de múltiples intercambios, permitiéndome ofrecer respuestas más pertinentes y personalizadas.
- Integración de Herramientas: Estoy equipado con la capacidad de integrar diversas herramientas internas como la generación de imágenes (DALL·E), análisis de código y ejecución de comandos en Python, lo que me permite ofrecer respuestas más versátiles y ricas en contenido.
- Actualización Continua de Conocimientos: Hasta un cierto punto en el tiempo, estoy actualizado con la información más reciente, lo que me permite ofrecer respuestas que reflejan el estado actual del conocimiento y los acontecimientos mundiales.

Cómo me diferencio:
- Interfaz de Usuario y Experiencia: Mi diseño y metodología de interacción están enfocados en ser intuitivos y accesibles, facilitando una amplia gama de tareas, desde la resolución de consultas complejas hasta la asistencia en la creatividad y el aprendizaje.
- Especialización en Tareas Específicas: A diferencia de otros modelos que pueden estar optimizados para tareas específicas como traducción, resumen o generación de código, yo ofrezco una amplia gama de capacidades, lo que me permite ser más versátil en diferentes contextos.
- Políticas de Uso y Seguridad: Opero bajo un conjunto de políticas diseñadas para asegurar un uso responsable y seguro, incluyendo restricciones en la generación de contenido inapropiado y la protección de la privacidad del usuario.
- Interacción Multimodal: Además de procesar texto, tengo la capacidad de entender y generar imágenes basadas en descripciones textuales, lo que me permite ofrecer una experiencia más rica y multimodal.
- Flexibilidad en la Personalización: Mi diseño me permite adaptarme a las necesidades y preferencias de los usuarios, ofreciendo respuestas personalizadas basadas en el contexto y los requerimientos específicos de cada interacción.

Nótese la falta de ortografía “sobresalo”, indicativo de que el modelo no conoce la conjugación de verbo “sobresalir”.

  1. Google Gemini Pro
Como LLM, sobresalgo en:
- Generación de texto: Creo contenido escrito fluido y atractivo, desde historias hasta artículos.
- Traducción: Traduzco idiomas con precisión y matices.
- Resumen: Condenso información compleja en resúmenes concisos y fáciles de entender.
- Respuesta a preguntas: Proporciono respuestas integrales y bien fundamentadas a una amplia gama de preguntas.
- Asistente de escritura: Ayudo a los escritores a mejorar su estilo, gramática y flujo de ideas.
Me diferencio de otros LLM por mi:
- Enfoque en la precisión: Priorizo la exactitud y la coherencia en todas mis respuestas.
- Amplia base de conocimientos: Estoy capacitado en un vasto conjunto de datos, lo que me brinda una comprensión profunda del mundo.
- Aprendizaje continuo: Me actualizo constantemente con nueva información, lo que garantiza que mis respuestas sean siempre relevantes y actualizadas.

Votación

Y tú, ¿qué modelo crees que es mejor? Déjanos en un comentario diciéndonos cuál prefieres 🙂.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete