Blog de Diego García Morate

∞ Explorando la interesección entre IA, emprendimiento y la tecnología

Necesitamos inventar nuevos lenguajes de programación para interactuar con LLMs

A medida que presenciamos un crecimiento exponencial en las capacidades de los Modelos de Lenguaje de Gran Escala (#LLMs), la ingeniería de prompts está emergiendo como una nueva habilidad para aprender y comprender. Aunque la ingeniería de prompts puede parecer simple al principio, gracias a las capacidades de aprendizaje de cero disparos (zero-shot learning), pasar de casos de uso exploratorios a aplicaciones a nivel de producción revela la verdadera complejidad de encontrar prompts óptimos.

El texto plano es simple, pero no escala bien

Los LLMs sobresalen en una tarea aparentemente simple: predecir la siguiente palabra. Esto los hace increíblemente versátiles y alimenta la creencia de que hemos cruzado el umbral hacia la Inteligencia Artificial General (AGI). Sin embargo, el texto plano como modo de interacción presenta desafíos significativos cuando se aplica a problemas del mundo real:

Mismo prompt, diferentes puntuaciones
Mismo prompt, diferentes puntuaciones - de "Building LLM applications for production" por Chip Huyen

Las técnicas avanzadas de prompts implementan algoritmos

Las técnicas avanzadas de prompts ya no se limitan a tareas simples. Estos métodos modernos utilizan algoritmos de razonamiento complejos que operan sobre LLMs para obtener respuestas más matizadas y contextualmente conscientes. Ejemplos de tales técnicas incluyen Chain-of-Thought (Cadena de Pensamiento), Chain-of-Density (Cadena de Densidad) y Prompt Breeder (Criador de Prompts), que aprovechan algoritmos de búsqueda heurística para optimizar la capacidad del modelo para automejorarse.

Prompt Breeder
Prompt Breeder: Proceso iterativo para mutar y evolucionar tu prompt para aumentar su rendimiento

El desarrollo de estas técnicas ha llevado a un cambio significativo de paradigma: de simplemente solicitar información o acciones a orquestar vías de razonamiento complejas dentro del modelo. Esto mejora la utilidad y efectividad de los LLMs, haciéndolos más versátiles para una gama más amplia de aplicaciones sofisticadas del mundo real.

Estos avances utilizan algoritmos de búsqueda heurística para mejorar los modelos, reduciendo el tiempo necesario para el ajuste fino e incrementando las posibilidades para aplicaciones más complejas. Sin embargo, expresar estos algoritmos complejos en lenguaje de texto plano es desafiante. Aquí es donde surge la necesidad de nuevas formas de interactuar con ellos.

La necesidad de lenguajes especializados

Un lenguaje de programación especializado diseñado para interactuar con LLMs puede proporcionar capacidades integradas para abordar estos desafíos, facilitando la extracción de valor máximo de estos modelos para una nueva generación de desarrolladores. Por ejemplo, los algoritmos de búsqueda heurística integrados podrían optimizar automáticamente la selección de prompts, mientras que el análisis semántico incorporado podría mejorar la precisión de construcción de prompts. Esto no solo simplificaría el proceso de desarrollo, sino que también crearía oportunidades para utilizar LLMs en escenarios más complejos del mundo real. La creación de estos lenguajes es crucial para mantenerse al día con la rápida evolución de la tecnología LLM, facilitando aplicaciones más eficientes y efectivas en diferentes dominios.

Algunas de las ideas clave que un nuevo lenguaje puede cubrir son:

¿Cómo podrían ser estos lenguajes?

Como ejercicio teórico, podemos imaginar cómo se podría estructurar un lenguaje como este para interactuar con Modelos de Lenguaje de Gran Escala para tareas complejas.

Por ejemplo, si basamos nuestro lenguaje en YAML, podemos escribir un ejemplo como este:

Ejemplo de lenguaje de especificación de prompts
Un ejemplo de cómo podría ser un lenguaje de especificación de prompts

El ejemplo anterior tiene muchas características avanzadas, como información sobre la tarea, análisis de fuentes de datos, optimización de búsquedas heurísticas, medidas de seguridad y mejoras en la experiencia del usuario. El script muestra cómo un lenguaje específico puede simplificar el uso de LLMs para aplicaciones complejas.

Conclusiones

A medida que avanzamos, se está volviendo más evidente que los Modelos de Lenguaje de Gran Escala (LLMs) actuarán como los sistemas operativos del futuro. Su capacidad para comprender, explicar y producir texto que se asemeja al comportamiento humano los convertirá en la puerta de entrada a una multitud de tecnologías y servicios. Sin embargo, para desatar esta capacidad, necesitamos proporcionar interfaces de usuario que permitan una interacción instintiva y eficiente. Si no creamos interfaces adecuadas y vías de razonamiento para los LLMs, serán subutilizados, al igual que un sistema operativo necesita una forma de interacción fácil de usar y confiable para ser útil.

Los Modelos de Lenguaje de Gran Escala (LLMs) serán los sistemas operativos del futuro.

Por lo tanto, para lograr la próxima generación de interacción humano-computadora, diseñar lenguajes de programación especializados para LLMs no es solo un desafío tecnológico, sino también una necesidad. Estamos al borde de una nueva era donde nuestra comunicación con las máquinas será tan sofisticada como la interacción humana. Lenguajes como el hipotético PromptLang y frameworks como Langchain son pasos cruciales hacia este futuro. Al simplificar el desarrollo de prompts estructurados y guiar las vías de razonamiento de estos modelos, creamos las condiciones necesarias para que los LLMs realmente se conviertan en los sistemas operativos del mañana.

IA LLM programación prompt engineering lenguajes