>_004: Montando un sistema de onboarding con IA

¿Nuevo en la empresa? Seguro que te da un poco de palo estar todo el tiempo preguntando cosillas a tus compañeros.

¿Tienes nuevos empleados? Ya sabrás lo que puede suponer el onboarding de ellos, tanto a nivel de tiempos como de dinero.

Pues es hora de pedirle a la IA que nos eche una mano.

Vamos a montar un sistema de chat que los nuevos empleados, y no tan nuevos, tengan disponible y que les resuelva las distintas dudas que puedan tener en el día a día.

Arquitectura

La idea de arquitectura de la aplicación es:

  • Usar ChatGPT para comunicarnos.
  • Cargar una serie de ficheros (PDFs o txt) que serán nuestra base de conocimiento.
  • No queremos pasar toda esa info a ChatGPT, tampoco es plan de compartirlo todo. Así que sólo le pasaremos la información estrictamente necesaria.

Manos a la obra

Vamos a montar una aplicación en Python 🐍, que nos lea los ficheros PDFs y txt que haya en una carpeta, y «almacenaremos» dicho conocimiento en local, haciendo uso de la librería llama-index (https://pypi.org/project/llama-index/) 🦙

Llama-index nos monta un sistema de machine learning que nos permitirá almacenar en local los datos, estructurarlos vectorialmente para poder consultarlos y demás.

Una vez montado el sistema y los datos cargados, lo que vamos a hacer es preguntarle a nuestro sistema ML y sólo obtener de él los fragmentos que sean relacionados con la pregunta, y serán sólo esos los fragmentos que usaremos para preguntar a ChatGPT y que nos de la respuesta que estamos esperando.

Veamos el código propuesto:

https://gist.github.com/ablancodev/f4a29385f052da3a301c6536d0040741
import os
import openai
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, LLMPredictor, ServiceContext
from langchain.chat_models import ChatOpenAI
import textwrap


#Cámbiala por tu API de OpenAI
os.environ["OPENAI_API_KEY"] = 'sk-VzM0uF3aeOhzEUPntVtsT3BlbkFJ12S4ecEXBnDXXXXXXX'

#Leer los datos
pdf = SimpleDirectoryReader('datos').load_data()

#Definir e instanciar el modelo
modelo = LLMPredictor(llm=ChatOpenAI(temperature=0.7, model_name='gpt-3.5-turbo'))

#Indexar el contenido de los PDFs
service_context = ServiceContext.from_defaults(llm_predictor=modelo)
index = GPTVectorStoreIndex.from_documents(pdf, service_context = service_context)


# Bucle de conversación
while True:
  pregunta = input('¿Qué necesitas saber? \n')
  respuesta = index.as_query_engine().query(pregunta)
  for frase in textwrap.wrap(respuesta.response, width=100):
    print(frase)

Datos, datos, datos 💾

Vale, ya lo tenemos todo preparado, vamos a ver de qué tipo de información vamos a nutrir a nuestro sistema.

Pensando en un sistema para el onboarding de empleados, vamos a añadir 3 pdfs de ejemplo:

  • 1 documento con un listado contactos de la empresa.
  • 1 documento con ciertos procedimientos, en nuestro caso va a ser del departamento de desarrollo 😎
  • 1 documento de modelo de negocio (es de Telefónica, no es plan de escribir un documento entero)

He aquí los documentos:

Play 🕹️

Montamos nuestro nuevo sistema de onboarding basado en machine learning y ChatGPT …. ENTER …. y a preguntar, que como nuevo en la empresa ando perdido 🥹

Aquí mi conversación con Ombo, el asistente de la empresa, y eso que la info que le he pasado es muy básica.

A nivel empresarial no le he preguntado nada, se me ha pasado completamente, pero si quieres probarlo ya sabes, móntalo, descárgate los PDFs y a preguntar, que verás que da igual que el PDF tenga muchos estilos, es capaz de sacar información de él de forma bastante eficiente.

🚀 🚀 🚀