¿IA generativa en tu aplicación? ¿Qué podría salir mal?

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

La utilización de modelos de IA generativos puede resultar en una gran variedad de salidas, incluso inesperadas, lo que los hace menos deterministas y más difíciles de probar. Al intentar integrar estos modelos en tu aplicación, puede ser un desafío garantizar que mantienes un alto nivel de calidad de estas salidas de IA, e incluso asegurar que sus resultados no interrumpan el flujo de tu aplicación. Ven a revivir mi viaje de descubrimiento sobre cómo pude mejorar drásticamente los resultados de la API de ChatGPT de OpenAi, para su uso dentro del producto de mi empresa. En esta charla compartiré muchos consejos que te ayudarán a utilizar de manera más efectiva el poder de modelos de IA como ChatGPT en tus propias aplicaciones, incluyendo estrategias de prueba y cómo evitar muchos de los problemas con los que me encontré.

This talk has been presented at TestJS Summit 2023, check out the latest edition of this JavaScript Conference.

FAQ

GenreBI es una herramienta que se utiliza en el contexto de desarrollo de software para mejorar la calidad del código, aplicándose en pruebas y otros aspectos del desarrollo de productos de software.

La misión de Severity es tomar mejores decisiones en los equipos de producto, enfocándose en ingenieros y personal de producto para mejorar la calidad y efectividad de sus desarrollos.

Es crucial entender las limitaciones de los modelos de OpenAI para asegurar la calidad del software. Conocer sus fortalezas y debilidades permite integrar la inteligencia artificial de manera más efectiva en el desarrollo de productos.

Para manejar la naturaleza no determinista de los modelos de IA, se utilizan estrategias como pruebas de contrato dinámicas y el ajuste de indicaciones para mejorar la precisión de las respuestas.

Se utilizó Docker para lanzar una instancia de Puppeteer en un servidor EC2 y exponer una API que emulaba la funcionalidad de ChatGPT, permitiendo su integración en aplicaciones antes de que estuviera disponible una API oficial.

Los desafíos incluyen manejar respuestas no deterministas, integrar adecuadamente las funciones de IA en el flujo de aplicaciones, y entender y adaptarse a las limitaciones específicas de los modelos de IA utilizados.

La prueba de contrato permite validar la interacción con la API sin incurrir en costos adicionales por uso y minimiza las latencias al utilizar respuestas simuladas, lo que es especialmente útil cuando se interactúa con APIs basadas en uso como las de OpenAI.

Todd Fisher
Todd Fisher
29 min
07 Dec, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy discute la aplicación de GenreBI en aplicaciones, utilizando Docker para hacer que ChatGPT funcione en cualquier máquina, desafíos con las respuestas JSON, pruebas de modelos de IA, manejo de problemas de API de IA y respuestas, conteo de tokens y límites de tasa, descubriendo limitaciones y adoptando un enfoque reactivo, la fiabilidad y los desafíos de las API de IA, y el uso de GPT y AI Copilot en el desarrollo de software.

1. Introducción a GenreBI en Apps

Short description:

Hoy, quiero hablar sobre GenreBI en nuestras aplicaciones como una característica del producto. Discutiremos su aplicación en bases de código y la importancia de la calidad. Comprender el flujo de una aplicación y sus dependencias, específicamente las limitaciones de los modelos de OpenAI, es crucial para una mejor toma de decisiones y la calidad general del producto.

Genial. Así que hoy quiero hablar un poco sobre GenreBI en nuestras aplicaciones como una especie de característica del producto. Un poco diferente a la charla anterior que dio Olga, que fue bastante impresionante, usas GenreBI para escribir pruebas. En este caso, queremos hablar un poco sobre el otro lado de donde se podría aplicar GenreBI en tu base de código, que esencialmente se filtra en tu prueba, ¿verdad? Dicho esto, quiero cubrir brevemente nuestra compañía, en la que trabajo actualmente, Severity, he estado aquí durante aproximadamente un año. Hacemos un montón de cosas de IA. Nuestra misión final es tomar mejores decisiones, desde el existencial humano, vamos a tomar mejores decisiones donde podamos. Pero, por supuesto, eso es algo a gran escala. Así que realmente queremos centrarnos ahora en tomar mejores decisiones en los equipos de producto. Ingenieros, gente de producto, ese tipo de cosas. Así que si eso suena interesante, ve a este sitio web. Si no, eso también está bien. Eso es más contexto de, hemos estado trabajando con esto durante aproximadamente un año. Y con eso, por supuesto, hay muchas cosas de GenreBI que hemos estado utilizando. Y eso es solo un poco de contexto aquí en lo que voy a compartir hoy, porque realmente hay muchas cosas geniales que puedes hacer con la IA, pero hay muchas cosas extrañas cuando realmente pones la IA en las bases de código e intentas hacer que las cosas funcionen desde una perspectiva de producto. Entonces, dicho esto, la calidad es muy importante. Hay muchos aspectos de la calidad en las bases de código. Testing es un aspecto de muchos aspectos. Hay muchas formas diferentes de probar. No entraremos en eso porque creo que todos tenemos una buena idea de lo que son esas cosas. Unidad, hay manual testing, testing automatizado, y mil cosas más. Ahora, otro aspecto importante de la calidad es esta idea de planificar o diseñar el flujo de una aplicación. Entender eso, es muy clave. Comprender cómo los usuarios fluirán a través de tu aplicación, entender dónde las cosas pueden fallar, ese tipo de cosas. Entonces, también voy a tocar un poco sobre eso hoy. Y luego este tercero es entender las dependencias, específicamente sus comportamientos y limitaciones. Entonces, cuando empiezas a usar la IA en tu aplicación como una característica del producto, tienes que entender realmente esas dependencias. En este caso específico, el case study que estoy compartiendo hoy con el material muy es que estamos usando los modelos de OpenAI. Y con eso, es muy crítico entender que los modelos de OpenAI son muy buenos en ciertas cosas, pero muy malos en otras cosas. Y entonces, cuanto mejor entendamos las limitaciones, en general podremos dar mejor calidad, porque al final del día, ya sea pruebas, ya sea diseñar cosas, la calidad es realmente lo que estamos tratando de resolver. Y entonces, dicho esto, esto en realidad puede aplicarse a otros LLMs, otros modelos por ahí, pero específicamente, hemos estado usando OpenAI, y por lo tanto estos ejemplos serán en OpenAI

