Cómo crear tu propio Copilot o asistente virtual en 7 pasos

jose miguel benitez opensistemas
¡Hola!👋Soy José Miguel Benítez

Profesional en informática con amplia experiencia en desarrollo de software. Durante mi trayectoria he trabajado como backend y fullstack developer, y finalmente decidí enfocarme en el análisis de datos como data scientist.

Tabla de contenidos

Si trabajas en tecnología, es imposible que seas ajeno al nacimiento de Copilot. Lo has usado (seguro!) para jugar, experimentar o realmente asistirte en el desarrollo de alguna de tus apps. Nosotros también. Y, después, hemos creado el nuestro propio, y cómo puedes hacerlo tú. En este contenido vamos a explicarte cómo funciona un asistente virtual como copilot, trucos de uso, y cómo puedes crear el tuyo propio, con los mismos 7 pasos que he seguido yo. Por si no quieres depender de otros, oye.

Con estos 7 pasos podrás entender los fundamentos de un copilot, hasta crear una experiencia personalizada que se adapte a tu flujo de trabajo. Prepárate para combinar la potencia de las herramientas con tu creatividad para que tu propio asistente virtual te haga destacar en tu vida profesional.

¿Qué es Copilot?

Imagina tener a tu lado un asistente virtual mientras haces código, alguien que te ayude a darle forma a tus ideas en líneas de programación. Pues eso es Copilot, y bastante más. Github, de la mano de OpenAI, ha creado esta maravilla que está revolucionando la manera en que los que nos dedicamos a esto interactuamos con el código.

No es un simple autocompletado cualquiera, para nada. Es más bien tu colega virtual de código, listo para ayudarte y mejorar tus dotes en programación. Copilot está cambiando por completo la programación, haciéndola más inteligente, eficiente y creativa. 

Lo mejor de todo es que Copilot no es solo para los que ya llevan un tiempo en esto. Si estás empezando y el código te suena a chino, no pasa nada. ¿Y sabes que? También es una manera de aprender a programar, porque ves cómo se construyen soluciones de todo tipo.

¿Cómo usar Copilot?

Vamos ver cómo usarlo para hacerte la vida más fácil. ¿Cómo lo pones en marcha? Si trabajas en Visual Studio Code, solo tienes que instalar la extensión de Copilot. Una vez que lo tienes listo y a tu gusto todo se puede lograr.

Imagina que estás en pleno código y necesitas un fragmento específico, pero no sabes por dónde empezar. Aquí entra Copilot: simplemente debes empezar a escribir una descripción en lenguaje natural de lo que necesitas. No te preocupes si no eres Shakespeare, solo explícalo. Y Copilot te lanzará sugerencias de código.

Una de las cosas más alucinantes del Copilot es que aprende de ti. A medida que lo usas, va entendiendo tus estilos de código ya que te da la posibilidad de ir marcando sus respuestas con un “me gusta” para que la herramienta aprenda de tus preferencias. Puedes entrenarlo con tu manera de trabajar, y él te responderá con sugerencias que se sienten como las tuyas.

Además si estás iniciando en la programación, puedes hacer preguntas y él te devolverá pedacitos de código que encajan a la perfección. Es como si te estuviera explicando cómo hacerlo mientras te da las herramientas para que lo consigas.

Recuerda que Copilot es una herramienta, no es un reemplazo. No te quitará el trabajo, lo hará más ameno. Aprovéchalo para agilizar tareas, explorar nuevas soluciones y aprender más sobre cómo abordar problemas.

5 tips para usar un asistente virtual como Copilot 

Venga, aquí tienes unos cuantos trucos y secretitos para sacarle el máximo partido al Copilot:

  1. Expresiones cortas: Prueba escribir expresiones cortas, como «if-else» o «for loop», y observa cómo Copilot las transforma en bloques de código completos.
  2. Desafía su creatividad: ¿Necesitas algo fuera de lo común? Escríbelo en lenguaje natural, y verás cómo Copilot intenta cumplir tu solicitud. A veces, su creatividad puede sorprenderte con soluciones frescas y únicas.
  3. Aprovecha para entender: Además de completar el código, Copilot puede ofrecerte descripciones de funciones, ejemplos y explicaciones detalladas. Aprovecha esta función para aprender mientras programas.
  4. Colabora con Copilot: Puedes usarlo para redactar comentarios, documentación y más. Deja que Copilot te ayude a comunicarte de manera efectiva, no solo «en plan programador».
  5. Atajos de teclado inteligentes: Copilot ofrece atajos de teclado inteligentes que te permiten aceptar y completar sugerencias con facilidad. Por ejemplo:
    • Ctrl + Espacio: puedes activar la función de autocompletado de Copilot para ver sugerencias mientras escribes.
    • Ctrl + Shift + Espacio: Ver sugerencias más detalladas o más opciones en una categoría específica.
    • Ctrl + Shift + L: Explorar todas las sugerencias disponibles para una línea de código.

