Skip to main content

Unidad 4.4. Programación para incautos.

"La inteligencia general artificial no es simplemente una nueva herramienta que está siendo añadida al conjunto humano de herramientas tecnológicas; es la herramienta que va a rehacer y rediseñar todas las demás herramientas."

Esta cita de Ben Goertzel refleja su visión sobre el potencial transformador de la inteligencia general artificial (AGI), sugiriendo que su desarrollo no solo aportará una nueva tecnología, sino que también cambiará fundamentalmente la forma en que interactuamos y mejoramos todas las tecnologías existentes.

image.png

Introducción

Aunque no es un curso orientado a programadores hemos considerado interesante añadir esta sección con la única intenciaón de exponer las posibilidades adicionales que ofrecce la IA pra todo aquel que tenga interés o conozca los conceptos básicos de la programación. Probablemente sea el caso de profesores o maestros de ciencias, tecnología etc... Pero también para el resto pues forma parte de la cultura de la IA y como mínimo da una perspecita adicional de la misma.

No hablamos de programar con ayuda de la IA, algo que hacen casi perfectamente los distintos chatbots que hemos visto, sino de usar código para programar y entrenar nuestros propios modelos u otros modelos puestos a disposición del público (llamados modelos Open Source o de código libre).

Las posibilidades son inmensas ya que hay cada vez más modelos y entornos disponibles de manera gratuita así como recursos didácticos y documentación.

La sección se divide en tres partes, una para quién quiera introducirse en programación con herramientas y recursos disponibles, la segunda habla sobre los distintos entornos para programar con IA y modelos de lenguaje y una última en la que mostramos herramientas de creación de aplicaciones sin usar código.

Obviamente las dos primeras son sólamente para aquellos intresados en introducirse o conocer herramientas de programación por lo que las consideramos 'voluntarias' dentro del curso.

Introducción a python

Aunque otros muchos lenguajes, en un gran porcentaje todo lo que se hace y se está haciendo en la actualidad vinculado a la IA y a la llamada ciencia de datos se desarrolla en python. Por ello centraremos esta sección en este lenguaje cada vez más popular.

Para iniciarse en Python, hay una amplia gama de recursos y tutoriales disponibles en línea que pueden ayudar a aprender este lenguaje de programación de manera efectiva. Aquí hay algunas recomendaciones:

Python.org

El sitio web oficial de Python ofrece una sección para principiantes donde puedes encontrar una lista de editores de texto e IDEs recomendados para trabajar con Python, así como libros introductorios y ejemplos de código【27†(Python.org)】.

W3Schools

W3Schools proporciona un tutorial interactivo donde puedes aprender Python a través de ejemplos. Este sitio permite editar el código y ver los resultados en tiempo real, lo cual es una forma práctica de aprender.

DigitalOcean

Ofrece una serie de tutoriales para principiantes en Python. Estos tutoriales exploran el mundo de Python, lo que puede ser una forma útil de obtener una comprensión práctica del lenguaje

FreeCodeCamp

En FreeCodeCamp, hay una lista de 15 cursos gratuitos de Python para principiantes. Entre estos, se incluye un curso completo para principiantes, así como otros recursos como el "Python Handbook" por Flavio Copes.

Microsoft Learn

Microsoft también ofrece un tutorial en español para principiantes en Python, donde podrás descubrir los conceptos básicos de Python, incluyendo el uso de Jupyter Notebook, creación de programas y proyectos, y trabajar con diferentes tipos de datos y estructuras de control en Python.

Estos recursos cubren una variedad de aspectos de Python, incluyendo la sintaxis básica, estructuras de datos, y aplicaciones prácticas del lenguaje. Se proporcionan tanto explicaciones textuales como ejemplos de código interactivos para ayudar a solidificar tu comprensión del material. También es recomendable explorar diferentes plataformas y seleccionar la que mejor se adapte a tu estilo de aprendizaje y necesidades.