2. Uso de Docker para hacer que ChatGPT funcione en cualquier máquina

Short description:

Una de las características de Verity era la capacidad de crear y generar documentos. También teníamos un código de ejemplo que demostraba el uso de ChatGPT. Sin embargo, no había una API de ChatGPT para bases de código, lo cual era una gran desventaja. Para solucionar esto, se nos ocurrió la idea de usar Docker para hacer que funcione en cualquier máquina. Vamos a explorar este concepto más a fondo.

formato. Así que, dicho esto, una de las características de Verity que construimos temprano, antes de que saliera ChatGPD, era esta idea de crear un documento, generar o redactar un documento, y eso funcionó bastante bien. Permíteme pasar al siguiente. Así que, código de ejemplo aquí. Yo solo voy a cubrir brevemente esto para ver si funciona bien. Oh, mira eso. Genial. Increíble. Entonces, importación típica de SDK aquí arriba, y luego tenemos una llamada de completions. Eso es esencialmente cómo OpenAI realmente llamará a la IA. Y luego aquí tenemos este prompt aquí. Esto es esencialmente lo que verías en cualquier tipo de cosa de ChatGPT, donde escribes algún tipo de comando, algún tipo de prompt. Eso se cubre aquí. Así que, dicho esto, tenemos este ejemplo aquí. Y por supuesto, si lo ejecutas, tendrías algo como local host es mi servidor, ¿cuál es el tuyo?, para completar las rosas son rojas, las violetas son azules. Lo siento, siento que esto está en el camino. Permíteme subir más aquí, y así sucesivamente, ¿verdad? Y entonces, como dije, así que si vas al playground en ChatGPT, misma idea allí. Así que, esas son las dos cosas que son iguales allí.

Así que, dicho esto, si retrocedemos a noviembre de 2022, salió ChatGPT. Fue un gran revuelo. Todos estaban como, tan emocionados. Oh, ChatGPT, va a revolucionar el mundo, todas esas cosas buenas. Y creo que en su mayor parte tenían razón. Y entonces, una desventaja, sin embargo, con ese anuncio fue que no había una API de ChatGPT para que las bases de código realmente usaran cosas geniales de IA, al menos no todavía. Y eso fue un gran bajón. Y entonces, sabes, pensando en este playground donde podrías escribir cualquier prompt y generar lo que diablos quieras, no teníamos eso en la base de código, ¿verdad? Y entonces, tuvimos esta idea genial. ¿Alguien aquí ha usado Docker? Así que, Docker es una idea bastante genial, ¿verdad? Y este es uno de mis memes favoritos sobre Docker. Es como, bueno, funciona en mi máquina. ¿Y si encontramos una forma de hacer que funcione en no mi máquina? Y entonces, vamos a tomar esto. Así que, esto es algo que intentamos.

3. Uso de Puppeteer y GPT-3

Short description:

Usamos Puppeteer para alojar nuestra aplicación en una instancia EC2 en la nube y exponer una API. Sin embargo, nos encontramos con problemas como Captcha y limitaciones de inicio de sesión. Aunque fue un buen experimento para probar la API de chat2PD, no era confiable para el código de producción. Más tarde, obtuvimos GPT-3, pero descubrimos una distinción entre el lenguaje natural y JSON. Vamos a explorar algunos ejemplos utilizando la API de completions de chat y la función askAI.

Entonces, tenemos esencialmente la ventana del navegador. Usamos Puppeteer. Y decimos, oye, vamos a lanzar eso en una instancia EC2. Vamos a alojar eso en la cloud. Vamos a lanzar Node.js allí y exponer una API. Y así, antes de que saliera la API de chat2PD, pudimos usar la API, por así decirlo, en nuestra aplicación. Y por supuesto, nada saldrá mal porque esa es la mejor idea, ¿verdad? No tanto, ¿verdad? Entonces, algunas cosas con las que nos encontramos es que aparentemente cuando no tienes a un humano cocinando cosas alrededor de los sitios web se dan cuenta. Entonces, Captcha fue un problema. Lo eludimos con algunas cosas interesantes que aprendí sobre Captcha. No entraré en eso. Pero otra cosa con la que nos encontramos es el inicio de sesión. Entonces, después de unos 15 minutos, por supuesto, la cosa se cerraría. Y entonces, cuando golpeas la API de nuevo, por supuesto, fallarías. Eso no fue muy bueno. Y por supuesto, hay algunas limitaciones con la cuenta que estamos usando. No puedes tener tantas solicitudes o lo que sea. Y entonces, en resumen, con este experimento, la pregunta es como, ¿fue algo bueno? ¿Fue algo malo? Diría que fue bueno en que nos ayudó a probar la API de chat2PD, por así decirlo, antes de que saliera. Pero es malo en que probablemente nunca usaríamos esto en el código de producción porque simplemente no era muy confiable, ese tipo de cosas. Entonces, en resumen, fue un buen experimento, pero seguimos adelante, ¿verdad? Y entonces, por supuesto, unos meses después, chat2PD salió con APIs y obtuvimos GPT-3. Y estábamos muy emocionados. Es bastante impresionante. Aprendimos muy temprano, muy rápidamente, que hay una distinción entre el lenguaje natural, en el que los LLMs, la IA es muy buena, y JSON, en el que la IA es sorprendentemente no muy buena. Y entonces, vamos a repasar algunos ejemplos aquí. Entonces, en este caso, configuramos nuestro código aquí. Decimos GPT. En este caso, en realidad comenzamos con 3, pero solo haremos 3.5 para este escenario aquí. Entonces, esto es solo una función auxiliar aquí. Pero en última instancia, esto está utilizando la API de completions de chat aquí. Y luego con eso, llamamos a esa misma función. Entonces, déjame volver allí para aclarar eso. Entonces, askAI es el nombre de la función aquí.

