0% encontró este documento útil (0 votos)
147 vistas9 páginas

Programación Funcional en Java y IAG

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
147 vistas9 páginas

Programación Funcional en Java y IAG

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Maestría en Ciencia de la Computación

16va Edición
Curso 2023-2024

Tema: La programación funcional en Java en la solución de


problemas, usando Inteligencia Artificial Generativa (IAG)

Autor:
Ing. Osiel Díaz Carrera
1 Introducción

La programación funcional es un paradigma de programación que describe la


construcción de un programa basado en funciones matemáticas y en la composición
de estas para resolver problemas. La programación funcional pone en el centro las
“funciones” como elementos fundamentales y se consideran el pilar central del
paradigma.

A diferencia de la programación imperativa, que se enfoca en cómo se deben


realizar las acciones paso a paso, la programación funcional se basa en declarar
qué operaciones deben realizarse y confía en que el sistema determine cómo
hacerlo de manera interna

Este trabajo propone como resolver el siguiente problema (Se desea escribir un
programa en Java utilizando programación funcional que sea capaz de contar en
una lista de números todos aquellos que sean mayor que 10). Para lograrlo se hace
uso de chatbot y asistente virtual Phind, basado en GPT-4(Generative Pre-trained
Transformer 4). La solución dada se valida consultando bibliografía especializada y
el criterio de expertos, asegurando que cumple con los estándares y practicas
recomendadas.
2- Desarrollo
2.1 Problemática
Se desea escribir un programa en Java utilizando programación funcional que sea capaz
de contar en una lista de numero todos aquellos que sean mayor que 10.
El problema planteado anteriormente consiste en encontrar todos los números mayores que
10 que estén en una lista determinada este problema se puede resolver de varias formas
en este caso se utilizó programación funcional en Java para su solución.

2.2 Lenguaje de Programación Java

Java es un lenguaje de programación y una plataforma informática que fue comercializada


por primera vez en 1995 por Sun Microsystemsc.

El lenguaje de programación Java fue desarrollado originalmente por James Gosling, de


Sun Microsystems (constituida en 1983 y posteriormente adquirida el 27 de enero de 2010
por la compañía Oracle), y publicado en 1995 como un componente fundamental de la
plataforma Java de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero
tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son
compiladas a bytecode (clase Java), que puede ejecutarse en cualquier máquina virtual
Java (JVM) sin importar la arquitectura de la computadora subyacente.

La compañía Sun desarrolló la implementación de referencia original para los compiladores


de Java, máquinas virtuales y librerías de clases en 1991, y las publicó por primera vez en
1995. A partir de mayo de 2007, en cumplimiento de las especificaciones del Proceso de la
Comunidad Java, Sun volvió a licenciar la mayoría de sus tecnologías de Java bajo la
Licencia Pública General de GNU. Otros han desarrollado también implementaciones
alternas a estas tecnologías de Sun, tales como el Compilador de Java de GNU y el GNU
Classpath(Wikipedia,2024).

Al día de hoy se encuentra dentro del top 5 de lenguajes más utilizados en la industria del
software.

2.3 Phind
Phind es un buscador que te brinda la posibilidad de adaptar tus búsquedas a tus
preferencias y configurarlas como las predeterminadas. Además, tiene una función de
“Explorar” que utiliza inteligencia artificial para proporcionarte temas relacionados y
sugerencias, así como una función de «Sorpresa» que selecciona aleatoriamente asuntos
para que puedas explorar. Este potente motor de búsqueda es desarrollado por Hello
Cognition, Inc. con sede en San Francisco, y está diseñado pensando en ti, el desarrollador.

Puedes buscar rápidamente temas usando palabras clave y frases, y Phind proporcionará
sugerencias basadas en algoritmos de inteligencia artificial (DAIR.AI, 2024).

Además, puedes personalizar tus búsquedas y establecerlas como predeterminadas, lo que