Integraciones de Copilot

Aquí tienes una lista de algunas de las herramientas con las que Copilot se integra a la perfección:

  • Visual Studio Code: Si eres fan de este popular entorno de desarrollo, te alegrará saber que Copilot es su colega. Puedes disfrutar de sus sugerencias y autocompletarlas directamente en tu VS Code.
  • GitHub: Como Copilot es desarrollado por GitHub en colaboración con OpenAI, la integración aquí es innegable. Imagina tener un asistente virtual en tu repositorio, listo para brindarte ayuda mientras trabajas en tu código.
  • Lenguajes de programación variados: Copilot habla el idioma de la programación. Ya sea Python, JavaScript, Java, C++, Ruby o muchos otros, te proporcionará sugerencias inteligentes para acelerar tu flujo de trabajo.
  • Integración con LLM: Los Large Language Models (LLM) son el corazón de Copilot. Gracias a esta integración, puedes aprovechar el poder de la inteligencia artificial para obtener sugerencias más precisas y relevantes en tu código.
  • Proyectos Open Source: Si eres parte de proyectos open source, Copilot puede marcar la diferencia. Puede ayudarte a entender y contribuir al código de manera más eficiente.
  • Microsoft Viva: Este año Microsoft presentó su integración con Copilot aprovechando la IA para lograr mejor rendimiento y productividad en entornos empresariales.

Ahora tú: 7 Pasos para montar un asistente de programación en tu empresa

Desde hace años, llevamos viendo cómo la inteligencia artificial está en una carrera que parece imposible de frenar. Si estás aquí sabes lo difícil que es mantenerse al día con todos los avances constantes que van saliendo. ¡Pero espera un momentito! Desde la llegada de GPT-3 y los Large Language Models (grandes modelos de lenguaje), con LLM a la cabeza estamos siendo testigos de la creación de innovadores modelos y herramientas que están sacudiendo los cimientos de lo que consideramos alcanzable.

Desde la idea de los LLM (Large Language Models) se han creado herramientas tan impresionantes y destacadas como Copilot un modelo con la destreza de convertir una simple descripción de código en líneas de programación completamente funcionales.

Sin embargo Copilot tomó un giro inesperado privatizando su uso para evitar el mal uso de la herramienta y proteger los derechos de autor, lo que inició un debate sobre la accesibilidad y dirección de las tecnologías habilitadas por la inteligencia artificial.

Tiempo después llegó Chat GPT, marcando un hito significativo en la evolución de los LLM. A diferencia de los avances de sus antecesores, ChatGPT trajo consigo un desarrollo sin precedentes de la inteligencia artificial, permitiendo que personas de todas las habilidades y conocimientos interactuaran con esta tecnología. Su resultado: inauguró las necesidades de buscar avances tecnológicos desde diversos sectores de la sociedad.

Siguiendo por este camino, desde el avance tecnológico la idea de contar con un asistente virtual que nos guíe como Copilot en el terreno de la programación es más que un simple sueño. Es una posibilidad tangible que está a vuestro alcance.

Hoy vengo a mostraros cómo montar un compañero virtual que nos ayude a programar. Para este caso su nombre será: Avy. A medida que avancemos iréis conociendo los diferentes puntos de vista y el paso a paso para su desarrollo.

asistente virtual desarrollo LLM Copilot

Paso 1: Puesta en marcha con el Data Scientist

Para dar vida a Avy, el primer paso es asegurarnos de tener a mano un LLM con la capacidad de traducir descripciones en código funcional, para ello, tenemos que contactar con un data scientist (seguro que tienes algun colega o amigo) que nos guiará en este proceso. Además debemos contar con un LLM apto como Falcon. Este modelo con sus habilidades de creación de código de última generación será nuestro aliado en el desarrollo de Avy.

Falcon un LLM de 40 Billones (en escala numérica corta) de parámetros, liberado por Technology Innovation Institute en Abu Dhabi bajo licencia Apache 2.0 (nos permite el uso comercial). Esta tecnología de procesamiento de lenguaje natural abre un mundo de posibilidades, con sus grandes capacidades y desafíos. Sin embargo, el despliegue de Falcon no es tarea sencilla. 