Entornos de desarrollo y plataformas

Para la programación y manipulación de modelos de datos, existen varios entornos y herramientas que pueden ser adecuadas dependiendo de tus necesidades y preferencias. A continuación se presentan algunas opciones populares:

Jupyter Notebook

Este es un entorno interactivo que permite la ejecución de código, visualización de datos y documentación todo en uno. Es ampliamente utilizado por científicos de datos y analistas.

RStudio

Es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R, que es muy utilizado para la estadística y la visualización de datos.

PyCharm

Este es un IDE para Python, que es un lenguaje de programación muy popular en el ámbito de la ciencia de datos. PyCharm proporciona muchas herramientas y características que facilitan la programación de modelos de datos.

Visual Studio Code (VS Code)

Este es un editor de código fuente gratuito y de código abierto que es extensible y personalizable. Con las extensiones adecuadas, puede ser una herramienta poderosa para trabajar con datos.

SQL Server Management Studio (SSMS)

Si estás trabajando con bases de datos SQL Server, SSMS es un entorno robusto para la gestión y programación de modelos de datos.

DataGrip

Es un IDE de JetBrains para bases de datos y SQL. Permite la conexión a múltiples bases de datos, exploración de datos, y muchas otras funciones útiles para trabajar con modelos de datos.

Google Colab

Es un entorno de notebook en la nube que permite la ejecución de código en servidores de Google, lo cual puede ser útil para la manipulación y análisis de grandes conjuntos de datos.

Databricks

Plataforma basada en la nube que integra un entorno de notebook con capacidades de ejecución distribuida, lo cual es útil para trabajar con grandes conjuntos de datos y modelos complejos.

Tableau

Si bien no es un entorno de programación per se, Tableau es una herramienta poderosa para la visualización y exploración de datos.

MATLAB

Es un entorno para la programación matemática y la manipulación de datos, especialmente útil en el ámbito académico y de investigación.

La elección entre estos entornos dependerá de tus necesidades específicas, la complejidad de tus modelos de datos, y tu familiaridad con los lenguajes de programación y las herramientas mencionadas. También puede ser útil considerar la comunidad y el soporte disponible para cada entorno, así como su integración con otras herramientas y plataformas que puedas estar utilizando.

Creación aplicaciones de IA

A continuación presentamos las herramientas y entornos más importantes relacionadas con la creación y desarrollo de aplicaciones basadas en IA y en el uso de modelos.

HuggingFace

Hugging Face es una empresa conocida por su trabajo en el campo del procesamiento del lenguaje natural (PLN) y el aprendizaje profundo. A continuación, se presentan algunas áreas clave en las que Hugging Face es relevante en el contexto de la programación y gestión de modelos de datos:

Biblioteca Transformers

Hugging Face es famoso por su biblioteca Transformers, que proporciona implementaciones de muchos modelos de lenguaje populares como BERT, GPT-2, T5, y otros. Esta biblioteca facilita el entrenamiento, la evaluación y el uso de estos modelos para diversas tareas de PLN.

Model Hub

Hugging Face también ofrece una plataforma conocida como Model Hub, donde los investigadores y desarrolladores pueden compartir y acceder a modelos preentrenados. Esto facilita la reutilización de modelos y acelera el desarrollo de aplicaciones de PLN.

Datasets Library

Además, Hugging Face proporciona una biblioteca de conjuntos de datos que facilita el acceso a una amplia variedad de conjuntos de datos para entrenamiento y evaluación de modelos.

Tokenizers Library

La biblioteca de tokenizadores de Hugging Face proporciona herramientas para convertir texto en tokens, un paso esencial en el procesamiento del lenguaje natural.

Servicios en la Nube

Hugging Face también ofrece servicios en la nube para entrenar y alojar modelos de lenguaje, proporcionando una plataforma para gestionar el ciclo de vida de los modelos de PLN.

Colaboraciones y Comunidad