4. Trabajando con Respuestas JSON

Short description:

Teníamos varias necesidades de devolver JSON para diversos fines. Le preguntamos a la IA e intentamos analizar los resultados en JSON. Las respuestas iniciales no eran JSON válidos. Hicimos varios intentos para obtener respuestas JSON válidas, y finalmente descubrimos que proporcionar ejemplos mejoraba los resultados. Sin embargo, aún no funcionaba de manera confiable, y tuvimos que esperar a GPT-4, que mejoró la tasa de éxito a alrededor del 80%.

Entonces, en la siguiente diapositiva, vamos a usar eso aquí. Así que, tenemos un prompt aquí. Así que, teníamos varias necesidades de devolver JSON para diversos fines. En el caso de este ejemplo específico, simplifiqué algunas cosas. Pero solo finge que sea lo que sea, como, hey, devuelve cinco chistes geniales en JSON, sea cual sea el prompt, finge que está aquí. Pero en última instancia, le preguntamos a la IA, e intentamos analizar los resultados en JSON. Así que, veamos cómo fue eso. Entonces, esta es la respuesta cruda para ese código. Y si te das cuenta, esto aquí no es exactamente JSON. Eso es solo un tipo de lenguaje humano, que no es el mejor, porque si analizas eso en JSON, vas a lanzar un error, y sucederán cosas malas, ¿verdad? Entonces, volvemos y decimos, hey, agreguemos esto. Devuelve solo el valor JSON formateado. Y luego devuelve esto. Y es como, está bien, eso es genial, pero eso tampoco es JSON válido. Como, está bien, gracias por nada. Entonces, volvemos y alteramos el prompt de nuevo. Sin otras palabras. Como, por favor, solo devuelve JSON es la idea, ¿verdad? Y lo hizo, y está genial, excepto que quiero devolver un array JSON, que es ligeramente diferente a un objeto con una propiedad de un array que tiene un array en él. Así que, no se analizó muy bien. Entonces, por esa razón, oh, eso apesta. Así que, lo intentamos de nuevo. Hacemos algunas otras cosas. Finalmente, nos damos cuenta de que, hey, si tienes ejemplos, en realidad funciona mucho mejor. Entonces, vamos y damos un ejemplo, y ahora empieza a funcionar, y estamos todos contentos con eso. ¡Woohoo! Pero por supuesto, con cualquier cosa, a veces no funciona alrededor del 60% del tiempo, que no es un número muy grande. Y entonces, volvemos a la pizarra, y decimos, está bien, eso apesta. No podemos usar esto de manera confiable todavía. Al menos no de la manera que queríamos. Y entonces, por supuesto, unos meses después, sale GPT-4, y eso es bastante impresionante. Así que, conectamos GPT-4 en el modelo, y resulta que funciona alrededor del 80% del tiempo, que es una cantidad positiva, un saldo positivo allí, pero no es el 100%. Así que, estamos como,

5. Desafíos de Pruebas con Modelos de IA Dinámicos

Short description:

GPT-4 es mejor con JSON, pero más lento y costoso. Nos enfrentamos a desafíos con respuestas JSON inválidas y exploramos la idea de llamar a la API varias veces. Las pruebas de integración son un enfoque común, pero se eligió la prueba de contrato con una API simulada para evitar problemas de costos y latencia. Sin embargo, la naturaleza dinámica de los modelos de IA dificulta su prueba. La naturaleza no determinista de los modelos de IA y la necesidad de pruebas de contrato dinámicas impulsadas por el consumidor plantean desafíos.

Bueno, eso es un poco extraño. ¿Qué más podemos hacer aquí? Así que, pensamos en cosas. GPT-4 es mejor con JSON, pero es más lento. Cuesta un poco más. Y por supuesto, porque todavía devuelve JSON inválido, nos estamos rascando la cabeza, como, ¿llamamos a esto una y otra vez, como 20 veces hasta que devuelva un JSON válido? Quizás. Y probamos eso un poco, para peor. Pero quiero pensar en cómo probar algunas de estas cosas, ¿verdad? Entonces, un patrón típico aquí es la integración testing. Todos conocemos esta idea de tener nuestro código de producción, que golpea algún tipo de API, en este caso, la API de OpenAI, y normalmente tienes algún tipo de entradas y alguna respuesta. Tus pruebas normalmente utilizan el código de producción para hacer esencialmente la misma idea, ¿verdad? Y luego está este enfoque alternativo, la prueba de contrato testing. Un gran beneficio aquí, específicamente cuando estás golpeando la API de OpenAI, es que hay algunas limitaciones por las que realmente estás pagando por uso. Y entonces, si fueras a ejecutar un conjunto de pruebas, por ejemplo, golpeando la API de OpenAI en vivo, vas a incurrir en muchos costos, potencialmente. Y por supuesto, hay algunas latencias adicionales allí. Y esa es una razón por la que elegimos decir, oye, construyamos algunas cosas de API simulada a través de la prueba de contrato testing. Y entonces, la idea allí es que, cuando ejecutas pruebas, en realidad estás ejecutando el contrato, lo que funciona bastante bien para la mayoría de las API que he usado. Pero un hecho interesante es que tenemos esta nueva cosa interesante, esencialmente un nuevo paradigma con la IA, con algunos de estos LLMs, estos grandes modelos de lenguaje que existen. Sí, tenemos estos contratos más estándar de la API a la que estamos golpeando. Entonces, tenemos la entrada aquí, también tenemos la respuesta. Pero además de eso, tenemos estas piezas más dinámicas, donde dependiendo de lo que ponga en este prompt, este contenido puede verse completamente diferente. Y eso es un nuevo paradigma, al menos para mí para entender. Y entonces, con eso dicho, otro ángulo interesante aquí es que decimos, oye, el prompt es cuál es un montón de números sumados, la salida es eso. Eso funciona bastante bien. Ejecutemos exactamente lo mismo otra vez. Y vemos que la salida es un poco diferente. Eso podría ser problemático cuando estás ejecutando una prueba que tal vez está buscando ciertas cosas. Ejecútalo de nuevo, otra cosa, y así sucesivamente. Entonces, vemos que la naturaleza no determinista de la IA que estamos usando va a hacer que sea realmente difícil probar algunas de estas cosas. Y entonces, tenemos que pensar en qué más podemos hacer allí? Y por supuesto, con cualquier modelo de IA, hay esta pregunta de que realmente no sabes lo que vas a obtener. Hay muchas formas de resolver eso. Pero en resumen, la forma en que pienso en testing algunas de estas cosas de IA es la prueba de contrato dinámica impulsada por el consumidor testing. Entonces, para lo que vale, busca eso si no estás seguro exactamente de qué se trata. Pero en esencia, podemos probar ciertos casos de prueba, pero otros

