This graph shows how many times the word ______ has been mentioned throughout the history of the program.
El primer proyectito que vamos a hacer, a ver qué os parece.
Vamos a hacer diferentes proyectos, o sea, vamos a tener diferentes proyectos.
Generar preguntas para entrevistas de trabajo para un senior, un senior software, un senior engineer.
Podríamos hacer una línea de comandos que nos dé cinco preguntas que le haríamos en una entrevista de trabajo a un senior software engineer.
¿Vale? Es fácil, ¿no? Y al final es algo que es de generar y es bastante sencillo.
Además lo podemos empezar a hacer con una línea de comandos y luego igual lo podemos hacer, es que cualquier idea que tengáis la vais a poder hacer.
Pero bueno, vamos a empezar con esta que me parece más o menos sencilla.
Una vez que os habéis registrado, a ver si yo tengo esto por aquí, os aparecerá este dashboard, ¿vale?
Esta es mi API Key. Entonces alguien dirá, oh, ¿se ha enseñado tu API Key? Bueno, no pasa nada.
Las API Keys, podéis ir aquí a API Key y aquí podéis crear tantas API Keys como queráis, aunque sean trial, ¿ves?
Podéis poner aquí trial, podéis poner aquí lo que sea. Entonces yo voy a utilizar esta, la vais a ver, no pasa nada.
Luego la quitaré, la eliminaré, me crearé otra para que nadie empiece a estar usándola constantemente, ¿vale?
Pero podéis utilizar la vuestra porque es totalmente gratuita de nuevo, ¿vale? O sea, utilizar la vuestra porque es totalmente gratis.
O sea, que no hay ningún problema. Una vez te logueas, no tienes que añadir tarjeta de crédito para que te den la API Key.
Otra cosa importante, no hay, o sea, no hay límite como hemos visto más allá de las 100 llamadas al minuto.
O sea, que 100 llamadas al minuto es un montón. Pues mira, vamos a, vamos a, mira, tenéis aquí un montón de ejemplos.
¿Ves que hay ejemplos? Por ejemplo, write blog post. Le vamos a dar, y aquí ya veis un poco el playground de cómo funciona esto exactamente, ¿no?
Lo que podéis ver es que aquí tenemos unos presets de ejemplo. Por ejemplo, para creación de contenido, ¿cómo lo haríamos?
Pues aquí tendríamos el input que le pasaríamos al programa. Le diríamos al programa, este programa va a generar un párrafo introductorio a un blog post dado un título, audiencia, incluso el tono de la voz.
Y esto, esto es súper interesante porque el límite es vuestra imaginación. Vais a poder hacer aquí lo que os dé la gana.
Entonces, lo que vais a hacer es añadir unos ejemplos, por ejemplo, blog title, best activities en Toronto, audiencia, millennials, el tono.
Esto para la gente que tiene, que son sentimentales, ¿no? Y tenéis first paragraph, ¿no? Y ya le podéis el first paragraph.
Y el último, lo que vamos a hacer es dejarlo vacío, ¿no? Por ejemplo, how to get started, mira, vamos a hacer how to, how to get started in web development.
Por ejemplo, audiencia, young people o students, mira, students que sean entusiastas.
Y vamos a dejar el primer párrafo, ¿no? Aquí tenemos algunos parámetros que luego os comentaré un poco por encima porque yo tampoco que sea un mega crack.
Pero bueno, os comento un poco. El modelo es los datos, digamos, los datos entrenados que va a utilizar para generar la respuesta.
Cuanto más grande es el modelo, mejores respuestas va a dar, pero va a ser más lento, ¿ok? O sea, que esto es importante.
En este caso ves que tiene Xlarge, Medium, seguramente el Medium va a ir más rápido, pero va a dar una peor respuesta porque tiene menos datos.
El Xlarge pues va a ser más rápido, más lento, pero va a dar una mejor respuesta.
Lo vamos a dejar en Xlarge. Luego tenemos aquí el número de tokens.
El número de tokens, más o menos, para que os hagáis una idea, ¿vale? Para que os hagáis una idea.
El número de tokens sería el número de palabras casi que tiene que generar.
La temperatura, ¿vale? La temperatura es como de aleatoria queremos que sea la respuesta.
Es un poco raro que le llamen temperatura.
Luego, Stop Sequences, esto es lo que es, que es lo que utilizamos para separar los inputs.
Por ejemplo, ¿veis aquí que tenemos dos rayitas? Por lo que estamos diciendo es, esto es un input, o sea, esto es un input, esto es otro input.
Estamos diciéndole, estas dos rayitas es como para separarlo.
Luego, Top K, no tengo ni idea que sea el Top K, la verdad, no tengo ni idea, para que os hagáis una idea, no sé ni lo que es.
Pero esto sí que está muy interesante. El Frequency Penalty y el Presence Penalty.
Esto sirve en inteligencia artificial, en cualquier cosa, como para penalizar aquellas respuestas que salen mucho.
¿Por qué? Porque si no siempre te diría lo mismo. Siempre te estaría contestando lo mismo, la inteligencia artificial.
Entonces, lo que le estamos diciendo es, oye, penaliza o no penalices las respuestas que tengan una frecuencia, ¿no?
Cada vez, si cada vez me dices siempre lo mismo, no. Pues lo que vamos a intentar es que me digas, vayas diciendo cosas diferentes.
O sea, que las cosas que sean frecuentes, penalizalas o no penalizalas.
O sea, también, ¿no? Como que seas, ¿cuánto de original tendría que ser nuestra inteligencia artificial?
Bueno, con esto, esto sería el input que le pasamos a nuestra inteligencia artificial.
Le vamos a dar a Generate con estos parámetros que tenemos aquí.
Le damos a Generate y, pasando un momento, lo que vais a ver aquí es que el First Paragraph me va a escribir el primer párrafo de mi artículo.
Vale, mira.
How to get started in web development.
Web development is a great career and it's a great way to solve problems in your free time.
Te puedes llevar apps, websites a la vida, generar nuevas ideas o construir algo, aunque sea por divertido.
En este blog post vamos a estar hablando de cómo puedes explorar el desarrollo web y cómo puedes empezar.
O sea, que ya veis, ¿no?
Pam.
Ya veis que ya tenemos ahí nuestro primer párrafo.
O sea, ya veis cómo podríamos empezar a generar contenido con esto.
Pero bueno, alguien me dirá, oye, pero aquí hemos venido a programar.
Tienes razón.
Tienes razón.
Hemos venido a programar.
Y para programar, fíjate ya lo fácil que sería esto.
Nos vamos aquí a Export Code.
¡Pum!
Y tenemos aquí que nos lo exporta en Python, en Node, en Go, en Curl, en Cli.
O sea, ya nos hace un Cli directamente.
Ah, no, el Cli este es tirando del Coher, que ya tiene su propia línea de comandos.
Tienes hasta un Curl.
O sea, tú harías esto.
Tú te copias esto.
Lo ejecutas en tu terminal y funciona.
Punto.
O sea, así de fácil.
Así de fácil.
Y vas a ver cómo de fácil es también que nosotros nos lo llevemos esto a Node.
Sí, la clave, yo creo que la clave es la documentación y tu creatividad.
Porque es que según lo creativo que tú seas aquí, vas a conseguir mejores soluciones.
Así que yo diría que esas son las dos cosas clave.
Tu creatividad va a ser clave.
Bueno, vamos a exportar el código.
Lo vamos a exportar en Node.
Me voy a copiar todo el código.
Y vamos a tirar de esto para empezar.
Para que veáis cómo de fácil sería crear una línea de comandos con esto que nos empiece a ayudar.
Vamos a irnos a dev.
Vamos a hacer mkdir.
Vamos a poner midu hackathon cohere.
¿Vale?
Midu hackathon cohere.
npm init menos i.
Esto nos ha creado como un package JSON de cero.
Ahora vamos a abrir esto en Visual Studio Code.
Voy a crear ya un fichero index.js.
Voy a pegar esto que tengo por aquí.
¡Ay!
Me lo ha copiado a medias, ¿no?
Me ha copiado lo que le ha dado la gana.
Me tenía que haber copiado todo.
A ver ahora.
Vale.
Pues ya tenemos esto por aquí.
Fíjate.
Ya nos ha dejado esta cosita por aquí.
Esta cosita por acá.
Aquí tenemos los parámetros que os he comentado antes.
Cada uno de los parámetros.
La base de datos.
El modelo que quiero utilizar.
El prompt.
Como el input que le estamos pasando.
El prompt sería como en el chat GPT lo que le escribimos, ¿no?
El número de tokens máximo que queremos.
Cuanto más le pongamos aquí, más nos va a generar.
Cuanto menos le pongamos, la respuesta más corta será.
¿Vale?
Y todo lo demás que os he comentado.
Más o menos.
Pero ya veis que con esto, que...
Uy, perdón.
Con esto, pues ya lo tenemos.
O sea, con esto ya podríamos empezar a generar cosas.
De hecho, fijaos en una cosa.
Fijaos en una cosa.
Vamos a ejecutarlo.
Importante.
Primero, la API Key.
Tenéis que pasarle vuestra API Key.
Para eso, os vais aquí a cohere.
Le copiáis aquí la API Key.
Os vais para aquí.
API Key.
Pam, pam, pam.
La ponéis aquí.
Y así, inicializáis la API Key.
¿Vale?
Y ya está.
Con esto es que, si ejecutamos esto, node index.js.
Vale.
A ver que...
Ah, nos falta instalar la dependencia.
¿Vale?
Que tienen ya una dependencia que es cohere AI.
Pues, mp install.
Cogier AI.
Lo ponemos que nos la instale la versión exacta.
Nada.
Muy pequeñita esta dependencia.
Node index.js.
Vale.
Ahora, aunque parece que no está haciendo nada, pues, está pensando, ¿no?
Vale.
Mira.
Fijaos que ahora me ha dado una respuesta diferente a la que me había dado antes.
O sea, que lo mejor que normalmente tiene la inteligencia artificial es justamente que no siempre nos da la misma respuesta, ¿no?
Nos va a ir cambiando un poco la respuesta.
Pero, mira, ¿ves?
No es un secreto que empezar en el desarrollo web es una tarea que puede dar miedo.
Hay miles de tecnologías, no sé qué, no sé cuánto.
Por suerte el desarrollo web, pero ¿veis que cada vez me lo está cambiando?
Fue mucho más rápido que en la web.
Puede ser por dos cosas.
Puede ser por diferentes cosas.
Una, porque le estoy preguntando exactamente lo mismo.
Entonces, puede ser que me esté diciendo, bueno, esto ya lo tengo hecho.
Luego, por otra parte, puede ser que dependa de cada vez que lo ejecuto, ¿no?
Como es de trial, seguramente no tengo prioridad a las respuestas.
O sea, que va a tardar bastante más en responder, tenerlo en cuenta.
Entonces, seguramente, cuando la API está muy cargada, seguramente yo paso a un segundo plano hasta que haya un hueco.
Seguramente van por ahí los tiros, ¿eh?
Me imagino que van por ahí los tiros.
Vamos a hacer una cosa, porque este, mira, podríamos poner aquí, vamos a poner aquí click,
y este vamos a hacer que sea generate block post.
Generate block post, ¿qué le ponemos?
Stone, no.
Paragraph, ¿vale?
Este sería el primer ejemplo.
Lo vamos a poner en click.
De hecho, voy a hacer una cosa también.
Voy a pasar esto a un módulo, porque un módulo, esto nos obligará a utilizar aquí un import, obviamente.
Tenemos que hacer import, from, tenemos que hacer esto.
Pero, además, podemos mejorar el código, porque entonces ya nos podemos quitar esto aquí, esto por aquí,
y lo podemos dejar así.
Porque en módulos, en Node, las últimas versiones, tienes el top level away, lo tienes disponible.
Así que fíjate lo fácil que es, y ya está.
Hay puesto eso por ahí.
Vale, pues nada, ya tendríamos aquí el primero.
Ahora, vamos a generar nuestro...
Os he dicho que quería hacer un programa...
Fijaos, no tengo ni idea.
O sea, solo con lo que he visto, vamos a intentar algo.
Vamos a intentar generar una línea de comandos que tú, cada vez que lo ejecutes, te da cinco preguntas
para entrevistas de trabajo de Senior Software Engineer.
Vamos a ver si somos capaces.
Con lo que hemos visto.
Solo con lo que hemos visto.
Y además voy a empezar a hacerlo un poco más bonito para que veas.
Vamos a poner aquí Generate...
¿Cómo le llamamos?
Generate o...
Bueno, sí, Generate Interview.
Imagínate que tú estás en una empresa y dices, necesito que me genere cinco preguntas
que tengo que hacer en esta entrevista.
Bueno, primero hemos dicho que tenemos que importar Cogier.
Vale.
Luego tenemos que hacer el Cogier Init.
Init.
Ah, mira, aquí tenéis lo que tenéis.
El Classify para clasificar texto.
Detección del lenguaje.
Mira, este lo podríamos hacer también.
De este podríamos hacer la web.
Esto está chulo.
Por ejemplo, alguna vez os habéis preguntado cuando vais a Google Translate.
Google Translate.
Y ¿veis que tenéis aquí el detectar idioma?
¿Cómo detecta el idioma?
¿Veis que pone detectado?
Pues esto lo podríamos hacer también con Cogier.
Eso lo podríamos hacer.
Luego lo hacemos.
Luego lo hacemos.
Que me parece muy interesante y parece otro producto.
Una feature de un producto.
A lo mejor no puede ser un producto entero, pero...
Bueno, pues ya hemos visto que necesitamos utilizar el de Generate, ¿no?
Vamos a utilizar el de Generate.
Ah, bueno, primero tenemos el Cogier Init, ¿no?
Y le tenemos que pasar la API Key.
Esta es la API Key que tenemos.
Voy a copiar todo esto.
Tendríamos aquí que hacer un await del Cogier Generate.
Y que tenemos todo esto, ¿no?
El modelo, no sé qué.
Vale.
Vamos a hacer que vamos a recuperar la respuesta, await, del Cogier Generate.
Y le tenemos que pasar primero el modelo.
¿Veis que si le dais a Control Espacio, ya tenéis aquí todos los...
O sea, tenéis como lo que nos va a preguntar.
Ya veis que tampoco es que tengan muchísimas cosas.
Con que le pongáis todas estas cosas, algo hará.
Bueno, modelo, vamos a utilizar el X-Large, ¿vale?
El modelo ya hemos dicho que es como la base de datos que va a utilizar.
Tienes medio o X-Large.
El medio va a ser más rápido, el X-Large va a ser más lento, pero va a tener mejores respuestas.
¿Qué más?
Vale.
Tendríamos el Prompt.
El Prompt es súper importante porque básicamente es lo que queremos que haga nuestra inteligencia artificial.
Así que le podemos decir, Generate a list of five interview questions for a Senior Software Engineer o Senior Frontend Engineer, ¿vale?
Que sea más de Frontend.
Esto sería lo que le queríamos preguntar o le queremos pedir a la inteligencia artificial, ¿vale?
Ya tenemos el Prompt.
Luego, el número máximo de tokens.
Tú aquí si le pones esto, ¿qué es lo que pasa?
Que vas a tener preguntas muy grandes, muy exageradas a lo mejor.
Entonces, vamos a hacer, como son cinco preguntas, un token sería más o menos una palabra.
Yo creo que con 100 sería suficiente, pero bueno, lo vamos a probar a ver si se queda corto y ya está.
Luego tendríamos la temperatura.
¿Ves que pone 0.8?
¿Qué es la temperatura?
La temperatura es como el grado de aleatoriedad de las respuestas.
¿Vale?
Entonces, cuanto más grados tenga, pues más aleatorio.
Vamos a ponerle un 1.2 para que sea bastante aleatorio.
Pero esto es cuestión de ir probando e ir viendo cuál queda mejor.
La K, antes me lo ha dicho alguien, que es como la masa de probabilidad de no sé qué, no sé cuánto.
Pero bueno, la K la vamos a dejar en 0 y la P en 1, que creo que era lo mismo que tenía aquí.
Son las dos que, la verdad, no entiendo muy bien qué es lo que hacen.
Tenemos luego la Frequency Penalty.
Esto lo que quiere decir es cómo vamos a penalizar aquel contenido que se repite constantemente, los tokens generados.
Esto es para evitar que de las 5 preguntas, no me salgan las 5 preguntas igual.
Por ahora, igualmente, vamos a ponerle un 0.
Es entre 0 y 1.
Vamos a ponerle un 0 y luego vemos si realmente se parece mucho.
Si se parece mucho, pues lo subimos un poquito.
A ver qué pasa.
Así que Frequency Penalty le dejamos así y lo mismo con el Presence Penalty.
La Frequency sería cuántas veces se repite y Presence es simplemente que aparezca.
O sea, Frecuencia a lo mejor se repite 3 o 4 veces, pero Presencia es que al menos esté una vez.
Y ya está.
Teníamos el Stop Sequences, que en nuestro caso aquí no tenemos nada.
O sea, le dejamos un array vacío.
No tenemos ninguna secuencia aquí que separe el contenido.
Aquí sí que lo teníamos porque teníamos esto.
Entonces, tenemos que indicarle que esto era lo que separaba los inputs.
¿Veis?
Pero aquí no tenemos nada que nos separe los inputs.
Y ya está, ¿no?
No sé exactamente qué quiere decir esto, pero vamos a poner non también.
Vamos a poner node clean generate interview.js.
Y esto nos va a generar la interview, ¿vale?
Mira, ya está.
Ah, mira.
Prom generate...
Generations, ¿vale?
O sea, esto nos devuelve un objeto con Generations, no sé qué.
Vale.
Venga, pues vamos a tener aquí.
Vamos a sacar de aquí el Generations de response.body.
Y vamos a hacer un console.log de Generations.
Que Generations me parece que es...
¿Vale?
Generations es un array.
Es un array de objetos.
Vale.
Vamos a ver cómo queda esto.
El array de objetos.
Vamos a ver qué tal.
Hostia.
Sit with opportunity.
Me parece que se le ha ido ahí un poco la mano.
Me parece que se le ha ido un poco la mano porque no ha hecho lo que quería.
Vamos a ver aquí.
Porque parece que no me ha generado la lista.
No me ha generado la lista.
Pero bueno, no pasa nada.
Le podemos ir dando...
Vamos a ir afinando a ver qué nos comenta.
¿Hemos hecho el generate?
Sí.
Vale.
Vamos a ver qué comenta aquí.
Vale.
No me está generando...
¿Es cosa mía o no me está generando las preguntas?
Es que esto lo he probado yo antes en el dashboard.
Aquí en el...
Vamos a probar el playground.
Vamos a probarlo.
Generate a list...
Xlarge.
Vamos a ponerle tokens.
Vamos a ponerle 500.
La temperatura 0.8.
A lo mejor le falta un punto al prompt.
Ya sería la locura.
Que solo por el punto...
Ya sería raro.
Pero yo creo que esto lo vamos a lograr.
No tiene sentido que no...
Este tiene mejor pinta.
También es verdad que tiene como demasiados tokens.
¿Ves que la respuesta es como demasiado tocha?
Esto normalmente es porque le hemos dado demasiados tokens.
Igual si...
Porque veo...
Aquí tiene una versión nueva.
El command Xlarge.
Ah, command Xlarge.
Igual tenemos que utilizar otro...
Ojo, eh.
Igual tenemos que utilizar otro...
Otro modelo.
Porque me parece...
Porque veis que aquí hay un modelo que pone command Xlarge.
El command me da la sensación que es para comandos.
¿Sabes?
O sea, está el modelo.
¿Ves?
Es que es súper importante esto.
Dependiendo del modelo...
Estamos diciendo que utilice como un cerebro diferente.
Pero cada cerebro a lo mejor está preparado para tratar de una forma.
Yo creo que es el modelo.
O sea, el Xlarge lo que va a hacer es no entender comandos.
Sino que lo que te va a intentar es como rellenar el prompt.
Claro.
Tenemos que utilizar el de command Xlarge 2022.
Que esa sea la versión.
11.08.
Que me da la sensación que esto es como que está preparado para recibir comandos.
Y no tanto de seguir generando a partir del texto.
Vamos a ver.
Pero yo creo que este es el correcto, eh.
Pero bueno, ya sabemos la diferencia.
¿Habéis visto?
El tema del modelo.
Ta, ta, ta.
No hay clic.
Generate Interview.
De hecho, ahora está tardando más, eh, que antes.
Antes como que la has generado demasiado rápido, me parece.
Luego veremos también lo de la temperatura y tal.
Mira, vamos a hacer una cosa.
Como tarda mucho, voy a hacer una cosa por aquí.
Voy a hacer una cosa por aquí.
GitHub.
No sé si conocéis esto, pero está muy chulo cuando hagáis líneas de comandos que puedan tardar mucho, como esta.
Ah, mira.
¿Y esto qué?
Esto está de lujo.
Lo ha hecho perfecto.
What programming languages are you comfortable working with?
What language do you think is most important for a software engineer to know?
How do you keep a breeze of new developments and trends?
What language and tools will you use to develop a project from scratch?
What would you say was your best implementation experience hasta la fecha?
Pues la verdad, tienen sentido las preguntas.
A ver, vamos a darle otra vez, pero de frontend.
A ver si ahora lo hace.
Ahora sí, eh.
Ahora sí.
O sea, ojo, eh.
Ojo, no está mal, eh.
No está mal, amigos.
No está mal.
No está mal.
Hombre, le dices, solo me quedo con la 3.
Bueno, a ver.
A ver, son preguntas válidas.
Otra cosa es que sean las mejores preguntas.
Pero, claro, lo primero, yo creo que le vamos a tener que dar más temperatura, eh.
Porque necesitamos que sea un poco más random.
Luego, a partir de esto, vamos a tener que ir haciendo, mmm...
Lo estoy haciendo contigo, son las mismas preguntas.
Bueno, ahora lo habéis hecho...
Mira, vamos a darle otra vez.
Vamos a darle con 1.2.
Bueno, vamos a darle.
Dice, no le pongas 1.2.
Vamos a darle, ¿qué más da?
Mira, aquí ha cambiado las preguntas, eh.
Ahora ha cambiado las preguntas.
What programming language do you work with?
What language do you think is more important for a front-end engineer?
How do you keep with new front-end engineers and trends?
Bueno, ahora le he puesto que no me pregunte esto.
Are you familiar with any particular framework?
Pero, claro.
O sea, lo que quiero decir es que vosotros lo que podéis hacer es visualmente...
De hecho, luego lo podemos hacer, ¿no?
Podemos hacer que el usuario en la web pueda ir rechazando las páginas, ¿no?
Que pueda ir las preguntas, que pueda decir, esta pregunta no es buena.
Y tú le puedas ir diciendo, ostras, pues voy a ir mejorando, ¿sabes?
O sea, esa es la clave.
Bueno, una cosa que podéis hacer, esto es para más de inteligencia, es de línea de comandos.
Yo es que he utilizado muchas líneas de comandos, he creado muchas líneas de comandos.
Hay una dependencia que está muy chula que se llama hora.
¡Hora!
Y esta dependencia lo que te pone es un loader muy bonito.
Y lo vamos a hacer para que veáis, ¿no?
Cómo podéis hacer que vuestra línea de comandos quede bastante más bonita.
Entonces, importáis hora.
Así, ¿no?
Y aquí vamos a iniciar el spinner.
Y vamos a poner generating five frontend interview questions, ¿vale?
Le ponemos start, aquí.
Y aquí lo que podemos hacer es, una vez que termina, hacemos spinner punto stop...
No, ¿cómo era esto?
Stop, no.
Es succeed.
Y le decís done, ¿vale?
Algo así, tan sencillo como esto, ya te hace una cosa tan maravillosa como esta.
¡Ojo!
Está bonito, ¿eh?
Al menos, así, pues tienes esto de generate, no sé qué.
Incluso puedes ir cambiando esto.
Lo puedes ir cambiando cada segundo.
Puedes ir haciendo lo que te dé la gana.
Esto lo puedes hacer aquí.
Puedes hacer un set interval.
Set interval.
Haces esto, mira.
Interval, set interval.
Y le decimos spinner text.
Vamos a poner aquí...
¿Qué podemos poner?
Pues, claro.
Start performance now.
Y aquí, time...
Esto, ¿vale?
Time.
Y podemos poner aquí cuánto tiempo ha pasado.
Bueno, es que estas cosas...
Bueno, mira.
None, ¿ves?
Al final.
Y le podemos dar otra vez.
Mira, y así veremos si vuelve a hacer exactamente las mismas preguntas.
Y si hacen las mismas preguntas, de nuevo, le podemos empezar a subir también tanto frequency penalty como la temperatura.
La temperatura creo que va hasta el 2, me parece.
Pues mira, ahí tenemos...
¿Ves?
Pues me está haciendo las mismas.
Bueno, está haciendo, por ejemplo, son diferentes.
Porque esta sí que se ha repetido, pero la segunda es diferente, por ejemplo.
Ah, por cierto.
Hay que hacer un clear interval de interval ID.
Que esto no lo he hecho.
Y si no, se me queda ahí.
Se me queda por la mitad.
Pero con esto, ahora, ya tenéis ahí un contador de segundos y tal.
No está mal.
No está mal.
Para una línea de Commanders, ¿no?
Claro, tienes sutiles cambios.
No está mal.
No está mal.
Pero mirad, ahí podéis ver cuánto tiempo ha pasado.
Y de hecho, lo podríais poner al final.
Podríais poner done, on.
Y aquí podéis poner time, seconds.
Y ya está.
Y así al final, cuando termine, además sabréis...
Bueno, ya sé que ha tardado 21 segundos.
Pero mira, ahora, por ejemplo, las preguntas son diferentes.
O sea, que está bien.
Que realmente está haciendo lo que esperamos.
Realmente está cambiando la información.
O sea, que ya tenemos, por ejemplo...
Por lo menos ya tenemos como bien...
Ya vemos que sí que está generando cosas diferentes.
Ya podríamos crear esto en una página.
Crearle un dominio.
Y decir, generar preguntas que no sé qué, no sé cuánto.
O sea, no está mal.
¿El producto puede ser un click?
Claro que puede ser.
Claro que puede ser.
No hay ningún problema.
El time.
Ah, el time está...
Claro, este no va a funcionar.
Es que como no tengo el time...
Mira, ya está.
Lo ponemos así y ya está.
Pero bueno, con una tontería, pues ya tenemos una línea de comandos en condiciones.
Las absolutely buenas tardes.
Así que vamos a hacer.
Bueno.
Bien.
Bien.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Buenas.
Y por chacun.