Hugging Face colabora con muchas otras organizaciones y comunidades en el campo del aprendizaje profundo y PLN, contribuyendo a la innovación y el avance en estas áreas.

En resumen, Hugging Face proporciona herramientas y plataformas que facilitan la gestión y programación de modelos de datos, especialmente en el ámbito del procesamiento del lenguaje natural. Su biblioteca Transformers, junto con el Model Hub y otras herramientas, proporcionan un ecosistema robusto para trabajar con modelos de lenguaje y datos relacionados con el texto.

Langchain

LangChain es una plataforma diseñada para facilitar la interacción con modelos de lenguaje grandes (Large Language Models o LLMs) y la integración de estos modelos en aplicaciones y pipelines de datos. A continuación se presentan algunas características clave y capacidades de LangChain:

Integración con LLMs

LangChain (https://www.langchain.com/) proporciona una interfaz estándar que facilita la interacción con una variedad de LLMs de diferentes proveedores como OpenAI, Cohere, Bloom, Huggingface, entre otros.

LangChain ofrece una manera estructurada y modular de trabajar con LLMs y aprovechar sus capacidades en una variedad de aplicaciones y escenarios. Esto lo convierte en una herramienta valiosa para los ingenieros de datos y desarrolladores que buscan integrar modelos de lenguaje en sus proyectos.

Documentación

Cómo siempre lo mejor es empezar por la documentación, perfectamente descrita en este enlace

https://docs.langchain.com/docs/

Construcción de Prompts y Gestión de Conversaciones:

Ofrece herramientas para simplificar la creación y gestión de prompts, así como módulos de memoria para gestionar y alterar conversaciones pasadas, lo que es crucial para chatbots【13†(DEV Community)】.

Chaining o Encadenamiento de Modelos

Una característica única de LangChain es su capacidad para crear Chains (cadenas) que son enlaces lógicos entre uno o más LLMs, permitiendo crear aplicaciones más complejas al encadenar diferentes componentes【6†(EcoAGI)】【8†(Pinecone)】.

Agentes Inteligentes e Indexación

Equipa a los agentes con un conjunto de herramientas integral y proporciona métodos para organizar documentos de manera que faciliten la interacción efectiva con los LLMs【13†(DEV Community)】.

Aplicaciones Variadas

LangChain se puede utilizar para una amplia gama de aplicaciones como chatbots, sistemas de preguntas y respuestas generativas, resumen de texto y mucho más, proporcionando un marco para incluir IA de LLMs en pipelines de datos y aplicaciones.

Procesamiento de Datos

Descompone grandes cantidades de datos en trozos o chunks más manejables, los cuales pueden ser fácilmente incrustados en un vector store. Al recibir un prompt, LangChain consulta el Vector Store para obtener información relevante y luego alimenta esta información al LLM para generar o completar la respuesta.

Generación interfaces 

streamlit: Creación de aplicaciones basado en python, se suele usar en entornos de LangChain para generar aplicaciones.

https://streamlit.io/

Cohere

Cohere es una plataforma de inteligencia artificial que se especializa en el procesamiento del lenguaje natural (NLP, por sus siglas en inglés). Esta plataforma ofrece herramientas de IA avanzadas que permiten a los usuarios y desarrolladores comprender, generar y manipular el lenguaje humano de manera eficiente y efectiva. Algunos aspectos clave de Cohere son:

Modelos de Lenguaje Avanzados

Cohere utiliza modelos de lenguaje de última generación, similares a los de OpenAI, para ofrecer capacidades de comprensión y generación de texto.

Aplicaciones Versátiles

Los servicios de Cohere se pueden aplicar en una variedad de casos de uso, como la automatización de respuestas a clientes, la generación de contenido, la traducción automática, la síntesis de información y la moderación de contenido.

Programación de modelos de chat

Lo que significa que se puede utilizar para desarrollar y mejorar aplicaciones de chatbot o sistemas de conversación automatizados. Esta capacidad es particularmente valiosa en áreas como el servicio al cliente, donde los chatbots pueden manejar consultas de manera eficiente y efectiva, proporcionando respuestas en tiempo real y facilitando interacciones fluidas basadas en el lenguaje natural.

APIs Accesibles

La plataforma proporciona APIs (interfaces de programación de aplicaciones) que facilitan la integración de sus capacidades de IA en diversas aplicaciones y sistemas existentes.

Enfoque en la Usabilidad

Cohere está diseñada para ser accesible tanto para desarrolladores experimentados en IA como para aquellos que tienen menos experiencia técnica, con el objetivo de democratizar el acceso a la tecnología de procesamiento de lenguaje natural.

Compromiso con la Ética y la Seguridad

La plataforma también pone énfasis en los aspectos éticos y de seguridad del uso de IA, buscando garantizar que sus herramientas se utilicen de manera responsable.

En resumen, Cohere se posiciona como una plataforma potente y flexible en el campo del procesamiento del lenguaje natural, ofreciendo a desarrolladores y empresas herramientas avanzadas para interactuar y trabajar con el lenguaje humano a través de la IA.

https://cohere.com/

Aplicaciones sin código

Construir aplicaciones con inteligencia artificial (IA) ha sido históricamente una tarea compleja que requiere un conocimiento profundo de algoritmos, estadísticas, y programación. Sin embargo, la aparición de plataformas y herramientas "low-code" o "no-code" ha simplificado significativamente este proceso, permitiendo incluso a los usuarios sin experiencia técnica integrar capacidades de IA en sus aplicaciones. Aquí hay algunas herramientas y plataformas que facilitan la construcción de apps con IA:

Microsoft Power Apps

Con la integración de Microsoft AI Builder, los usuarios pueden añadir inteligencia artificial a sus aplicaciones sin escribir código. Esto incluye capacidades como procesamiento de formularios, predicción, clasificación de objetos en imágenes, y más.

Google AppSheet

AppSheet permite a los usuarios crear aplicaciones móviles y web con funciones de IA como reconocimiento de imágenes, procesamiento del lenguaje natural y modelado predictivo, todo sin necesidad de programar.

OutSystems

Ofrece una plataforma de desarrollo low-code con capacidades de IA, permitiendo a los usuarios integrar servicios de IA y machine learning en sus aplicaciones.

Mendix

Esta plataforma low-code proporciona herramientas para construir aplicaciones inteligentes, integrando servicios de IA y machine learning para mejorar la experiencia del usuario y la eficiencia operativa.

Adalo

Aunque Adalo se centra principalmente en la creación de aplicaciones móviles sin código, los usuarios pueden integrar funcionalidades de IA a través de APIs externas para añadir capacidades avanzadas a sus aplicaciones.

Bubble

Bubble permite a los usuarios construir aplicaciones web sin código y puede integrarse con herramientas de IA mediante el uso de APIs, proporcionando funcionalidades como chatbots, análisis de texto, y más.

Thunkable

Thunkable ofrece la capacidad de crear aplicaciones móviles sin código y permite integrar funciones de IA como reconocimiento de texto, imagen y voz.

Glide

Glide transforma hojas de cálculo de Google en aplicaciones y ofrece integraciones con servicios de IA para añadir funcionalidades como reconocimiento de imágenes y procesamiento de lenguaje natural.

Voiceflow:

Permite a los usuarios diseñar, prototipar y construir aplicaciones de voz interactivas (como Alexa Skills o acciones de Google) sin código, integrando capacidades de procesamiento del lenguaje natural.

Clarifai:

Aunque Clarifai proporciona una API de IA para desarrolladores, también ofrece una interfaz visual que permite a los usuarios crear y entrenar modelos de visión por computadora sin escribir código.

Estas herramientas y plataformas están democratizando el acceso a la inteligencia artificial, permitiendo a más personas aprovechar el poder de la IA para crear aplicaciones avanzadas y personalizadas.