6. Pruebas de Modelos de IA

Short description:

Al probar modelos de IA, es importante evitar esperar resultados consistentes. En cambio, necesitamos considerar si vale la pena tener una prueba que puede ser inestable debido a la naturaleza de los modelos de IA.

unos, tal vez no tanto. Entonces, en este caso, queremos probar que devuelve el formato correcto, luego ir y hacer algo. Y a la inversa, si es el formato incorrecto, ir a hacer algo más. Cosas que quieres evitar cuando estás probando estos tipos de modelos de IA es evitar decir que esto siempre va a devolver exactamente el mismo valor, porque no lo hará. Hay, por supuesto, formas de aumentar las posibilidades allí, pero en resumen, no vas a obtener eso de manera consistente yendo allí cada vez. Entonces, tienes que debatir un poco, ¿vale la pena tener una prueba que va a ser muy inestable debido al modelo de IA y demás? Entonces, con eso dicho, pensamos en esta idea de, oye, ¿qué tal si pudiéramos darle a la IA un mejor conjunto de funciones definidas específicamente para el problema de JSON? Y resulta que esa misma semana de la que estábamos hablando, salieron con esto

7. Uso de Funciones y Exploración de Alternativas a JSON

Short description:

La opción de usar funciones en la aplicación para llamar a la IA y la utilización de la función de chat fueron significativas. Añadimos funciones y vimos buenos resultados con JSON válido. Sin embargo, JSON no siempre es consistente, por lo que exploramos alternativas como markdown y el análisis simple. Actualmente, el análisis simple es nuestra opción preferida.

función llamando a la API. Entonces, muchas de las características de las que estoy hablando hoy, podrías simplemente buscar en la documentación de la API de OpenAI. Hay muchos detalles interesantes allí. Pero esencialmente, lo que esta opción nos dio es la idea de, oye, tenemos una aplicación, mostremos a la IA, aquí hay una lista de funciones que podríamos llamar, y la IA decidirá cuándo llamar a esas. Y eso es una idea interesante. Y la característica que añadimos allí que utilizó eso fue esta idea de un chat. Así que, vamos y venimos, similar a chatGBT, pero en algún momento, tenemos un botón como crear un nuevo documento, por ejemplo, o cualquier función que pueda haber en tu aplicación. Fuimos capaces de utilizar la IA para usar eso a través de esa característica. Y eso fue algo bastante impresionante. Y la idea allí es, bueno, si llamó a una función, la función tenía un argumento que era de tipo de JSON, probablemente devolverá JSON, era la gran esperanza, ¿verdad? Y así, lo hicimos. Fue bastante bueno. Así que, repasamos el código. Esencialmente añadimos las funciones aquí abajo. Decimos que es de tipo JSON y así sucesivamente. Y por supuesto, obtenemos algunos buenos resultados. Y en general, funciona bastante bien. Así que, vemos que hay un JSON válido allí. Y celebramos. Y es todo diversión ¿verdad? Y así, pensamos en esto, pensamos en la consistencia, en lo que respecta a los contratos de la API a través de ese ejemplo anterior, versus lo muy inconsistente, lo que sea que esté en tu indicación, ese tipo de cosas. Las llamadas de funciones caen en algún lugar intermedio allí, en mi mente, donde en su mayor parte, es bastante consistente. Pero tienes algunas cosas raras dependiendo de lo que pongas allí. Así que, en resumen, la llamada de funciones aumentó nuestro número al 85%. Estábamos muy contentos. Y por supuesto, 85 todavía no es muy bueno. Así que, surgió la pregunta, ¿necesitamos incluso JSON? JSON es agradable de usar cuando estás analizando cosas. Pero ¿y si tal vez hay algunas alternativas? Y por supuesto, probamos markdown. Markdown es bastante bueno. Dependiendo de tu uso caso, eso puede o no ser un beneficio allí. Pero realmente, volviendo al análisis simple, el análisis de saltos de línea, ese tipo de cosas, pareció funcionar muy bien porque hay menos posibilidades de que la IA realmente estropee las cosas. Así que, por lo que vale, esa es nuestra opción preferida actualmente. Y por supuesto, dar ejemplos de salidas, eso siempre es un gran beneficio allí.

8. Manejo de la API de IA y gestión de respuestas

Short description:

Aumentamos nuestro número al 90%, pero aún no llegamos al 100%. La API de IA puede devolver un estado 200 pero fallar por varias razones, incluyendo un formato incorrecto, respuestas excesivamente largas, respuestas cortadas o incluso cadenas vacías. Al usar modelos de IA en aplicaciones, considera implementar estrategias de reintento y utilizar el argumento 'end' para especificar múltiples versiones de la respuesta. Sin embargo, esto puede resultar en un mayor uso de tokens. Para manejar respuestas largas, ajusta las indicaciones de la API para ser más específicas y proporciona ejemplos. A veces, solicitar un número específico de respuestas puede dar resultados inesperados.