facilita la búsqueda de la información que necesitas sin tener que buscar manualmente cada
elemento.
Al integrar directamente con entornos de desarrollo como VS Code, Phind se posiciona no
solo como una herramienta de búsqueda, sino como un asistente de programación que
acompaña al desarrollador desde el planteamiento de la pregunta hasta la implementación
de la solución. Esta plataforma destaca por su capacidad para personalizar búsquedas,
adaptarse a las preferencias del usuario y facilitar el descubrimiento de nuevos temas a
través de funciones como «Sorpréndeme». Su enfoque centrado en mejorar la eficiencia y
la productividad de los desarrolladores lo convierte en una herramienta indispensable para
enfrentar los retos de codificación de hoy y del futuro (Douglas Heaven, 2023).

2.4 Ingeniería de Prompts


La ingeniería de prompt es una disciplina relativamente nueva para el desarrollo y la
optimización de prompts para utilizar eficientemente modelos de lenguaje (ML) en una
amplia variedad de aplicaciones y temas de investigación. Las habilidades de ingeniería de
prompt ayudan a comprender mejor las capacidades y limitaciones de los grandes modelos
de lenguaje (LLM).

Los investigadores utilizan la ingeniería de prompt para mejorar la capacidad de los LLM en
una amplia gama de tareas comunes y complejas, como responder preguntas y
razonamiento aritmético. Los desarrolladores utilizan la ingeniería de prompt para diseñar
técnicas de prompt robustas y efectivas que interactúen con los LLM y otras herramientas
(Wikipedia 20204).

La ingeniería de prompt no solo se trata de diseñar y desarrollar prompts. Abarca una amplia
gama de habilidades y técnicas útiles para interactuar y desarrollar con LLM. Es una
habilidad importante para interactuar, construir y comprender las capacidades de los LLM.
Puedes utilizar la ingeniería de prompt para mejorar la seguridad de los LLM y crear nuevas
capacidades, como la incorporación de conocimientos de dominio y herramientas externas
a los LLM (DAIR.AI, 2024).

Motivados por el gran interés en el desarrollo con LLM, hemos creado esta nueva guía de
ingeniería de prompt que contiene todos los últimos artículos, guías de aprendizaje,
modelos, conferencias, referencias, nuevas capacidades de LLM y herramientas
relacionadas con la ingeniería de prompt (DAIR.AI, 2024).

2.5 Técnicas Avanzadas de Prompting


Las técnicas de prompt más utilizadas en el campo de la inteligencia artificial y el
aprendizaje automático (DAIR.AI, 2024).

1. Prompt Amplification: esta técnica se utiliza para mejorar la calidad de los datos de
entrada de un modelo de lenguaje. Consiste en proporcionar un prompt inicial que
se amplifica y se ajusta a medida que el modelo genera nuevas respuestas. De esta
manera, se obtiene un conjunto más amplio y diverso de resultados.
2. Prompt Expansion: esta técnica se utiliza para mejorar la capacidad de un modelo
de lenguaje para generar respuestas más complejas y detalladas. Consiste en
proporcionar un prompt inicial que se expande y se enriquece con información
adicional, como datos históricos o contextuales.
3. Prompt Tuning: esta técnica se utiliza para ajustar y optimizar los prompts para un
modelo de lenguaje específico. Se basa en la idea de que los prompts efectivos
deben ser personalizados y ajustados para el modelo y la tarea en cuestión.
4. Prompt Segmentation: esta técnica se utiliza para separar y segmentar un prompt
en partes más pequeñas y manejables. Esto permite a un modelo de lenguaje
enfocarse en partes específicas del prompt y generar respuestas más precisas y
efectivas.
5. Prompt Completion: esta técnica se utiliza para generar respuestas completas a
partir de prompts incompletos. Consiste en proporcionar un prompt incompleto que
se completa utilizando información contextual o histórica adicional.

2.6 Generación de Código