Este modelo prácticamente se encuentra en el ámbito de la investigación. ¿Por qué? Bueno, uno de los aspectos a considerar es el tamaño de su memoria, este modelo pesa ~90 GB. Imaginad la cantidad de recursos. que necesitaréis, incluyendo las GPU, solo para ponerlo en marcha, estamos hablando de un gigante del procesamiento del lenguaje natural.

Pero esto no acaba aquí. Con los LLM, la adaptabilidad es clave. Por eso tenemos a Falcon 40B y su hermano pequeño, Falcon7B. Estos modelos son una dupla en la inteligencia artificial. Mientras Falcon 40B se mantiene en entornos de investigación , Falcon7B emerge como un compañero más accesible con muchos menos parámetros, consiguiendo reducir su peso a ~15 GB. Este peso ya se puede manejar con una GPU T4. Para los que aún no han cruzado caminos con la GPU T4, les cuento que es una de las más corrientes y está disponible en plataformas como Google Colab.

Paso 2: El doble plan del Data scientist

Ya tenemos la base del modelo, ahora necesitamos los datos para alimentar nuestro LLM para poder hacer fine-tuning a nuestro enfoque. Si estuviéramos hablando de otro desafío, tendríamos que  invertir en la generación de estos datos, por suerte este problema dispone de un dataset llamado CodeAlpaca 20k que impulsará vuestro proyecto con más de 20.000 ejemplos únicos abarcando lenguajes, problemas y soluciones.

Ahora, por el «fine-tuning», que es donde las cosas se ponen interesantes. El plan de vuestro data scientist es doble: primero, entrenar al modelo para que entienda bien el lío, y segundo, hacer que el resultado no pese más de 15 GB. ¡Pero ojo, que aquí viene lo interesante! Nos apoyamos en una librería con nombre PEFT y el método QLoRA que son como los ases del LLM. Con esta fórmula, conseguimos reducir la cantidad de parámetros y su representación en bits de manera que nos quedamos trabajando en 4 bits. Resultado: El modelo pasa de pesar unos 15GB a unos 5GB.

No te preocupes si esta parte te parece un poco «in the air». Os dejo un enlace para que eches un vistazo a un ejemplo de cómo se hace este fine-tuning sobre un Falcon. Si por casualidad no se te da bien esta parte, no pasa nada, por suerte disponemos de un Falcon ya fine-tuneado para la generación de código y lo han llamado Falcoder.

Paso 3: Herramientas Estratégicas para el AI Engineer

LLM AI

Ya disponemos del modelo, la pregunta ahora es, ¿cómo lo explotamos?

Lo primero que se le pasa por la cabeza a un AI Engineer es empezar a picar código desde cero para montar una API con FastAPI, quizás una interfaz web con streamlit, etc. Y no vais mal encaminados, pero en este mundillo tenemos un dicho muy sabio: “no hay que reinventar la rueda” y precisamente por eso os voy a presentar una serie de herramientas ya disponibles para su uso.

Vamos a empezar por una de las más importantes: LangChain. Esta librería nos proporciona un entorno bastante estandarizado para explotar, en forma de chat, muchos de los LLM (y servicios como ChatGPT) disponibles actualmente. Todo esto bajo la licencia MIT que te da un pase VIP para el uso comercial. Una de las mayores ventajas de LangChain, es que nos permite “añadir” conocimiento propio. 

Siguiendo con el ejemplo de Avy, Falcoder te proporcionará su código genérico, pero si necesitas algo más personalizado que se adapte a las necesidades específicas y que el código haga uso de las librerías propias internas de tu empresa, ahí entra LongChain en acción.

¿Pero como LangChain logra esto? Aquí te cuento que esta herramienta se apoya en bases de datos vectorizadas como Faiss o Chroma que te ayudarán a almacenar y manipular la información encontrando similitudes y patrones de vectores de manera eficiente. 

Recientemente han aparecido unas extensiones para PostgreSQL que nos permiten almacenar y trabajar con vectores, pgvector y pg_embedding. Con pgvector, tienes la capacidad de almacenar y gestionar vectores de manera eficiente dentro de la base de datos.

Se pone más emocionante con pg_embedding esta extensión te permite trabajar con embeddings, que son representaciones numéricas compactas de datos, puedes explorar, comparar y relacionar datos de manera inteligente y eficiente, lo que es una ventaja asombrosa para cualquier proyecto que involucre vectores y análisis de datos.

Paso 4: Desarrollo Visual con H2ogpt y LangChain

Una vez tenemos disponible el backend, podemos hablar del frontend. Para la parte visual disponemos del proyecto h2ogpt, que dispone de herramientas visuales para trabajar. Lo mejor es que viene con la licencia Apache 2.0, lo que significa que tiene luz verde para crear y experimentar sin restricciones.