Entonces, con eso dicho, aumentamos nuestro número al 90%. Celebramos, pero aún no llegamos al 100%. Así que, quiero hablar brevemente sobre algunas de estas otras cosas que hemos aprendido al tratar con la API de IA. Entonces, lo primero es que muchas veces la IA devolverá un estado 200 pero fallará por una serie de razones, incluyendo un formato incorrecto. Tal vez devuelva una respuesta que es 20 veces más larga de lo que esperabas. Y por supuesto, también está el hecho de que devuelve una respuesta. Simplemente se corta a mitad de frase y se rinde. Y es como, bueno, ¿qué demonios? ¿Qué está pasando ahí? Y por supuesto, uno de mis favoritos, a veces simplemente devuelve una cadena vacía y simplemente dices, oh, eso no fue muy útil. Así que, bueno. Eso está bien. Entonces, formas de reintentar. Así que, cuando estás usando algunos de estos modelos en tus aplicaciones, piensa en las estrategias de reintento. En este caso, el reintento exponencial es típicamente lo que yo recomendaría. Hay un puñado de bibliotecas allí para que las uses si quieres. Otra cosa en la API de OpenAI es este argumento 'end'. Así que, esto básicamente nos permite decir hey, si la primera versión que devuelve es mala, podrías especificar, quiero que devuelva 20 versiones de esto, y con la misma cantidad de latencia, devolverá 20 versiones diferentes. Así que, si la primera es mala, pasa a la siguiente. Si esa es mala, pasa a la siguiente y tienes, en este caso, 20 oportunidades diferentes de que sea buena, lo cual idealmente no tendrías que hacer. Pero jugamos con eso y en algunos casos funcionó bastante bien. Así que, estamos bien con eso. Y por supuesto, la desventaja es que usamos más tokens. Entonces, cubriendo las respuestas realmente largas aquí. Así que, hay algunos argumentos adicionales de la API en eso. Así que, si quieres buscar los tokens máximos, busca el stop. Pero en última instancia, encontramos que para detener el tren desbocado, queremos ajustar nuestras indicaciones de la API para ser mucho más específicas, dar ejemplos de eso. Así que, también, mi favorito aquí es a veces decimos, hey, devuelve cinco respuestas. Creo que mi récord fue decir, hey, devolví cinco respuestas y obtuvimos 42 respuestas de vuelta.

9. Contando Tokens y Manejando Límites de Tasa

Short description:

Los modelos de ChatGPT a veces devuelven más de lo esperado. Los tokens se utilizan para contar créditos y tienen limitaciones. Contar tokens nos ayuda a evitar alcanzar los límites. Otras estrategias incluyen enviar menos contexto, utilizar diferentes versiones del modelo, dividir en fragmentos y encadenar solicitudes. Para evitar demasiadas solicitudes, verifica las cabeceras para los límites de tasa. Con estas estrategias, logramos un 99% de éxito, aceptando que los errores son normales y los modelos mejorarán con el tiempo.

Y estás como, no sé si sabes contar. ¿Qué está pasando? Así que, para nosotros, los modelos de chatqbt a veces devuelven un poco más de lo que esperas. Así que, otra cosa con la que nos encontramos aquí es cuando la solicitud era demasiado grande, quiero hablar muy brevemente sobre los tokens. ¿Alguien ha jugado con tokens aquí? ¿Tokens de IA? Así que, un puñado de personas. Así que, la forma en que esencialmente cuentan los créditos que estás utilizando allí es a través de tokens. Así que, en resumen, estos tokens son parte de, están integrados en el modelo. Bajan a las incrustaciones, las llaman, que es efectivamente una representación numérica de cada uno de estos tokens. Y por supuesto, aproximadamente cuatro caracteres en inglés son alrededor de un token. Hay un montón de detalles en eso. No entraré en eso demasiado. Pero solo sepan que empezamos a contar tokens porque hay limitaciones cuando usas algunos de estos modelos. Lo llaman la ventana de contexto allí. Y así, pudimos contar nuestros tokens antes de que realmente alcanzáramos los límites, ese tipo de cosas. Y eso pareció funcionar muy bien.

Otras cosas para probar, envía menos contexto, vuelve a las versiones de la ventana de contexto más grande de el modelo. Así que, hay como GPT-4, 16K, versus 32K, ese tipo de cosas. Podrías dividir las cosas. Y por supuesto, encadenar solicitudes, todas esas cosas ayudan a asegurar que estamos devolviendo las respuestas que queremos. Y luego solo quiero tocar brevemente este punto. Esto parece suceder con prácticamente cualquiera con quien hable que haya utilizado la API de OpenAI. Es como, hey, hay demasiadas solicitudes. Lo clave allí es que si te encuentras con eso, revisa las cabeceras. Y estas cabeceras aquí te dirán esencialmente si estás alcanzando un límite de tasa o no. Así que, muy útil allí. Me llevó un poco de tiempo averiguar eso. Y así que, en resumen, con todo esto, pudimos llevar nuestro porcentaje de éxito hasta el 99%. Y decimos que el 99 es genial. Hay muchas cosas adicionales que probablemente podríamos probar, pero las aplicaciones arrojan errores todo el tiempo. Eso está perfectamente bien, y tenemos cierto grado de errores en eso. Y así que, estamos bien con eso,

QnA

Descubriendo Limitaciones y Enfoque Reactivo

Short description:

Y finalmente, vamos a llegar al 100%. Estamos contentos con los resultados porque se pueden hacer muchas cosas geniales con la IA. Todd, ¿cómo lograste eludir los CAPTCHA? Existen servicios a los que puedes pagar para que las personas eludan manualmente los CAPTCHA. Esta pregunta pregunta, ¿cómo descubriste las limitaciones como el CAPTCHA? Golpeamos la API a través de la aplicación, y luego, cuando ocurre un error, vamos a verificar el servidor. ¿Hubo un punto en el que simplemente dijiste, sabes qué? Hay demasiados compromisos reactivos aquí. Vamos a dejarlo por ahora. Sirvió para ayudarnos a entender lo que podríamos hacer con él.

sabiendo, por supuesto, que con el tiempo, los modelos van a mejorar. Y finalmente, vamos a llegar al 100%. Estamos en el punto en el que es como, ¿queremos pasar tiempo adicional tratando de descifrar esto, o estamos bien donde estamos? Y así, eso es esencialmente donde lo dejamos y donde estamos actualmente. Y así, estamos contentos con los resultados porque se pueden hacer muchas cosas geniales con la IA. Y así, con eso dicho, gracias a todos por escuchar. Y si tienen preguntas, háganmelo saber.

