En este repositorio van a encontrar los diferentes pasos que vamos a seguir en este primer encuentro sobre Inteligencia Artificial. El objetivo es comenzar a familiarizarnos con algunas de las herramientas que hoy se utilizan en el desarrollo de aplicaciones, de una forma amigable, ya que hay mucho para aprender y no siempre es fácil encontrar un punto de partida.
Si queres ver un resumen en video simplificado, que no utiliza langchain, te dejo a continuación este video que muestra en detalle como utilizar diferentes modelos de forma simplificada:
A Hackers' Guide to Language Models by Jeremy Howard https://youtube.com/watch?v=jkrNMKz9pWU
Debemos tener pre-instaladas las siguientes herramientas:
- git
- python@3.10
- pip@22.3.1
- Visual Studio Code (VSCode) con las siguientes extensiones:
- autopep8 para formatear el codigo
- Github Copilot para sugerencias de codigo
- Python para la sintaxis de python
- Pylance para el linter de python
- Jupyter para experimentar con notebooks (opcional)
Setup del entorno:
git clone ${url_del_repositorio}
pip install -r requirements.txt
code .
Definición de la API Key de OpenAI:
echo "OPENAI_API_KEY=<your-key>" > .env
En esta primera etapa, vamos a utilizar un dataset de Kaggle, que contiene información de peliculas.
El dataset original se encuentra en este enlace: https://www.kaggle.com/datasets/joebeachcapital/top-10000-most-popular-movies-from-imdb
Pueden encontrar mas información acerca de esta fase en el siguiente enlace: https://www.techtarget.com/searchbusinessanalytics/definition/data-preparation
Comenzamos por familiarizarnos con el dataset y como manipularlo utilizando pandas:
- https://pandas.pydata.org/docs/user_guide/10min.html
- https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf
En este archivo encontraras un ejemplo basico para comenzar:
python steps/data-preparation/combine_columns.py
Experimentamos con la libreria Tiktok, como para comenzar a familiarizarnos con la traducción texto => tokens.
Jugamos en la consola para ver que nos devuelve:
python steps/tokenizers/use_tiktoken.py
Ahora pre-procesamos el dataset para obtener los tokens:
python steps/data-preparation/compute_tokens.py
Comenzamos a procesar los embeddings (vectores de 1516 dimensiones) utilizando
el modelo de openai text-embedding-ada-002
:
python steps/data-preparation/compute_embedding.py
Ahora vamos a adentrarnos en la utilización de bases de datos vectoriales, en particular para este ejemplo, vamos a utilizar ChromaDB que es un wrapper sobre SQLite:
python steps/vector-db/load-database.py
Nos metemos de lleno ahora en el uso de LangChain, que es una libreria que permite integrar LLMs (Language Models) de forma sencilla en nuestras aplicaciones, pero al mismo tiempo intenta crear un ecosistema de herramientas que nos permitan experimentar con diferentes aspectos de la Inteligencia Artificial.
Como representamos los prompts en LangChain?
python steps/langchain/prompts/prompt-templates.py
python steps/langchain/prompts/prompt-from-fstring.py
python steps/langchain/prompts/prompt-from-yaml.py
python steps/langchain/prompts/prompt-composition.py
Como le damos memoria?
python steps/langchain/memory/conversation-buffer.py
Como obtenemos información adicional a la utilizada en el entrenamiento de los modelos third-party?
python steps/langchain/retrieval/web-retrieval.py
python steps/langchain/retrieval/vector-retrieval.py
Como utilizamos LangChain para crear agentes conversacionales?
Esta ultima etapa se focaliza en la integración de todo lo que hemos visto hasta ahora para crear un bot que pueda realizar tareas especificas.
python steps/langchain/agent/hugo-v0.py
python steps/langchain/agent/hugo-v1.py