Prompts(10)

Resulta extraño pensar en una actividad profesional que pueda ser denominada «prompt engineering«. Una actividad en la que sus ejecutantes pudieras estar dedicados (mayoritaria o enteramente) a interrogar a o hacer uso de una IA.

El término tomó relevancia este año y ya comienza a aparecer incluso en algunas descripciones o requisitos de empleos (como señalaba al inicio de esta serie). Pero, considero, apunta a una mera «burbuja» y está condenada a no ser más que una habilidad, como lo es saber usar SQL o algún otro lenguaje de consulta..

Antes de pasar al tema de esta entrada, quiero notar la distinción entre algunos términos empleados en los párrafos previos.

Por «interrogar» me refiero a consultar y extraer datos, información o conocimiento de una IA (entendiendo para efectos prácticos IA y ML en forma indistinta por el momento y para este post). Pensando en que, para esta actividad, únicamente se guía a la IA mediante las consultas (prompts) para extraer la respuesta buscada. Pueden ser uno o más los prompts usados y hacer referencia a alguna respuesta previa pero todos están enfocados en un objetivo y, así, considerarse una misma consulta.

Por otro lado, el término «hacer uso» denota más la utilización de una herramienta, como una calculadora, que es usada para agilizar acciones que hoy llamamos «mecánicas» y que para los estándares actuales ya no representan un umbral o distinción de una capacidad intelectual o un comportamiento inteligente. Bajo esta idea, hacer uso de una IA es para únicamente obtener un primer intento, un borrador o una plantilla sobre la que el usuario trabaja para refinarla. Así que, yo no veo a ChatGPT o herramientas similares como una amenaza profesional sino como una herramienta más a ser usada. Todavía falta tiempo para ver IA con una capacidad que nos lleve a considerar una cierta consciencia. Así, pasemos al tema del prompt de esta entrada.

Resolviendo un problema que requería poder obtener la moda de una serie de datos mediante Python, me topé con un par de buenas preguntas sobre cómo hacerlo de la mejor y más «pitónica» manera posible. La primera consistía en hacer un conteo de ocurrencias y la segunda sobre la clasificación para dichas frecuencias. El primero ya sabía como hacerlo pero el segundo empezó a ser algo problemático y después de un rato opté por recurrir a chatGPT.

Mi prompt inicial fue:

Is it possible to create a dictionary with a list of values for each key, with a dictionary comprehension instruction, from another dictionary where for each key its value is a counter of the presence or occurrence of each key?

El código generado fue

result_dict = {key: [key] * value for key, value in counter_dict.items()}

que para un diccionario

counter_dict = {'a': 3, 'b': 2, 'c': 1, 'd': 4}

generaba

{'a': ['a', 'a', 'a'], 'b': ['b', 'b'], 'c': ['c'], 'd': ['d', 'd', 'd', 'd']}

que no era lo que se buscaba.

Creo que explicarle lo que buscaba enteramente en palabras complicaba el asunto y podía no ser del todo entendido (o expresado) por lo que consideré proporcionar un ejemplo. Un segundo prompt fue:

For a dictionary like {‘a’: 2, ‘b’: 2, ‘c’: 4}, create a list comprehension which create another dictionary where the keys are de values from the initial dictionary and the values the keys of the original dictionary.

Puede verse que la pregunta implica (por los valores de las llaves) lo que se busca pero no está bien formulada, hablando estrictamente. Pero , la respuesta fue:

original_dict = {'a': 2, 'b': 2, 'c': 4}
result_dict = {value: key for key, value in original_dict.items()}
print(result_dict)

y ésta generaba:

{2: 'b', 4: 'c'}

Llamando la atención sobre el problema de omitir a la llave a. Por lo que se señaló el problema:

In your previous answer, a value is missing.

Tras la disculpa por la falta, se obtuvo

original_dict = {'a': 2, 'b': 2, 'c': 4}
result_dict = {value: [key for key, val in original_dict.items() if val == value] for value in original_dict.values()}
print(result_dict)

que generó la respuesta buscada

{2: ['a', 'b'], 4: ['c']}

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.