Con H2ogpt puedes trabajar con LangChain y nos proporcionará un entorno donde podemos chatear con Falcoder. Y no se queda ahí, imagina que puedes añadir conocimiento personal a tus documentos visuales y luego tener una charla sobre ellos, eso es precisamente los que h2ogpt te permite hacer, como un ambiente donde tu conocimiento es lo principal. 

Por último, comentar LangFlow. Esta herramienta nos permite crear entornos de LangChain de manera visual y muy intuitiva. Es como armar un rompecabezas ya que se basa en ir seleccionando qué componentes queremos disponer y los vamos enlazando para crear la secuencia. Una herramienta muy útil cuando queremos hacer pequeñas demos. Su enfoque amigable y la integración con la tecnología LLM hacen que sea una opción a considerar en la implementación de soluciones innovadoras.

Paso 5: Eficiencia en Inferencia de Modelos LLM 

De momento montar a Avy está siendo muy entretenido, pero, ¿dónde podemos tener disponible este servicio para su explotación? Este es el momento en el que la adrenalina se dispara

Hasta ahora no he mencionado nada, pero os voy a hacer una pregunta. ¿La inferencia de estos modelos, puede hacerse en CPU?

Si eres como yo, seguro que estás al tanto de que los modelos LLM de dimensiones colosales son entrenados con la potencia de las GPU. Estas máquinas de velocidad aceleran los tiempos de entrenamiento hasta niveles inimaginables.

Pero luego en producción, ¿estos modelos siguen necesitando de GPU? Depende del modelo, pero en nuestro caso sí y he aquí el punto clave de todo este tinglado. 

Si hablamos de tiempos, usando CPU en inferencia, la generación de la respuesta puede llevar su tiempo (dependiendo de la pregunta y el modelo) entre 30 segundos o 5 minutos. Admitámoslo, por lo general estos tiempos son demasiado elevados y nos obliga al uso de GPU.

Con GPU en inferencia los números se transforman en tiempos que oscilan entre 3 y 40 segundos, en general, por debajo de 1 minuto en tiempo de respuesta, demostrando la eficiencia que aporta la tecnología LLM en este proceso.

Paso 6: Implementación de GPU en Entornos de Producción

Para los que tenéis un poco de experiencia en la puesta de modelos en producción ahora os estáis riendo, lo sé. Esto se debe a que no es tarea fácil (ni barato) montar entornos los cuales dispongan de GPU en producción. 

Hasta la fecha encontrar un servicio cloud donde puedas usar soluciones de fácil autoescalado como Google App Engine o AWS Fargate y que dispongan de GPU no es precisamente cómo encontrar una aguja en un pajar.  Por lo general, nos encontramos en el mundo de las máquinas virtuales y entornos de Kubernetes. Sí, suena a un trabajo arduo y, a veces, un poco complicado.

Con la tecnología LLM viene la luz en el túnel. Nuestro data scientist se lo ha currado un montón y tenemos un modelo para la producción con un peso de solo 5 GB. ¿Recuerdas que partimos de un Falcon 40B que pesaba 90 GB? Sí, eso es un recorte impresionante. Así que, aunque el camino no sea sencillo, estamos listos para la producción con un modelo que ha sido moldeado a la perfección. 

Paso 7: Del Papel a la Realidad en las empresas

empresas llm ia 1

Llega la parte final, la decisión de si todo esto finalmente se lleva a la práctica o se queda en otro proyecto posible a futuro dentro de un cajón desastre.

Las primeras preguntas serían, ¿Cuánto afecta a la productividad de la empresa el uso de este servicio? Piénsalo, siguiendo el ejemplo de Avy, afectaría en mejorar la productividad de los desarrolladores de la empresa. Te voy a dar un dato interesante: según un artículo de GitHub, los programadores que hacen uso de estos servicios LLM experimentan una reducción del 55% en sus tiempos de desarrollo.

¡Sí, leíste bien! Un 55% de mejora en comparación con los que no lo utilizan. Eso se convierte en más tiempo para la innovación y menos para lo repetitivo. Lo que genera que se sientan con menos carga mental y más contentos con su trabajo por no tener que hacer tanto trabajo operativo.

Pero espera, no todo es color de rosa. Aquí es donde entra el análisis en frío y duro, ¿Cuánto dinero me cuesta disponer de Avy y sus capacidades LLM? Es un ejercicio de equilibrio, donde las herramientas y la arquitectura juegan un papel crucial. Es momento de sacar las cuentas y poner los costos en un lado de la balanza, mientras que en el otro lado tienes la reducción de tiempos y el aumento en la satisfacción de tus valiosos empleados.