Todd, ¿cómo lograste eludir los CAPTCHA? Sí. Entonces, hay... Sabías que venía, ¿verdad? Entonces, hipotéticamente, hay servicios a los que puedes pagar para que las personas eludan los CAPTCHA, que, hipotéticamente, estoy bastante seguro de que es solo una empresa, alguna compañía en algún lugar que tiene personas en computadoras que simplemente están presionando los botones de CAPTCHA, hipotéticamente. Entonces, no respaldaría tal cosa, pero... Nunca. Pero eso es algo que probablemente existe. Entonces, buena pregunta. Sí, pero potencialmente, tal vez en algún mundo, es posible.

Sí, es como teóricamente posible. Entonces, esta pregunta es bastante interesante. Al principio de tu charla, hablaste sobre ese primer experimento de construir una API de chat GPT. Y esta pregunta pregunta, ¿cómo descubriste esas limitaciones como el CAPTCHA, como diste algunos otros ejemplos? Sí. ¿O simplemente tenías que ser completamente reactivo cuando se rompía? Básicamente... Golpeamos la API a través de la aplicación, y luego, cuando ocurre un error, vamos a verificar el servidor. Y vemos, oh, es porque esto no está funcionando. Y así, fue muy reactivo como, no sabíamos que esto sería un problema. Pero tiene sentido que sería un problema, y ahora tenemos que ir a descifrarlo de alguna manera, ¿verdad?

¿Hubo un punto, y creo que lo describiste en tu charla, que lo hubo. ¿Hubo un punto en el que simplemente dijiste, sabes qué? Hay demasiados compromisos reactivos aquí. Vamos a dejarlo por ahora. Sí. Sirvió para ayudarnos a entender lo que podríamos hacer con él. Pero sí, definitivamente no es algo que pondríamos frente a los usuarios, porque simplemente no era bueno. Entonces... Hizo lo que tenía que hacer.

Fiabilidad y Desafíos de las APIs de IA

Short description:

La API ahora admite respuestas en formato JSON, pero el formato puede no coincidir con el esquema deseado. La naturaleza no determinista de las APIs de IA puede llevar a compromisos en el código y las pruebas. En algunos casos, puede ser necesario cambiar fundamentalmente la estructura de datos esperada. Las instrucciones personalizadas pueden ser útiles para controlar la salida de la IA. En general, aunque hay desafíos, la IA es impresionante y ofrece soluciones únicas.

Sí. Fue más un ejercicio de aprendizaje, ¿verdad? En tu charla, mencionaste que la... creo que es la API de open AI, no la API de ChatGPT, pero la API ahora admite respuestas en formato JSON. ¿Qué tan confiable es el formato de la respuesta que se devuelve?

Sí. Así que hicieron ese soporte para el formato como JSON, esencialmente. La única cosa a tener en cuenta es que devolverá un JSON válido, lo que significa que si lo analizas con JSON, lo analizará con éxito. Sin embargo, no necesariamente coincidirá con el esquema que quieras de cualquiera que sea la forma del JSON. Y entonces todavía tienes que ir y hacer algo de ingeniería de indicaciones e incluir, ya sabes, uno o dos ejemplos de cómo se ve un JSON válido en el formato que quiero. Pero sí, definitivamente ayuda con al menos el problema base de que no puedes analizar esto en absoluto.

Interesante. Y luego supongo que puedes probar contra la estructura de eso. Sí. Sí. Aquí hay una pregunta realmente interesante, que también me pregunto, ¿el estado actual de estas APIs de IA realmente nos hace comprometer la forma en que escribiríamos el código para manejar el hecho de que son tan no deterministas? ¿Y es eso un problema? Sí, siento que eso es un problema, pero también hay una especie de esperanza para el futuro de que, eventualmente los modelos mejorarán. Eventualmente tendremos menos compromisos, pero definitivamente el año pasado mientras trabajaba en esto, se siente como si hubiera un montón de cosas extra que si estuvieras simplemente diciendo como una API normal, nunca tendrías que hacer todas estas cosas extrañas. Pero porque es no determinista, porque el modelo es muy creativo y dado que hay formas de ajustar eso y hacerlo menos creativo. En algunos casos no puedes hacer eso porque de lo que quieres obtener del modelo. Básicamente tienes que comprometerte y añadir un esfuerzo adicional en el código o en la prueba para verificar si está funcionando o no.

Aunque diste un ejemplo, que personalmente me pareció salvaje, donde estás como, ¿necesita ser incluso JSON? Y eso es simplemente, para mí, alucinante. Sería como, vamos a cambiar fundamentalmente la estructura de los data, los data que estamos esperando de vuelta porque no se puede confiar en que sea JSON. Y para algunas personas, simplemente dirían, bueno, entonces es un no starter ahora mismo.

Sí. Y cuando te desesperas lo suficiente, empiezas a hacer esas preguntas de, ¿cuáles son otras formas en las que podríamos resolver esto? Porque una vez más, la IA es bastante impresionante, pero esencialmente domesticarla o controlarla a veces es un poco más difícil, ¿verdad? ¿Has encontrado cosas como instrucciones personalizadas que ayudan o todavía no realmente?

Sí, definitivamente. En la indicación que pasamos, es muy personalizada específicamente para lo que queremos obtener. Así que probablemente tenemos como 80 indicaciones diferentes en nuestro código que son únicas para lo que estamos tratando de hacer allí. Y es como, sí, un caso de uso muy específico y parece funcionar bastante bien. Así que. Interesante. Genial. Esta, creo que es una pregunta meta aquí. ¿Usaste la IA para escribir el código para llamar a la IA? ¿Fue útil para ayudarte a empezar? Siento que eso es como dos preguntas separadas, pero una pregunta meta.

Uso de GPT y AI Copilot

Short description:

He utilizado GPT para Playground 3.52 y AI Copilot en mi VS Code. Aunque AI Copilot es útil para tareas básicas y repetitivas, se queda corto en situaciones más complejas. Incluso para tareas repetitivas, es necesaria la validación. He experimentado problemas al traducir un horario de conferencia a múltiples zonas horarias, resultando en horarios incorrectos para los oradores. A pesar de validar una parte del horario, resultó ser un desastre.

Así que he usado mucho GPT para, supongo, Playground 3.52 para escribir algo de código, basado en la conversación anterior con la sesión anterior, hay algunas cosas que querrías mejorar allí. Actualmente uso AI Copilot en mi VS Code. Parece ser muy útil, probablemente el 50% del tiempo puedes confiar en él, pero las otras veces no es muy bueno. Así que mi actual mejor pensamiento allí es que en general ayuda con muchas cosas pequeñas. Y mientras esté haciendo cosas muy básicas y repetitivas como, hey, declara esto cinco veces diferentes basado en esta otra variable, cosas así, hace un muy buen trabajo, pero otras cosas cuando es un poco más involucrado, no mucho. Y ahí es donde debatirías basado en la conversación anterior de, ¿vale la pena, realmente me está ahorrando tiempo? Sí o no. Es una bolsa mixta, pero espero que en el futuro sea mejor. Así que empecemos a usarlo. Empecemos a dar retroalimentación y esperemos que las cosas mejoren. Incluso para esas tareas repetitivas, todavía es necesaria la validation. Ven y pregúntame durante el almuerzo sobre la traducción de un horario de conferencia a tres zonas horarias. Y a medida que avanzaba el día, los horarios se volvían incorrectos. E invité a los oradores en las horas equivocadas del día. A veces ni siquiera las horas equivocadas, los minutos equivocados. Simplemente, lo inventaba a medida que pasaba el tiempo. Y yo validé el primer 20% y dije, parece bien. No fue suficiente, un desastre absoluto. Así que puedo contarte esa historia y más para ayudar durante el almuerzo. Esta es una pregunta realmente interesante. Así que el testing de contratos te obliga a validar el contrato contra una API, pero con la naturaleza no determinista de los grandes modelos de lenguaje, ¿cómo puedes hacer eso? Sí. Y eso es como, fue como un golpe mental. Todavía no comprendo del todo la mejor manera de hacer eso, pero tienes por un lado, tienes cierto grado de contrato que se mantiene igual, pero en el lado dinámico es como, no lo sé. Eso parece una de esas áreas en las que vamos a ser mejores a medida que pase el tiempo. Mucha gente está intentando resolver eso. Pienso en los científicos de data y los ingenieros de machine learning con los que he hablado en los últimos años, y en algún momento eso se va a fusionar con el más clásico software de testing, el ámbito de la ingeniería de software. Ya lo está haciendo. Y creo que una vez que descubran, hay muchas formas de probar la corrección de los modelos que estás construyendo. Pero en este caso, cuando básicamente estamos confiando en un modelo de terceros, no puedes entrar en algunos de esos detalles, pero diría que si puedes, ahí es realmente donde está el núcleo del valor añadido en las pruebas y verificaciones en el modelo en sí. Así que si puedes controlar el modelo, eso es genial. Pero si no puedes, que en nuestro caso, si estamos usando open AI, no puedes realmente controlarlo. Así que te quedas con esta extraña sensación de, no sé exactamente la mejor manera, pero creo que con el tiempo, vamos a descubrir eso un poco más porque al final se reduce a si el modelo tiene problemas, ese equipo que mantiene el modelo debería ser el que solucione los problemas. Pero en algunos casos, debido a lo que estamos usando, no es tan sencillo como eso. Al menos es más sencillo que la API de ChatGPT al principio. Por favor, únanse a mí en darle a Todd un gran aplauso por una charla verdaderamente interesante. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
El Flujo de Trabajo del Desarrollador Asistido por IA: Construye Más Rápido e Inteligente Hoy
JSNation US 2024JSNation US 2024
31 min
El Flujo de Trabajo del Desarrollador Asistido por IA: Construye Más Rápido e Inteligente Hoy
Top Content
AI is transforming software engineering by using agents to help with coding. Agents can autonomously complete tasks and make decisions based on data. Collaborative AI and automation are opening new possibilities in code generation. Bolt is a powerful tool for troubleshooting, bug fixing, and authentication. Code generation tools like Copilot and Cursor provide support for selecting models and codebase awareness. Cline is a useful extension for website inspection and testing. Guidelines for coding with agents include defining requirements, choosing the right model, and frequent testing. Clear and concise instructions are crucial in AI-generated code. Experienced engineers are still necessary in understanding architecture and problem-solving. Energy consumption insights and sustainability are discussed in the Talk.
IA y Desarrollo Web: ¿Exageración o Realidad?
JSNation 2023JSNation 2023
24 min
IA y Desarrollo Web: ¿Exageración o Realidad?
Top Content
This talk explores the use of AI in web development, including tools like GitHub Copilot and Fig for CLI commands. AI can generate boilerplate code, provide context-aware solutions, and generate dummy data. It can also assist with CSS selectors and regexes, and be integrated into applications. AI is used to enhance the podcast experience by transcribing episodes and providing JSON data. The talk also discusses formatting AI output, crafting requests, and analyzing embeddings for similarity.
El Ascenso del Ingeniero de IA
React Summit US 2023React Summit US 2023
30 min
El Ascenso del Ingeniero de IA
Top Content
The rise of AI engineers is driven by the demand for AI and the emergence of ML research and engineering organizations. Start-ups are leveraging AI through APIs, resulting in a time-to-market advantage. The future of AI engineering holds promising results, with a focus on AI UX and the role of AI agents. Equity in AI and the central problems of AI engineering require collective efforts to address. The day-to-day life of an AI engineer involves working on products or infrastructure and dealing with specialties and tools specific to the field.
Aplicaciones Web del Futuro con Web AI
JSNation 2024JSNation 2024
32 min
Aplicaciones Web del Futuro con Web AI
Web AI in JavaScript allows for running machine learning models client-side in a web browser, offering advantages such as privacy, offline capabilities, low latency, and cost savings. Various AI models can be used for tasks like background blur, text toxicity detection, 3D data extraction, face mesh recognition, hand tracking, pose detection, and body segmentation. JavaScript libraries like MediaPipe LLM inference API and Visual Blocks facilitate the use of AI models. Web AI is in its early stages but has the potential to revolutionize web experiences and improve accessibility.
Cobertura de código con IA
TestJS Summit 2023TestJS Summit 2023
8 min
Cobertura de código con IA
Premium
Codium is a generative AI assistant for software development that offers code explanation, test generation, and collaboration features. It can generate tests for a GraphQL API in VS Code, improve code coverage, and even document tests. Codium allows analyzing specific code lines, generating tests based on existing ones, and answering code-related questions. It can also provide suggestions for code improvement, help with code refactoring, and assist with writing commit messages.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Top Content
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Building Full Stack Apps With Cursor
JSNation 2025JSNation 2025
46 min
Building Full Stack Apps With Cursor
Featured Workshop
Mike Mikula
Mike Mikula
En esta masterclass cubriré un proceso repetible sobre cómo iniciar aplicaciones full stack en Cursor. Espere comprender técnicas como el uso de GPT para crear requisitos de producto, esquemas de base de datos, hojas de ruta y usarlos en notas para generar listas de verificación que guíen el desarrollo de aplicaciones. Profundizaremos más en cómo solucionar alucinaciones/errores que ocurren, indicaciones útiles para hacer que su aplicación se vea y se sienta moderna, enfoques para conectar cada capa y más. Al final, ¡espere poder ejecutar su propia aplicación full stack generada por IA en su máquina!
Por favor, encuentre las preguntas frecuentes aquí
How to 9,2x Your Development Speed with Cline
JSNation 2025JSNation 2025
64 min
How to 9,2x Your Development Speed with Cline
Featured Workshop
Nik Pash
Nik Pash
La forma en que escribimos código está cambiando fundamentalmente. En lugar de quedar atrapado en bucles anidados y detalles de implementación, imagine enfocarse puramente en la arquitectura y la resolución creativa de problemas mientras su programador de pares de IA maneja la ejecución. En esta masterclass práctica, te mostraré cómo aprovechar Cline (un agente de codificación autónomo que recientemente alcanzó 1M de descargas en VS Code) para acelerar drásticamente tu flujo de trabajo de desarrollo a través de una práctica que llamamos "vibe coding" - donde los humanos se enfocan en el pensamiento de alto nivel y la IA maneja la implementación.Descubrirás:Los principios fundamentales del "vibe coding" y cómo se diferencia del desarrollo tradicionalCómo diseñar soluciones a un alto nivel y hacer que la IA las implemente con precisiónDemostración en vivo: Construcción de un sistema de almacenamiento en caché de grado de producción en Go que nos ahorró $500/semanaTécnicas para usar IA para entender bases de código complejas en minutos en lugar de horasMejores prácticas para solicitar a los agentes de IA que obtengan exactamente el código que deseasErrores comunes a evitar al trabajar con asistentes de codificación de IAEstrategias para usar IA para acelerar el aprendizaje y reducir la dependencia de ingenieros seniorCómo combinar efectivamente la creatividad humana con las capacidades de implementación de IAYa sea que seas un desarrollador junior que busca acelerar tu aprendizaje o un ingeniero senior que desea optimizar tu flujo de trabajo, saldrás de esta masterclass con experiencia práctica en desarrollo asistido por IA que puedes aplicar inmediatamente a tus proyectos. A través de demostraciones de codificación en vivo y ejercicios prácticos, aprenderás cómo aprovechar Cline para escribir mejor código más rápido mientras te enfocas en lo que importa: resolver problemas reales.
Webinar gratuito: Construyendo aplicaciones Full Stack con Cursor
Productivity Conf for Devs and Tech LeadersProductivity Conf for Devs and Tech Leaders
71 min
Webinar gratuito: Construyendo aplicaciones Full Stack con Cursor
Top Content
WorkshopFree
Mike Mikula
Mike Mikula
Para asistir al webinar, por favor regístrate aquí.En este webinar cubriré un proceso repetible sobre cómo iniciar aplicaciones Full Stack en Cursor. Espera entender técnicas como usar GPT para crear requisitos de producto, esquemas de base de datos, hojas de ruta y usar esos en notas para generar listas de verificación que guíen el desarrollo de la aplicación. Profundizaremos más en cómo corregir alucinaciones/errores que ocurren, indicaciones útiles para hacer que tu aplicación se vea y se sienta moderna, enfoques para conectar cada capa y más. Al final, ¡espera poder ejecutar tu propia aplicación Full Stack generada por IA en tu máquina!
Trabajando con OpenAI y la Ingeniería de Prompts para Desarrolladores de React
React Advanced 2023React Advanced 2023
98 min
Trabajando con OpenAI y la Ingeniería de Prompts para Desarrolladores de React
Top Content
Workshop
Richard Moss
Richard Moss
En esta masterclass daremos un recorrido por la IA aplicada desde la perspectiva de los desarrolladores de front end, enfocándonos en las mejores prácticas emergentes cuando se trata de trabajar con LLMs para construir grandes productos. Esta masterclass se basa en los aprendizajes obtenidos al trabajar con la API de OpenAI desde su debut en noviembre pasado para construir un MVP funcional que se convirtió en PowerModeAI (una herramienta de creación de ideas y presentaciones orientada al cliente).
En la masterclass habrá una mezcla de presentación y ejercicios prácticos para cubrir temas que incluyen:
- Fundamentos de GPT- Trampas de los LLMs- Mejores prácticas y técnicas de ingeniería de prompts- Uso efectivo del playground- Instalación y configuración del SDK de OpenAI- Enfoques para trabajar con la API y la gestión de prompts- Implementación de la API para construir una aplicación orientada al cliente potenciada por IA- Ajuste fino y embeddings- Mejores prácticas emergentes en LLMOps