La generación de código es una de las tareas avanzadas en las que se puede hacer uso
de la ingeniería de prompts. Los LLM como Phind son muy efectivos en estas tareas. Dada
una entrada, por ejemplo: una descripción de la funcionalidad deseada, se deja que el
modelo genere el código correspondiente, lo cual ayuda a automatizar partes del proceso
de codificación y permite al desarrollador centrarse en las partes más complejas y creativas.

En la última sección se transparenta todo el proceso empleado hasta la generación del


código final que da solución al problema propuesto.

2.7 Implementación en Java


2.7 Transparencia
Este proyecto involucra el uso de Phind, un asistente de inteligencia artificial, como
herramienta clave en la metodología para desarrollar un algoritmo en Java destinado a
resolver un problema específico: determinar cuántos números dentro de una lista son
mayores que 10. La implementación se basa en principios de programación funcional.

El asistente de IA, Phind, es empleado para facilitar la resolución del problema


seleccionado por el estudiante, aprovechando su capacidad para procesar y generar
respuestas coherentes dentro de un diálogo interactivo. Phind utiliza tanto memoria a
corto como largo plazo para recordar información contextual relevante, lo que le permite
ofrecer soluciones adecuadas basadas en la conversación previa.

El proceso comienza con un prompt inicial que establece el contexto y define el papel de
Phind, buscando así guiar el formato y comportamiento de las respuestas. Sin embargo,
es importante tener en cuenta que, aunque este enfoque ayuda a orientar la interacción,
no siempre asegura una respuesta específica deseada.

Promt #1

Se desea escribir un programa en Java utilizando programación funcional que sea capaz
de contar en una lista de numero todos aquellos que sean mayor que 10.

Para contar los números mayores que 10 en una lista utilizando programación funcional
en Java, puedes aprovechar las capacidades de la API Stream introducida en Java 8.
Esta API facilita operaciones sobre colecciones de datos de manera declarativa y
funcional. En este caso, utilizarás el método filter() para seleccionar solo los números que
cumplan con la condición de ser mayores que 10, y luego count() para contar cuántos
elementos coinciden.

Aquí tienes un ejemplo completo de cómo hacerlo:


Este programa define una lista de números, utiliza un stream para procesarlos, filtra
aquellos que son mayores que 10 y cuenta cuántos de ellos hay. Finalmente, imprime el
resultado. Este enfoque es conciso y aprovecha las ventajas de la programación funcional
para realizar operaciones sobre colecciones de manera eficiente y legible

2.8 Verificación
Al analizar de forma detallada los resultados dados por Phind, se concluye que fueron
válidos y coherentes. Se validaron los resultados con las siguientes bibliografías
especializada:

Como programar en java Deitel (Libro 2018),

Documentación oficial de Java 2024

3- Conclusiones
La programación funcional en Java ofrece una forma poderosa y elegante para resolver
problemas algorítmicos. El empleo de técnicas de prompting permiten mejorar la precisión
y eficiencia de la solución generada por una IAG. Este enfoque acompañado de las
verificaciones adecuadas no solo garantiza soluciones correctas sino también promueve un
entendimiento más profundo del problema y de los detalles del proceso en busca de la
solución. Además, pone de manifiesto la ética, el pensamiento crítico y la transparencia en
el uso de la Inteligencia Artificial Generativa
4-Referencia Bibliográfica
DAIR.AI. (2024). Prompt Engineering Guide. https://www.promptingguide.ai/

Douglas Heaven, W. (2023, marzo 3). The inside story of how ChatGPT was built from the
people who made it. MIT Technology Review.
https://www.technologyreview.com/2023/03/03/1069311/inside-story-oral-history-how-
chatgpt-built-openai/

Wikipedia. (2024a). Phind. En Wikipedia, la enciclopedia libre.


https://es.wikipedia.org/w/index.php?title=ChatGPT&oldid=160603755

Wikipedia. (2024b). Java. En Wikipedia, la enciclopedia libre.


https://es.wikipedia.org/w/index.php?title=Haskell&oldid=160192978

También podría gustarte