Transforma tu Experiencia Laboral con Asistentes LLM

Desde hace un tiempo, no es ningún secreto que nuestro terreno está creciendo muy rápido, casi como un juego de plataformas en el que cada nivel es más desafiante que el anterior.¿Has notado cómo en muchas de las ofertas laborales se han vuelto creativos con los beneficios? Horario flexible, tickets, seguro médico etc. 

Pero aquí va una chispa de genialidad que rara vez veo: ¿por qué no incluir a estos asistentes LLM en el paquete de beneficios? Sí, has leído bien. Imagina tener a tu propio compañero virtual de código a tu disposición. Una especie de dúo dinámico entre tú y la inteligencia artificial. Y no solo para el trabajo, sino para que tu vida sea más fácil, menos agotadora y más productiva. ¡Únete a nuestro equipo y sé parte del avance tecnológico! No pierdas la oportunidad de trabajar con la última generación de herramientas que están transformando la forma en que programamos y creamos soluciones innovadoras. 

Usar asistentes virtuales en el desarrollo de código, como Copilot, tiene un montón de ventajas para los profesionales de esta movida. En primer lugar, ganamos en eficiencia lo que significa que nos ahorramos tiempo en escribir código desde cero porque estos asistentes nos generan trozos de código funcionales.

Y ojo, la cosa no acaba ahí. Con estos asistentes virtuales exploramos nuevos lenguajes y tecnologías, sin tener que ser unos genios en todo. ¿Ves lo que te digo? Además, reducimos fallos porque generan código consistente y siguen las mejores prácticas, estos asistentes nos hacen la vida más fácil, nos dejan experimentar con ideas nuevas, y nos ayudan a currar con más aguante y menos rollos.

Reflexionemos

Hace apenas una década, ¿quién iba a pensar que estaríamos aquí, siendo testigos de los avances que la IA, incluyendo los LLM, ha logrado en su evolución? Es como si cada día nos acercará un poco más a un futuro que solíamos ver solo en las películas de ciencia ficción. Esta ola de innovación no podría quedar fuera del mundo empresarial. ¡Ni de broma!

La IA está emergiendo en el horizonte empresarial en formas que antes eran inimaginables. Está transformando cómo se hacen los negocios, cómo interactuamos con los clientes y cómo optimizamos los procesos. Pero, aquí viene lo interesante: en este viaje, a menudo hay un «pequeño» detalle llamado costo.

Sabemos que no todos los avances en IA y en LLM vienen con un boleto de entrada gratuita, muchos de los servicios que puedes llegar a ofrecer usando IA a menudo tienen un coste, algunas veces poco, en otras mucho. Otras veces, los LLM, no tienen licencias que nos permitan explotarlos de forma comercial. Y ni hablemos de las veces en que las licencias nos ponen una barrera en nuestro camino hacia la explotación comercial. Por lo tanto, plantear proyectos sólidos (y rentables) requiere esfuerzo. Estás en ese punto en el que las buenas ideas no son suficientes, sino donde sabes cómo materializarlas.

No se trata solo de la idea, sino de cómo hacerla tangible, cómo convertirla en un proyecto que no solo suene bien, sino que también funcione en el mundo empresarial. Una vez que puedas dominar esto, te encontrarás en una posición privilegiada. Podrás ofrecer servicios que marquen la diferencia, que abran nuevas oportunidades y que te posicionen de manera única en el mercado. En este camino, encontrarás herramientas clave como Copilot que pueden ser un aliado para dar forma a tus proyectos, optimizar tus esfuerzos y marcar una distinción notable en el panorama tecnológico. Así que, ¿por qué no aprovechar la ayuda de estas herramientas para tu crecimiento profesional?

Enlaces de interés:

Más info sobre Falcon: https://huggingface.co/blog/falcon#fine-tuning-with-peft

Más info sobre QLoRA: https://huggingface.co/blog/4bit-transformers-bitsandbytes

Ejemplo de LangChain: https://ai.plainenglish.io/%EF%B8%8F-langchain-streamlit-llama-bringing-conversational-ai-to-your-local-machine-a1736252b172

contacta

Desarrolla tu siguiente proyecto de Data, IA, Cloud o Transformación Digital con nosotros. Empieza hablando con nuestro equipo comercial.

Tech Matters

La Newsletter mensual para conocer los proyectos de tecnología e inteligencia artificial que están teniendo un impacto positivo en el mundo.