diff --git a/.gitattributes b/.gitattributes index 8e01af9635110294d0e4cda3c4b6e84e1b0ec4d2..085cb29a2b5bbc7c58d1a144a470633c8330e84d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -290,3 +290,6 @@ subir/Curso[[:space:]]Práctico[[:space:]]de[[:space:]]C/09-Finalizando[[:space: subir/Curso[[:space:]]Práctico[[:space:]]de[[:space:]]C/09-Finalizando[[:space:]]nuestro[[:space:]]proyecto/08-Colisiones[[:space:]]y[[:space:]]Portadas[[:space:]]en[[:space:]]Videojuegos[[:space:]]Implementación[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text subir/Curso[[:space:]]Práctico[[:space:]]de[[:space:]]C/09-Finalizando[[:space:]]nuestro[[:space:]]proyecto/09-Creación[[:space:]]de[[:space:]]Juegos[[:space:]]de[[:space:]]Aventuras[[:space:]]en[[:space:]]C[[:space:]]Laberintos[[:space:]]y[[:space:]]Cofres[[:space:]]del[[:space:]]Tesoro.mp4 filter=lfs diff=lfs merge=lfs -text subir/Curso[[:space:]]Práctico[[:space:]]de[[:space:]]C/09-Finalizando[[:space:]]nuestro[[:space:]]proyecto/10-Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]en[[:space:]]Videojuegos[[:space:]]Básicos.mp4 filter=lfs diff=lfs merge=lfs -text +prompt-engineering/10-Ventana[[:space:]]de[[:space:]]contexto[[:space:]]y[[:space:]]modelo[[:space:]]de[[:space:]]atención[[:space:]]en[[:space:]]LLMs.mp4 filter=lfs diff=lfs merge=lfs -text +prompt-engineering/1-Cómo[[:space:]]estructurar[[:space:]]prompts[[:space:]]efectivos[[:space:]]con[[:space:]]rol,[[:space:]]enfoque,[[:space:]]límites[[:space:]]y[[:space:]]contexto.mp4 filter=lfs diff=lfs merge=lfs -text +prompt-engineering/11-Técnicas[[:space:]]de[[:space:]]grounding[[:space:]]para[[:space:]]consultas[[:space:]]legales[[:space:]]con[[:space:]]LLMs.mp4 filter=lfs diff=lfs merge=lfs -text diff --git "a/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.mp4" "b/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..4e7fd1b16dc083815c2f048ede712ad834f0286d --- /dev/null +++ "b/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21b9513d8021d1a4f81f486bc96754a8be0f6d3f14b2b70f9d841bef18b5c10f +size 62102000 diff --git "a/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.sub.vtt" "b/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.sub.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..a2d8ec37e8390dc7502447921449ee9b9bead8db --- /dev/null +++ "b/prompt-engineering/1-C\303\263mo estructurar prompts efectivos con rol, enfoque, l\303\255mites y contexto.sub.vtt" @@ -0,0 +1,77 @@ +WEBVTT + +00:00:00.379 --> 00:00:03.659 +Si la inteligencia artificial no te entiende, es porque no te estás logrando + +00:00:03.659 --> 00:00:07.639 +comunicar bien. Abre ChatGPT, mira el último mensaje que enviaste y lo + +00:00:07.639 --> 00:00:12.979 +vas a reescribir en la siguiente estructura: rol, enfoque, memoria y límites. Aquí + +00:00:12.979 --> 00:00:16.500 +te va un ejemplo: «Actúa como especialista en marketing en B2B». Ese + +00:00:16.500 --> 00:00:20.099 +es el rol. «Vas a crear una publicación en LinkedIn acerca de mi + +00:00:20.100 --> 00:00:24.099 +producto». Ese es el enfoque. «La publicación no puede tener más de + +00:00:24.100 --> 00:00:28.760 +ciento cincuenta caracteres y debe usar un lenguaje simple, concreto y coloquial». Esos + +00:00:28.760 --> 00:00:32.360 +son los límites. Y, por último, tenemos el contexto, donde le voy + +00:00:32.360 --> 00:00:35.540 +a explicar de qué trata mi producto. «Mi producto es un software as + +00:00:35.540 --> 00:00:38.840 +a service que automatiza el proceso contable de tu empresa». Un poco + +00:00:38.840 --> 00:00:42.819 +más complejo y difícil de pensar, y seguramente que lo último que le + +00:00:42.819 --> 00:00:47.360 +dijiste a ChatGPT no tenía toda esa información. Complémntala. Con esto pasarás + +00:00:47.360 --> 00:00:52.040 +de resultados genéricos a respuestas acertadas y completas. Al terminar el curso, podrás + +00:00:52.040 --> 00:00:56.819 +pasar de procesos a instrucciones claras que las entienda cualquier persona, pero + +00:00:56.819 --> 00:01:00.399 +más importante, que lo entienda un LLM. Sabrás elegir el modelo y el + +00:01:00.399 --> 00:01:04.998 +enfoque correcto dependiendo de la tarea que quieres solucionar. Podrás descomponer problemas + +00:01:05.000 --> 00:01:08.659 +complejos en cosas más pequeñas y definir cuál es el prompt o la + +00:01:08.659 --> 00:01:12.419 +técnica de prompting correcta para poder llegar al resultado que esperas. Podrás + +00:01:12.419 --> 00:01:18.279 +calibrar entre creatividad y precisión, sabiendo si estás dando demasiada información al modelo + +00:01:18.279 --> 00:01:21.859 +o si tienes la información necesaria para llegar al resultado que esperas + +00:01:21.860 --> 00:01:26.739 +sin tener ninguna alucinación. Este curso no es de código. Aprenderás los fundamentos + +00:01:26.739 --> 00:01:29.279 +de crear un buen prompt. Y la verdad es que la inteligencia + +00:01:29.279 --> 00:01:34.479 +artificial cambia cada semana, pero con estos fundamentos aprenderás a navegar todos esos + +00:01:34.479 --> 00:01:37.979 +cambios. Yo soy Juan Pablo Rojas, chief product officer de Platzi, y + +00:01:37.979 --> 00:01:40.220 +te veo en la siguiente clase. + diff --git "a/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.mp4" "b/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..9f6d7e1372ce06725ea16a21cd35c67c3b0fc321 --- /dev/null +++ "b/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4edb88139aa7130fd29d571bbd66eeb505a92460b4ddcbcb38e75146f45baba4 +size 330081450 diff --git "a/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.sub.vtt" "b/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.sub.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..008fd33bd49945258642cd7e5b8f8c88b93cc4c3 --- /dev/null +++ "b/prompt-engineering/10-Ventana de contexto y modelo de atenci\303\263n en LLMs.sub.vtt" @@ -0,0 +1,389 @@ +WEBVTT + +00:00:00.040 --> 00:00:04.160 +Estás leyendo un informe de cincuenta páginas acerca del performance de la empresa + +00:00:04.160 --> 00:00:08.600 +de los últimos dos años y ya vas por la página cuarenta, + +00:00:08.600 --> 00:00:12.800 +pero te cuesta recordar cuáles fueron las decisiones que se tomaron en enero + +00:00:12.800 --> 00:00:16.700 +de 2024. Era la información que estaba al inicio del reporte, la + +00:00:16.700 --> 00:00:21.400 +leíste, la entendiste, pero es que ya vas en la página cuarenta. Este, + +00:00:21.400 --> 00:00:23.800 +este problema que nos pasa a nosotros también le pasa a la + +00:00:23.800 --> 00:00:27.840 +inteligencia artificial cuando está teniendo que lidiar con contextos muy largos, con mucha + +00:00:27.840 --> 00:00:31.560 +información. Y ese problema está relacionado a un concepto llamado la ventana + +00:00:31.560 --> 00:00:35.460 +de contexto. La ventana de contexto en un LLM determina cuál es la + +00:00:35.460 --> 00:00:40.300 +cantidad de información que tiene capacidad de procesar y esto está acompañado + +00:00:40.300 --> 00:00:43.280 +con algo que ya hemos mencionado en clases pasadas, pero quiero explicar más + +00:00:43.280 --> 00:00:47.140 +a detalle, que es el modelo de atención. Entonces, recordemos, hablábamos de + +00:00:47.140 --> 00:00:52.010 +que la diferencia entre el teclado predictivo de WhatsApp y un LLM es + +00:00:52.010 --> 00:00:54.480 +que el teclado predictivo de WhatsApp solo va a buscar cuál es + +00:00:54.480 --> 00:00:58.080 +la palabra más probable que sigue después de que tú pongas «Hola», y + +00:00:58.080 --> 00:01:00.760 +no va a tener en cuenta ni la conversación que estás teniendo + +00:01:00.760 --> 00:01:03.620 +ni la intención del mensaje que vas a escribir. Es por eso que + +00:01:03.620 --> 00:01:06.700 +ese teclado predictivo no es capaz de escribir un mensaje completo o + +00:01:06.700 --> 00:01:11.400 +redactar un email. Pero un LLM sí tiene esa capacidad gracias al modelo + +00:01:11.400 --> 00:01:14.220 +de atención. Y el modelo de atención lo que hace es que + +00:01:14.220 --> 00:01:17.260 +le va a dar importancia a diferentes palabras que vaya a encontrar dentro + +00:01:17.260 --> 00:01:20.500 +del prompt para poder entender cuál es la intención y el significado + +00:01:20.500 --> 00:01:24.330 +de lo que quieres decir. Eso quiere decir que esta ventana de contexto + +00:01:24.330 --> 00:01:28.940 +importa muchísimo, porque el prompt, cuando iniciamos un nuevo chat, es el + +00:01:28.940 --> 00:01:33.960 +mensaje que nosotros vamos a enviar. Lo enviamos, el LLM nos responde y + +00:01:33.960 --> 00:01:37.660 +luego queremos enviar un nuevo mensaje. Uno pensaría que el nuevo mensaje + +00:01:37.660 --> 00:01:42.640 +es un prompt individual, pero no. Toda la conversación que estamos teniendo con + +00:01:42.640 --> 00:01:46.580 +el LLM es parte del prompt, y eso es la ventana de + +00:01:46.580 --> 00:01:50.500 +contexto. Es toda la información que estamos pidiéndole procesar y que solamente va + +00:01:50.500 --> 00:01:54.960 +aumentando conforme vamos incrementando la longitud del chat. Y esa no es + +00:01:54.960 --> 00:01:58.300 +la única forma de aumentar la ventana de contexto. Cada vez que nosotros + +00:01:58.300 --> 00:02:01.100 +subimos un archivo, como lo hicimos en las primeras clases con el + +00:02:01.100 --> 00:02:05.780 +reporte de McKinsey, eso también entra dentro de la ventana de contexto. Esto + +00:02:05.780 --> 00:02:09.459 +quiere decir que es muy fácil que la ventana de contexto crezca + +00:02:09.520 --> 00:02:13.040 +por continuar un chat hasta que ya no dé más y no te + +00:02:13.040 --> 00:02:17.140 +responda más, o por subir muchos documentos, con muchas páginas, con mucha + +00:02:17.140 --> 00:02:22.520 +información que debe ser procesada para resolver o responder el siguiente mensaje que + +00:02:22.520 --> 00:02:26.180 +le acabas de enviar al LLM. Esta ventana de contexto se mide + +00:02:26.180 --> 00:02:31.340 +por algo llamado tokens. Y los tokens son una interpretación del LLM de + +00:02:31.340 --> 00:02:35.700 +las palabras o de la-- del prompt completo que nosotros estamos enviando. + +00:02:35.700 --> 00:02:39.240 +Y digo interpretación porque no es como que el LLM va a cortar + +00:02:39.240 --> 00:02:41.980 +exactamente en todos los espacios y va a decir: «Ah, pues este + +00:02:41.980 --> 00:02:46.100 +prompt tiene diez palabras, entonces son diez tokens». La verdad es que no. + +00:02:46.100 --> 00:02:50.350 +Funciona más como un cocinero que sabe exactamente con cada ingrediente cómo + +00:02:50.350 --> 00:02:53.620 +cortarlo y dónde cortarlo y de qué manera cortarlo para poder preparar una + +00:02:53.620 --> 00:02:57.720 +receta. En este caso, un LLM en su entrenamiento agarra todas las + +00:02:57.720 --> 00:03:01.640 +sutilezas de los diferentes lenguajes con los, con los que es entrenado para + +00:03:01.640 --> 00:03:04.940 +decidir dónde hacer los cortes, con tal de agarrar las sutilezas que + +00:03:04.940 --> 00:03:09.040 +importan. Por ejemplo, en español tenemos el signo de interrogación de apertura y + +00:03:09.040 --> 00:03:12.740 +el signo de interrogación de cierre, cosa que en inglés solo existe + +00:03:12.740 --> 00:03:16.880 +el signo de interrogación de cierre. En español, esto nos permite saber dónde + +00:03:16.880 --> 00:03:20.080 +inicia la pregunta y dónde termina, y esto lo va a tomar + +00:03:20.080 --> 00:03:23.880 +como un token. Con esta explicación lo que debes saber es que las + +00:03:23.880 --> 00:03:28.240 +ventanas de contexto tienen un límite de tokens. Por ejemplo, ChatGPT tiene + +00:03:28.240 --> 00:03:33.020 +una ventana de contexto de ciento veintiocho mil tokens, que aproximadamente tienden a + +00:03:33.020 --> 00:03:37.079 +ser trescientas páginas de un libro. Y esto no quiere decir que + +00:03:37.080 --> 00:03:41.340 +no puedas subir un libro de quinientas páginas a ChatGPT e interactuar con + +00:03:41.340 --> 00:03:45.140 +él, sino que esto nos enfrenta a un problema llamado en inteligencia + +00:03:45.140 --> 00:03:49.100 +artificial la aguja en un pajarro. Es decir, tiene mucha información y tiene + +00:03:49.100 --> 00:03:53.359 +que usar otros métodos para obtener esa información y encontrar justo el + +00:03:53.360 --> 00:03:56.560 +dato que nos importa de la pregunta que estamos haciendo. Esto va a + +00:03:56.560 --> 00:04:01.800 +incrementar la probabilidad de que hayan alucinaciones o que la inteligencia artificial + +00:04:01.800 --> 00:04:06.500 +olvide o pierda la atención de ciertos detalles que sí le estamos diciendo, + +00:04:06.500 --> 00:04:10.520 +pero que simplemente por la cantidad de información no está logrando capturar. + +00:04:10.520 --> 00:04:13.460 +En la siguiente clase vamos a hacer un ejercicio con Gemini. ¿Por qué + +00:04:13.460 --> 00:04:16.940 +escogimos Gemini? Porque Gemini es el que tiene la ventana de contexto + +00:04:16.940 --> 00:04:20.480 +más grande en este momento. Estamos hablando de un millón de tokens, que + +00:04:20.480 --> 00:04:25.760 +son más de ciento veinte mil páginas. Eso aliviana el problema porque + +00:04:25.760 --> 00:04:29.740 +va a poder indexar un libro de trescientas páginas sin ningún problema y + +00:04:29.740 --> 00:04:34.320 +poder agregar cualquier prompt y cualquier conversación, porque nuestra ventana de contexto + +00:04:34.320 --> 00:04:38.440 +es mucho más amplia que eso. Pero acá hay un truco. Todos los + +00:04:38.440 --> 00:04:42.500 +modelos grandes de lenguaje que tienen una ventana de contexto tan grande, + +00:04:42.500 --> 00:04:46.960 +son capaces de analizar toda esa información, pero entran en un nuevo problema, + +00:04:46.960 --> 00:04:50.220 +y es que conforme va aumentando la ventana de contexto después de + +00:04:50.220 --> 00:04:54.920 +ciento veintiocho mil tokens, la eficiencia del modelo empieza a degradarse. ¿Esto qué + +00:04:54.920 --> 00:04:58.500 +quiere decir? Que seguimos teniendo el problema en donde es capaz de + +00:04:58.500 --> 00:05:02.900 +olvidar o alucinar información acerca del documento que vamos a analizar. Además de + +00:05:02.900 --> 00:05:06.120 +alucinar u olvidar información, lo que puede empezar a pasar también es + +00:05:06.120 --> 00:05:09.740 +que se confunda entre las tareas que le estás dando. Entonces, tú puedes + +00:05:09.740 --> 00:05:13.360 +coger un mismo chat de, de ChatGPT, de Gemini o de Claude + +00:05:13.360 --> 00:05:18.120 +y puedes pedirle que actúe diferentes roles, puedes seguir combinando tareas dentro del + +00:05:18.120 --> 00:05:21.380 +mismo chat, pero hay una probabilidad de que el modelo de atención + +00:05:21.380 --> 00:05:25.560 +empiece a confundirse. Primero le dijiste que actuara como un researcher e hiciera + +00:05:25.560 --> 00:05:29.860 +una investigación sobre el calentamiento global, y luego le dijiste que hiciera + +00:05:29.860 --> 00:05:34.100 +el labor de un social media manager para hacer contenido en redes sociales. + +00:05:34.100 --> 00:05:37.039 +Es probable que en ese cambio de rol y que la ventana + +00:05:37.040 --> 00:05:41.700 +de contexto por ir incrementando, empiece a equivocarse y no haga tan bien + +00:05:41.700 --> 00:05:46.440 +el trabajo como social media manager, porque sigue pensando que debe actuar + +00:05:46.440 --> 00:05:50.720 +como researcher que está investigando sobre el cambio climático. O de plano, el + +00:05:50.720 --> 00:05:54.360 +tercer error que podemos identificar es que empieza a olvidar las instrucciones. + +00:05:54.360 --> 00:05:58.380 +Es decir, le dijimos que me diera resúmenes de quinientas palabras que fueran + +00:05:58.380 --> 00:06:02.420 +pragmáticos, concisos, que fueran accionables, y de repente se vuelve a poner + +00:06:02.420 --> 00:06:07.480 +poético, se vuelve a poner a decirme cosas larguísimas y pareciera que se + +00:06:07.480 --> 00:06:11.452 +le están olvidando las cosas.[Clics]. Hay formas de mitigar esto. Lo + +00:06:11.452 --> 00:06:14.952 +primero es que el modelo siempre va a dar más atención a lo + +00:06:14.952 --> 00:06:18.572 +último que está en el prompt. Entonces, si se está alargando mucho + +00:06:18.572 --> 00:06:22.872 +tu chat dentro de ChatGPT, Gemini o Claude, es importante que le recuerdes + +00:06:22.872 --> 00:06:26.532 +los factores importantes que quieres que tenga en cuenta para resolver la + +00:06:26.532 --> 00:06:30.072 +tarea que le vas a poner ahora. Esto lo que hace es poner + +00:06:30.072 --> 00:06:33.052 +esa información de últimas en la ventana de contexto y, por ende, + +00:06:33.052 --> 00:06:36.872 +el modelo de atención le va a dar más prioridad. Lo segundo es + +00:06:36.872 --> 00:06:41.132 +que si significa algo en, en nuestro idioma, significa algo para el + +00:06:41.132 --> 00:06:46.572 +LLM. Entonces, el uso de mayúsculas, el repetir la información múltiples veces, el + +00:06:46.572 --> 00:06:49.832 +uso de signos de exclamación, también van a optimizar el modelo de + +00:06:49.832 --> 00:06:54.532 +atención para que tenga más cuidado con las instrucciones que le estamos repitiendo + +00:06:54.532 --> 00:06:58.372 +o que estamos usando este tipo de técnicas que significan algo en + +00:06:58.372 --> 00:07:03.912 +nuestro lenguaje y van a significar algo para el LLM. Y por último, + +00:07:03.912 --> 00:07:08.052 +es que hagas preguntas o identifiques contradicciones. Si le pediste que te + +00:07:08.052 --> 00:07:11.892 +diera un reporte, volviendo al reporte de los últimos dos años de la + +00:07:11.892 --> 00:07:15.852 +empresa, por cada departamento y solo te habla de tres departamentos, eso + +00:07:15.852 --> 00:07:19.592 +ya es una señal de que no está logrando controlar la ventana de + +00:07:19.592 --> 00:07:23.472 +contexto y está empezando a olvidar o alucinar información. Y ahí lo + +00:07:23.472 --> 00:07:26.312 +que te recomiendo es que la información que te haya servido hasta ese + +00:07:26.312 --> 00:07:29.432 +punto del chat, la agarres, te la lleves a un nuevo chat + +00:07:29.432 --> 00:07:32.472 +y empieces una nueva tarea en una ventana de contexto limpia con la + +00:07:32.472 --> 00:07:37.792 +información que importa. Lo más importante de todo esto es que la + +00:07:37.792 --> 00:07:41.852 +información que ingresas tiene que ser la necesaria para resolver el problema. Si + +00:07:41.852 --> 00:07:44.992 +ingresas información de más, vas a caer en el problema de la + +00:07:44.992 --> 00:07:49.552 +aguja en el pajar, y puede que la inteligencia artificial, el LLM, empiece + +00:07:49.552 --> 00:07:53.092 +a alucinar y se pierda entre todo el contexto. Imagínate esta ventana + +00:07:53.092 --> 00:07:57.122 +de contexto como un escritorio, y los tokens como la cantidad de páginas + +00:07:57.122 --> 00:08:01.392 +que puedes tener visibles en el escritorio. Si solo puedes poner diez + +00:08:01.392 --> 00:08:05.062 +y tienes veinte, chances hay de que se pierda la información. Porque, ¿cómo + +00:08:05.062 --> 00:08:08.722 +priorizas cuáles son las diez que vas a poder ver? Lo importante + +00:08:08.722 --> 00:08:13.992 +es identificar la información correcta, optimizar la m-venta ventana de contexto al máximo + +00:08:13.992 --> 00:08:17.452 +y, desde ahí, poder tener mecanismos con los que identifiques en qué + +00:08:17.452 --> 00:08:20.672 +momento empezó a alucinar u olvidar la información para que puedas empezar un + +00:08:20.672 --> 00:08:24.452 +nuevo chat, reorganices tu mesa con las hojas y pongas la información + +00:08:24.452 --> 00:08:26.491 +que importa para la tarea que quieres solucionar. + diff --git "a/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.mp4" "b/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..f9032c4570cf0748caff877061b8debafc595d40 --- /dev/null +++ "b/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acb34aa16ab70d82694c0b971c19b025ef040af6d5ff98eb5bfb9909c6c11521 +size 436050296 diff --git "a/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.sub.vtt" "b/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.sub.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..2a2e4046c94dbe5438d40c2539cb1378b64c3651 --- /dev/null +++ "b/prompt-engineering/11-T\303\251cnicas de grounding para consultas legales con LLMs.sub.vtt" @@ -0,0 +1,575 @@ +WEBVTT + +00:00:00.400 --> 00:00:04.090 +Imagina que eres un product manager en una institución financiera en México. Es + +00:00:04.090 --> 00:00:07.060 +una institución, digamos, un banco, y tienes la tarea de que vas + +00:00:07.060 --> 00:00:09.880 +a crear un nuevo canal para atención de usuarios, que es una aplicación + +00:00:09.880 --> 00:00:14.460 +móvil. Para poder proponer esto y que sea viable y te den + +00:00:14.460 --> 00:00:17.740 +la aprobación, tienes que hacer un business case, tienes que hacer una propuesta + +00:00:17.740 --> 00:00:20.380 +en donde consideres todas las cosas que tienes que tener en cuenta + +00:00:20.380 --> 00:00:24.220 +para construirla. Y una de las cosas que va a ser más difícil + +00:00:24.220 --> 00:00:28.000 +es entender la ley y la regulación que te aplica, y aunque + +00:00:28.000 --> 00:00:32.180 +tienes un equipo legal, pues este es un trabajo que, en específico, tú + +00:00:32.180 --> 00:00:35.740 +como product manager deberías un poco dominar esta ley para llegar con + +00:00:35.740 --> 00:00:39.540 +propuestas más maduras y que el equipo legal no esté tanto gastándose el + +00:00:39.540 --> 00:00:45.080 +tiempo en explicarte toda la ley financiera o de instituciones crediticias, sino + +00:00:45.080 --> 00:00:49.820 +que se gaste más ese tiempo en discutir cómo hacer posible la idea. + +00:00:49.820 --> 00:00:54.760 +Antes, lo que tenías que hacer para llegar ahí es convertirte en + +00:00:54.760 --> 00:00:59.360 +un abogado, ser un experto en la ley, e incluso caías en el + +00:00:59.360 --> 00:01:03.060 +problema de que mucho del vocabulario que se usa no necesariamente lo + +00:01:03.060 --> 00:01:06.780 +vas a entender o te va a costar entender-- a entenderlo o vas + +00:01:06.780 --> 00:01:09.920 +a interpretarlo mal. Pero justo esta es una de esas tareas en + +00:01:09.920 --> 00:01:13.690 +donde podemos utilizar un LLM y es una de esas tareas donde vamos + +00:01:13.690 --> 00:01:17.679 +a empezar a ver varias técnicas para solucionar el problema de la + +00:01:17.680 --> 00:01:22.300 +aguja en un pajar, para que nos aseguremos que la inteligencia artificial no + +00:01:22.300 --> 00:01:27.320 +va a alucinar, olvidar e inventar información, sino que de verdad nos + +00:01:27.320 --> 00:01:31.700 +sirva para la tarea que queremos cumplir. Y espera, la función acá no + +00:01:31.700 --> 00:01:35.000 +es reemplazar a un abogado. La función acá es poder avanzar más + +00:01:35.000 --> 00:01:38.200 +en el trabajo para usar el tiempo de los abogados de la empresa + +00:01:38.200 --> 00:01:42.320 +en lo que realmente va a traer mayor impacto. Entonces, vamos a + +00:01:42.320 --> 00:01:46.500 +irnos a Gemini, que es el LLM con la mayor ventana de contexto + +00:01:46.500 --> 00:01:49.620 +de un millón de tokens, y vamos a empezar a ver diferentes + +00:01:49.620 --> 00:01:53.880 +técnicas que nos van a ayudar a asegurarnos que no tengamos el problema + +00:01:53.880 --> 00:01:59.660 +de alucinaciones, de olvidar o que termine inventando cosas la inteligencia artificial. + +00:01:59.660 --> 00:02:03.600 +Y esa primera técnica se va a llamar grounding. Entonces, vamos a irnos + +00:02:03.600 --> 00:02:06.140 +a Gemini y vamos a subir uno de los archivos que te + +00:02:06.140 --> 00:02:09.258 +dejé en los recursos. El primer archivo que vamos a abrir se llama + +00:02:09.258 --> 00:02:14.460 +LIC.pdf, que es la ley de instituciones de crédito. En este caso, + +00:02:14.460 --> 00:02:18.420 +esta es la ley de México para banca múltiple y lo que queremos + +00:02:18.420 --> 00:02:22.260 +hacer es poderla consultar. Y para eso vamos a usar el siguiente + +00:02:22.260 --> 00:02:26.740 +prompt, que tengo acá. Y es: «Eres un asistente legal especializado en la + +00:02:26.740 --> 00:02:32.329 +regulación bancaria mexicana. Basa tu respuesta únicamente en mayúsculas en el documento + +00:02:32.329 --> 00:02:35.880 +adjunto de la Ley de Instituciones de Crédito. Si la información no está + +00:02:35.880 --> 00:02:39.200 +en el documento, responde que no se encuentra disponible». Y acá vemos + +00:02:39.200 --> 00:02:42.580 +dos cosas que nos ayudan a este grounding. Lo primero es que le + +00:02:42.580 --> 00:02:47.519 +aclaramos que la respuesta debe ser basada únicamente en el documento adjunto + +00:02:47.520 --> 00:02:52.520 +y especificamos el nombre del documento. Podríamos decir documentos adjuntos y ya está, + +00:02:52.520 --> 00:02:56.480 +pero especificar el nombre del documento hace que se enfoque específicamente y + +00:02:56.480 --> 00:03:00.769 +no haya chance de que lo interprete por otro lugar. Únicamente lo ponemos + +00:03:00.769 --> 00:03:05.040 +en mayúscula porque significa algo en nuestro lenguaje. Cuando alguien nos habla + +00:03:05.040 --> 00:03:09.079 +en mayúscula, quiere decir que nos está haciendo énfasis en algo. Incluso hacemos + +00:03:09.080 --> 00:03:13.220 +el chiste de que está gritando. Acá estamos haciendo eso, darle énfasis + +00:03:13.220 --> 00:03:17.200 +en que únicamente en el documento adjunto. Y lo otro que hacemos es + +00:03:17.200 --> 00:03:20.460 +que le damos una instrucción de qué debe hacer si no encuentra + +00:03:20.460 --> 00:03:23.720 +información. Y acá lo más importante a tener en cuenta es que la + +00:03:23.720 --> 00:03:28.140 +inteligencia artificial va a encontrar patrones, incluso en lugares donde no los + +00:03:28.140 --> 00:03:32.700 +hay. La tarea de la inteligencia artificial es responderte sí o sí. Y + +00:03:32.700 --> 00:03:36.579 +si lo que implica es inventar información, lo va a hacer. Entonces, + +00:03:36.580 --> 00:03:39.960 +lo que estamos haciendo es ser explícitos en qué-- en qué debe hacer + +00:03:39.960 --> 00:03:42.700 +en el momento en el que no encuentre información con la cual + +00:03:42.700 --> 00:03:46.400 +responder. En lugar de inventar, mejor que nos dé una respuesta en donde + +00:03:46.400 --> 00:03:51.080 +nos diga que no se encuentra esa información. Al enviar este prompt, + +00:03:51.080 --> 00:03:55.920 +lo primero que estamos haciendo es darle un rol y dan-darle un enfoque + +00:03:55.920 --> 00:03:59.880 +a lo que queremos que pase dentro de-de esta ventana de contexto. + +00:03:59.880 --> 00:04:03.240 +Y listo. Acá me dice: «Ya procesé el documento y estoy lista para + +00:04:03.240 --> 00:04:07.840 +responder a cualquier pregunta basándome exclusivamente en la información que contiene». Entonces, + +00:04:07.840 --> 00:04:09.900 +vamos a hacer una pregunta. Le voy a dar el contexto de que + +00:04:09.900 --> 00:04:14.859 +estoy creando una aplicación móvil para una eh, institución crediticia. En este + +00:04:14.860 --> 00:04:18.039 +caso, me faltó una S acá, institución, y que será uno de los + +00:04:18.040 --> 00:04:21.640 +canales de atención. Y le preguntamos qué requisitos de autenticación de un + +00:04:21.640 --> 00:04:26.360 +cliente debe tener mi aplicación. Lo enviamos. Entonces, la respuesta que me da + +00:04:26.360 --> 00:04:29.220 +es justo un caso en donde me dice: «La información sobre los + +00:04:29.220 --> 00:04:33.780 +requisitos de autenticación específicos para una aplicación móvil no se encuentran disponibles en + +00:04:33.780 --> 00:04:37.160 +el documento de la ley de instituciones de crédito proporcionado». Y luego + +00:04:37.160 --> 00:04:40.480 +me dice de qué se trata. Lo más importante que acabamos de ver + +00:04:40.480 --> 00:04:43.340 +acá es que las dos técnicas de grounding que acabamos de ver, + +00:04:43.340 --> 00:04:47.000 +donde le decimos el únicamente y donde le damos una indicación de qué + +00:04:47.000 --> 00:04:51.180 +hacer si no está la información disponible, funcionó. En lugar de inventarse + +00:04:51.180 --> 00:04:56.780 +algo, nos dijo: «La información no está disponible». Ahora hagamos un ejemplo cuando + +00:04:56.780 --> 00:05:00.850 +la información sí está disponible. Vamos a abrir un nuevo chat y + +00:05:00.850 --> 00:05:06.320 +vamos a subir dos documentos adicionales. Tenemos la ley de institucio-- de instituciones + +00:05:06.320 --> 00:05:10.840 +de crédito, que es la que subimos anteriormente, y vamos a subir + +00:05:10.840 --> 00:05:13.640 +dos documentos más que encuentras en el área de recursos, que es el + +00:05:13.640 --> 00:05:17.580 +anexo sesenta y tres, que habla sobre cómo, eh, es el uso + +00:05:17.580 --> 00:05:21.740 +de el servicio de banca electrónica y uno de los diarios de la + +00:05:21.740 --> 00:05:25.800 +re-- de la federación que hablan también sobre esto. En este caso, + +00:05:25.800 --> 00:05:28.600 +si tú solo sabes sobre la ley y no tienes información de dónde + +00:05:28.600 --> 00:05:33.200 +encuentras la, la regulación que estás buscando, ahí es donde tienes que + +00:05:33.200 --> 00:05:35.800 +hablarle a tu equipo legal para que te guíen a cuál es la + +00:05:35.800 --> 00:05:39.220 +información correcta. Acá simulamos de que el equipo legal ya me respondió + +00:05:39.220 --> 00:05:43.520 +que es esta. Vamos a agregar esa información y vamos a volver al + +00:05:43.520 --> 00:05:47.719 +prompt con el que empezamos todo esto, pero voy a hacer una + +00:05:47.720 --> 00:05:52.680 +ligera modificación. El prompt con el que empezamos era: «Eres un asistente legal + +00:05:52.680 --> 00:05:56.479 +especializado en la regulación me-- bancaria mexicana. Basa tu respuesta únicamente en + +00:05:56.480 --> 00:06:00.920 +el documento adjunto de la ley de Instituciones de Crédito». Si yo lo + +00:06:00.920 --> 00:06:04.784 +dejo así...A pesar de haber subido el Diario de la Federación y + +00:06:04.784 --> 00:06:07.844 +el Anexo sesenta y tres, no lo va a tener en cuenta, porque + +00:06:07.844 --> 00:06:11.824 +estoy siendo explícito en qué documento se debe enfocar. Entonces, voy a + +00:06:11.864 --> 00:06:17.064 +decir: «Y documentos adjuntos». Y si la información no está en lo-- en + +00:06:17.064 --> 00:06:22.444 +los documentos, responde que no se encuentra disponible. Yo podría haber dejado + +00:06:22.444 --> 00:06:25.484 +que si la información no está en el documento, responde que no se + +00:06:25.484 --> 00:06:29.004 +encuentra disponible y capaz y funciona. Pero lo que queremos es que + +00:06:29.004 --> 00:06:32.884 +cada vez que lo usemos, funcione siempre. Entonces, capaz funciona una vez, pero + +00:06:32.884 --> 00:06:35.984 +luego lo interpreta de otra manera y no funciona. Es mejor usar + +00:06:35.984 --> 00:06:40.764 +las palabras correctas para lo que queremos decir. Lo envío y ahora me + +00:06:40.764 --> 00:06:44.164 +dice que ya revisó los documentos y ya los identificó. La ley + +00:06:44.164 --> 00:06:48.224 +de instituciones de crédito, el Diario Oficial de la Federación y el Anexo + +00:06:48.224 --> 00:06:51.664 +sesenta y tres CV. Y ya está listo para ayudarme. Y voy + +00:06:51.664 --> 00:06:55.154 +a hacer la misma pregunta: Estoy creando una aplicación móvil, ¿qué requisitos o + +00:06:55.154 --> 00:06:59.124 +autenticación de un cliente debo tener mi aplicación? Lo envío y ahora + +00:06:59.124 --> 00:07:03.604 +me respondió. Me dice: «Según los documentos proporcionados, requisitos de autenticación basado en + +00:07:03.604 --> 00:07:08.424 +el Anexo sesenta y tres, esto es lo que tengo para decir. + +00:07:08.424 --> 00:07:10.984 +Según el Diario de la Federación que yo le pasé», porque le pasé + +00:07:10.984 --> 00:07:14.664 +uno de los diarios, no le pasé todo, eh, menciona cuáles son + +00:07:14.664 --> 00:07:18.224 +los mecanismos de autenticación, ta, ta, ta, ta, ta. Ahora viene una técnica + +00:07:18.224 --> 00:07:21.604 +un poco más avanzada. Voy a pedirle que para cada respuesta que + +00:07:21.604 --> 00:07:28.224 +me entregue, me dé, eh, la cita textual del artículo que corresponde para + +00:07:28.224 --> 00:07:32.044 +poder ubicar la información que me está dando. Entonces, voy a darle + +00:07:32.044 --> 00:07:35.444 +este prompt. Se lo voy a poner acá. Le voy a decir: «Para + +00:07:35.444 --> 00:07:39.303 +cada requisito que menciones, incluye la cita textual del artículo correspondiente, entre + +00:07:39.304 --> 00:07:43.164 +comillas». Y vamos a ver qué me dice. Me da la respuesta y, + +00:07:43.164 --> 00:07:46.644 +por ejemplo, identificador del usuario, me dice: «El número de, de línea + +00:07:46.644 --> 00:07:49.964 +de teléfono móvil del usuario cuyo número de línea se encuentra asociado al + +00:07:49.964 --> 00:07:53.744 +servicio AT. Este dato debe ser obtenido de forma automática por la + +00:07:53.744 --> 00:07:57.444 +institución para ser utilizado como identificador de usuario». Vamos a hacer algo. Voy + +00:07:57.444 --> 00:08:01.984 +a coger esta información que me entregó acá y voy a irme + +00:08:01.984 --> 00:08:05.924 +a el Anexo sesenta y tres, al documento que descargué. Voy a buscar + +00:08:05.924 --> 00:08:09.564 +la cita textual, en este caso, tal cual como me la entregó. + +00:08:09.564 --> 00:08:13.444 +Voy a ponerlo, voy a irme acá, tengo el Anexo sesenta y tres, + +00:08:13.444 --> 00:08:17.203 +le doy buscar y no aparece. Vamos a hacer una prueba. Pasa + +00:08:17.204 --> 00:08:20.584 +que algunos PDFs tienden a ser imágenes a pesar de que vemos los + +00:08:20.584 --> 00:08:24.504 +textos. Entonces, voy a coger esta palabra de acá, voy a copiarla, + +00:08:24.504 --> 00:08:27.274 +voy a buscarla y voy a ver que en efecto encontró el texto. + +00:08:27.274 --> 00:08:31.074 +Entonces no es el problema de mi PDF. Acá yo podría buscar. + +00:08:31.074 --> 00:08:34.044 +Entonces, voy a-- voy a coger un par de palabras nada más. Teléfono + +00:08:34.044 --> 00:08:39.004 +móvil del usuario. Y vamos a buscar. Acá me sale: «Servicios y + +00:08:39.004 --> 00:08:41.784 +operaciones bancarias a través de un servicio telé cuyo número de línea está + +00:08:41.784 --> 00:08:44.824 +asociado al servicio. Este dato debe ser obtenido de forma automática por + +00:08:44.824 --> 00:08:48.364 +la institución para ser utilizado como identificador de usuario». Entonces, quiero que veas + +00:08:48.364 --> 00:08:53.024 +algo. En este caso, la cita textual no la encontró porque tiene + +00:08:53.024 --> 00:08:58.464 +unos caracteres especiales que están acá. Pero, en general, la información que me + +00:08:58.464 --> 00:09:01.624 +está diciendo acá es parecida a la información que me parece acá. + +00:09:01.624 --> 00:09:04.244 +Lo único es que si no es textual, si ves en este caso, + +00:09:04.244 --> 00:09:06.844 +dice: «El número de línea del teléfono móvil del usuario cuyo número + +00:09:06.844 --> 00:09:10.524 +de línea se encuentra asociado». Y acá es: «Servicios de operaciones bancarias a + +00:09:10.524 --> 00:09:13.233 +través de un teléfono móvil del usuario cuyo número de línea está + +00:09:13.233 --> 00:09:18.104 +asociado al servicio». Entonces, puedes buscar la cita completa, a veces no la + +00:09:18.104 --> 00:09:21.864 +vas a encontrar, puedes buscar palabras para encontrar la referencia y lo + +00:09:21.864 --> 00:09:24.944 +importante es que no siempre la cita la va a entregar tal cual. + +00:09:24.944 --> 00:09:30.784 +Y esto se lo podemos decir. «En la cita del Anexo sesenta + +00:09:30.784 --> 00:09:38.324 +y tres, no la encontré en el documento. ¿Puedes de-decirme en qué página + +00:09:38.324 --> 00:09:43.324 +está?» El punto de esta técnica que estamos viendo es que al + +00:09:43.324 --> 00:09:47.364 +pedirle las citas textuales podemos validar la información en los documentos de donde + +00:09:47.364 --> 00:09:51.684 +vienen. Y desde ahí, ya que validamos que la información sí existe + +00:09:51.684 --> 00:09:55.364 +en el documento, ahí ya podemos empezar a hacer más preguntas para entender + +00:09:55.364 --> 00:09:59.224 +los puntos exactos que hablan de lo que él detectó que soluciona + +00:09:59.224 --> 00:10:03.624 +mi pregunta o la cuestión que le estoy poniendo. Vamos a preguntarle qué + +00:10:03.624 --> 00:10:07.864 +es lo que dice todas estas leyes y regulaciones sobre la custodia + +00:10:07.864 --> 00:10:11.724 +de la información. Voy a enviarlo y voy a ver cuál es el + +00:10:11.724 --> 00:10:15.324 +resultado. Lo importante acá es que va a revisar los tres documentos + +00:10:15.324 --> 00:10:18.764 +y me va a decir, con citas exactas, qué lugares habla sobre la + +00:10:18.764 --> 00:10:21.804 +custodia de la información. E incluso si te das cuenta, el prompt + +00:10:21.804 --> 00:10:27.284 +es bastante amplio. Podríamos estar diciendo custodia de información del cliente, de las + +00:10:27.284 --> 00:10:31.404 +cuentas bancarias, de qué específicamente. Acá el punto es que vamos a + +00:10:31.404 --> 00:10:34.144 +ver todo lo que lo menciona y de ahí podemos empezar una investigación + +00:10:34.144 --> 00:10:37.244 +más profunda. Y si vemos, dice que en el Diario Oficial de + +00:10:37.244 --> 00:10:44.584 +la Federación cuenta sobre esta información y... nada más. Ningún otro documento me + +00:10:44.584 --> 00:10:47.444 +habla de esto. Si yo le doy acá, puedo ver exactamente de + +00:10:47.444 --> 00:10:54.524 +cuál documento se basó. Le puedo decir: «En la ley de Instituciones Crediticias + +00:10:54.524 --> 00:11:03.004 +se menciona algo?». Entonces, recordemos lo que veíamos en la clase pasada. + +00:11:03.004 --> 00:11:06.444 +En este caso, solo habló sobre el Diario de la Federación, pero yo + +00:11:06.444 --> 00:11:09.304 +puedo recordarle que tiene un documento disponible, que es la ley de + +00:11:09.304 --> 00:11:14.744 +Instituciones Crediticias y ver o pedirle que vaya y consulte ese documento y + +00:11:14.744 --> 00:11:18.364 +vea si ahí hay alguna información que no me está entregando porque + +00:11:18.364 --> 00:11:22.324 +se enfocó solamente en el Diario de la Federación. Y dice: «De acuerdo + +00:11:22.324 --> 00:11:25.843 +a la información contenida en el, en la ley de Instituciones de + +00:11:25.844 --> 00:11:29.944 +Crédito que proporcionaste, no se encuentra disponible el término custodia de la información + +00:11:29.944 --> 00:11:34.044 +ni se hace mes-- mención a requisitos específicos sobre este tema». Entonces, + +00:11:34.044 --> 00:11:38.224 +con esta última técnica también validamos que en los otros documentos no haya + +00:11:38.224 --> 00:11:41.124 +presente información y que no se le esté olvidando o no esté + +00:11:41.124 --> 00:11:45.864 +alucinando al respecto. Incluso podríamos mejorar el prompt que hicimos sobre la custodia + +00:11:45.864 --> 00:11:50.824 +de la información, aclarándole que consulte los tres documentos adjuntos para no + +00:11:50.824 --> 00:11:55.384 +tener que hacer estas validaciones adicionales. Con esta técnica de grounding, acabas de + +00:11:55.384 --> 00:11:59.184 +aprender cómo puedes forzar al modelo a responder solamente con la información + +00:11:59.184 --> 00:12:04.014 +que le proporcionas, diciéndole que lo haga únicamente basado en los datos adjuntos, + +00:12:04.014 --> 00:12:08.223 +pero también agregando una cláusula o una información que diga qué hacer + +00:12:08.224 --> 00:12:12.184 +en caso de no encontrar la información. Recuerda, esto no va a reemplazar + +00:12:12.184 --> 00:12:15.324 +un abogado, pero sí te va a dar información necesaria para llegar + +00:12:15.324 --> 00:12:19.144 +con una propuesta más elaborada. Lo importante es que no creas ciegamente en + +00:12:19.144 --> 00:12:22.324 +lo que te dice el LLM, sino que crees mecanismos donde puedas + +00:12:22.324 --> 00:12:25.944 +validar la información que te entregó y que esas propuestas lleguen desde un + +00:12:25.944 --> 00:12:29.244 +lugar más informado, en lugar de que llegues a una reunión creyendo + +00:12:29.244 --> 00:12:32.444 +que sabes de qué estás hablando y de repente fue la inteligencia artificial + +00:12:32.444 --> 00:12:35.564 +la que alucinó y te hizo ver que no sabías del tema + +00:12:35.564 --> 00:12:37.324 +que estabas tratando. + diff --git "a/prompt-engineering/12-Cadena de pensamiento y verificaci\303\263n con m\303\272ltiples m\303\251todos en LLMs.sub.vtt" "b/prompt-engineering/12-Cadena de pensamiento y verificaci\303\263n con m\303\272ltiples m\303\251todos en LLMs.sub.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..6a9b966e5a1917c32f0ea4f261ccdb7fc8a46974 --- /dev/null +++ "b/prompt-engineering/12-Cadena de pensamiento y verificaci\303\263n con m\303\272ltiples m\303\251todos en LLMs.sub.vtt" @@ -0,0 +1,233 @@ +WEBVTT + +00:00:00.280 --> 00:00:04.500 +Si te pregunto cuánto pagarías por tres camisetas de veinticinco dólares con un + +00:00:04.500 --> 00:00:10.080 +20 % de descuento, ¿qué me responderías? En mi caso, yo empezaría + +00:00:10.080 --> 00:00:14.890 +por decir: «Bueno, 20 % de veinticinco es cinco dólares, entonces veinte menos + +00:00:14.890 --> 00:00:19.960 +cinco... veinticinco menos cinco son veinte dólares, por tres son sesenta dólares». + +00:00:19.960 --> 00:00:26.420 +Entonces, pagarías sesenta dólares. Esto que acabo de hacer fue verbalizar cuál fue + +00:00:26.420 --> 00:00:30.919 +mi cadena de pensamiento para llegar al resultado. Es decir, dije con + +00:00:30.920 --> 00:00:35.280 +palabras cuál fue el paso a paso que ejecuté en mi cabeza para + +00:00:35.280 --> 00:00:39.620 +llegar al resultado de sesenta dólares. Primero, tenía el valor de veinticinco, + +00:00:39.620 --> 00:00:42.600 +luego saqué el 20 %, que son cinco dólares, luego esos cinco se + +00:00:42.600 --> 00:00:46.240 +los resté a los veinticinco, me dio veinte dólares, y luego multipliqué + +00:00:46.240 --> 00:00:51.400 +veinte por tres. Esto, a nivel de LLMs, se llama chain of thought + +00:00:51.400 --> 00:00:55.460 +o cadena de pensamiento. Y básicamente es lo que hace un LLM + +00:00:55.460 --> 00:00:58.980 +cada vez que le ponemos una tarea. Hace un par de años, para + +00:00:58.980 --> 00:01:02.820 +poder estimular al LLM y llegar a esa cadena de pensamiento, teníamos + +00:01:02.820 --> 00:01:07.280 +que darle un problema y decirle: «Piensa paso a paso». Y de repente, + +00:01:07.280 --> 00:01:11.660 +lo que el LLM hacía era primero pensar cuáles son los pasos + +00:01:11.660 --> 00:01:15.480 +para resolver el problema y luego ejecutar esos pasos. Hoy en día podemos + +00:01:15.480 --> 00:01:19.680 +decir que los modelos de razonamiento son los que hacen este proceso, + +00:01:19.680 --> 00:01:22.740 +pero la verdad es que todos los modelos hoy en día razonan. La + +00:01:22.740 --> 00:01:27.240 +diferencia entre un modelo rápido y un modelo pro o sofisticado o + +00:01:27.240 --> 00:01:31.800 +de problemas complejos, es cuánto tiempo tienen para razonar. Pero eso lo vamos + +00:01:31.800 --> 00:01:34.380 +a ver en las clases del futuro. En esta clase quiero que + +00:01:34.380 --> 00:01:38.360 +nos centremos en, primero, entender qué es esta cadena de pensamiento, que es + +00:01:38.360 --> 00:01:41.300 +el paso a paso para llegar a resolver un problema, en donde + +00:01:41.300 --> 00:01:44.680 +nosotros se lo podemos dar o le podemos pedir al LLM que los + +00:01:44.680 --> 00:01:48.900 +piense. Y segundo, cómo a través de esta cadena de pensamiento podemos + +00:01:48.900 --> 00:01:53.220 +generar múltiples caminos que nos den el mejor resultado posible. Esto último se + +00:01:53.220 --> 00:01:58.500 +llama self consistency, que es pedirle al LLM llegar a diferentes formas + +00:01:58.500 --> 00:02:02.400 +de resolver un problema, ver los resultados y asegurarnos que todas las formas + +00:02:02.400 --> 00:02:06.480 +llegan al resultado que queremos, o, por lo menos, escoger cuál es + +00:02:06.480 --> 00:02:09.720 +el resultado más común dentro de todas las formas que tuvo para resolver + +00:02:09.720 --> 00:02:13.380 +un problema. Y para poder ver esto en acción, vamos a seguir + +00:02:13.380 --> 00:02:18.440 +con nuestro problema de cómo resolveríamos comprar tres camisas de veinticinco dólares con + +00:02:18.440 --> 00:02:22.640 +20 % de descuento. Quiero que abras Microsoft Copilot y vamos a + +00:02:22.640 --> 00:02:26.320 +abrir un nuevo chat y vas a poner el siguiente prompt: «¿Cuánto pagarías + +00:02:26.320 --> 00:02:29.680 +por tres camisas de veinticinco dólares cada una con un 20 % + +00:02:29.680 --> 00:02:33.360 +de descuento?» Lo vamos a enviar y vamos a ver que nos cuente + +00:02:33.360 --> 00:02:36.620 +cuál es el resultado. Muchas veces vas a ver que puede decirte + +00:02:36.620 --> 00:02:41.860 +simplemente sesenta dólares, y algo que puedes decir es: «Piensa paso a paso». + +00:02:41.860 --> 00:02:44.040 +Y muchas otras veces vas a ver que te va a contar + +00:02:44.040 --> 00:02:47.010 +cuál fue el proceso. En este caso me dice: «Para calcular cuánto pagarías + +00:02:47.010 --> 00:02:50.380 +por tres camisas de veinticinco dólares cada una con un 20 % + +00:02:50.380 --> 00:02:55.370 +de descuento, primero multiplica el precio. Sin el descuento da setenta y cinco + +00:02:55.370 --> 00:02:59.760 +dólares. Luego, calcula el descuento del 20 %, que serían quince dólares, + +00:02:59.760 --> 00:03:03.900 +y luego, al precio final, le resta el descuento y son sesenta dólares». + +00:03:03.900 --> 00:03:07.760 +Acabamos de ver otro camino diferente al mío para resolver el mismo + +00:03:07.760 --> 00:03:13.100 +problema y llega a la misma solución: sesenta dólares. Ahora, ¿cómo podríamos aplicar + +00:03:13.100 --> 00:03:16.579 +el tema de self consistency en el caso de prompts? Vamos a + +00:03:16.580 --> 00:03:20.840 +abrir un nuevo chat y vamos a modificar ligeramente mi prompt con una + +00:03:20.840 --> 00:03:25.540 +frase simple. «¿Cuánto pagarías por tres camisas de veinticinco dólares cada una + +00:03:25.540 --> 00:03:30.109 +con un 20 % de descuento? Dame tres métodos para calcular esto». Voy + +00:03:30.109 --> 00:03:34.320 +a darle enter. Y acá me va a entregar tres métodos, tres + +00:03:34.320 --> 00:03:38.260 +cadenas de pensamiento con los cuales va a llegar al resultado. Veamos el + +00:03:38.260 --> 00:03:41.820 +resultado. Método uno: descuento sobre el precio final, que fue el que + +00:03:41.820 --> 00:03:47.040 +ya vimos. Precio unitario con descuento, entonces me dice: «Veinticinco dólares menos el + +00:03:47.040 --> 00:03:51.520 +20 % de veinticinco. Veinticinco menos cinco igual veinte. Precio final: tres + +00:03:51.520 --> 00:03:55.840 +por veinte, sesenta». Ese fue mi método. Y el tercero, multiplicación por el + +00:03:55.840 --> 00:04:01.020 +porcentaje restante. Entonces, dice: «100 % menos 20 % es igual a + +00:04:01.020 --> 00:04:04.650 +80 %, que es igual a 0.8. El precio final es setenta y + +00:04:04.650 --> 00:04:09.680 +cinco dólares por 0.8, sesenta dólares». En este caso que estamos hablando + +00:04:09.680 --> 00:04:13.960 +de una operación matemática, los tres métodos me llevan al mismo resultado. Incluso + +00:04:13.960 --> 00:04:16.659 +si el modelo hubiera alucinado o no hubiera hecho bien una de + +00:04:16.660 --> 00:04:23.900 +las operaciones, esta forma de pedirle el resultado me permitiría detectar errores. Porque + +00:04:23.900 --> 00:04:27.900 +podríamos ver cuál fue la cadena de pensamiento en cada método y + +00:04:27.900 --> 00:04:30.960 +si uno de los métodos da un resultado diferente, ya entrar a indagar + +00:04:30.960 --> 00:04:34.539 +cuál es el método correcto. O de plano podríamos co-- escoger la + +00:04:34.540 --> 00:04:39.540 +respuesta más común. Ya depende de cada problema la solución que queramos darle. + +00:04:39.540 --> 00:04:44.880 +Pero con estas dos técnicas, uno, hacer verbal o que explique cuál + +00:04:44.880 --> 00:04:48.640 +es el paso a paso de resolver un problema y dos, pedirle diferentes + +00:04:48.640 --> 00:04:54.740 +métodos, tenemos una alternativa más a cómo podemos evitar las alucinaciones o + +00:04:54.740 --> 00:04:59.320 +cómo podemos evitar que se invente cosas que no necesitamos para resolver un + +00:04:59.320 --> 00:05:03.000 +problema. En este caso lo hice con un problema matemático, pero quiero + +00:05:03.000 --> 00:05:06.360 +que tomes el ejemplo de la clase anterior donde hablábamos de las leyes + +00:05:06.360 --> 00:05:10.560 +del sistema bancario y le hagas una pregunta del cual le pidas + +00:05:10.560 --> 00:05:13.520 +tres métodos para llegar a la respuesta. Y quiero que me des en + +00:05:13.520 --> 00:05:17.560 +los comentarios cuáles fueron los métodos a los que llegaste haciendo el + +00:05:17.560 --> 00:05:21.260 +método de self consistency con el problema que vimos en la clase anterior. + diff --git a/prompt-engineering/14-Modelos de razonamiento de ChatGPT y cadenas de pensamiento.sub.vtt b/prompt-engineering/14-Modelos de razonamiento de ChatGPT y cadenas de pensamiento.sub.vtt new file mode 100644 index 0000000000000000000000000000000000000000..aeff6b2268231af57f068c2fd7dd9a27387325fe --- /dev/null +++ b/prompt-engineering/14-Modelos de razonamiento de ChatGPT y cadenas de pensamiento.sub.vtt @@ -0,0 +1,389 @@ +WEBVTT + +00:00:00.400 --> 00:00:04.019 +En la clase anterior hablamos sobre la cadena de pensamiento o chain of + +00:00:04.019 --> 00:00:07.580 +thought, y veíamos que básicamente es el proceso paso a paso para + +00:00:07.580 --> 00:00:11.320 +resolver un problema. Quiero ahondar un poco más en esto con el siguiente + +00:00:11.320 --> 00:00:14.160 +ejemplo. Vamos a ir a ChatGPT, y la diferencia esta vez es + +00:00:14.160 --> 00:00:17.700 +que voy a partir de una cuenta paga. Es decir, si tenías tu + +00:00:17.700 --> 00:00:21.600 +cuenta gratis antes, en este caso vas a tener que suscribirte y + +00:00:21.600 --> 00:00:26.470 +vas a poder disfrutar de varias configuraciones nuevas que tienes disponibles solo por + +00:00:26.470 --> 00:00:30.310 +estar en la versión paga. Lo primero que vas a tener disponible + +00:00:30.310 --> 00:00:34.400 +es el-- la posibilidad de cambiar de modelo. En la parte de arriba, + +00:00:34.400 --> 00:00:37.960 +donde dice ChatGPT 5, vas a ver que tiene una flecha y + +00:00:37.960 --> 00:00:41.990 +cuando le picas vas a ver lo siguiente. Vas a ver la-- el + +00:00:41.990 --> 00:00:45.820 +modo automático en donde él decide qué modelo de estos que me + +00:00:45.820 --> 00:00:49.680 +muestra va a usar según el problema que yo le lanzo, o puedo + +00:00:49.680 --> 00:00:55.460 +decirle directamente: «Quiero que me des el modelo instantáneo que me da + +00:00:55.460 --> 00:01:01.570 +las respuestas sin darse un tiempo muy largo para pensar cómo resolverlo». Luego, + +00:01:01.570 --> 00:01:04.280 +Thinking, que es el modelo que se va a tomar el tiempo + +00:01:04.280 --> 00:01:08.420 +para pensar para resolver. Y luego tenemos el modelo Pro, que este solo + +00:01:08.420 --> 00:01:13.000 +está disponible cuando pagas ChatGPT, la versión más alta, o cuando tienes + +00:01:13.000 --> 00:01:16.740 +una cuenta de Enterprise y haces parte de un grupo de trabajo, tienes + +00:01:16.740 --> 00:01:21.700 +ciertas capacidades del Pro limitadas al día a día. Y luego tenemos + +00:01:21.700 --> 00:01:24.480 +los modelos Legacy, que es poder acceder a los modelos que había lanzado + +00:01:24.480 --> 00:01:28.680 +antes ChatGPT, pero eso no lo necesitamos en este momento. Nos vamos + +00:01:28.680 --> 00:01:33.740 +a enfocar en qué tanto queremos que piense la respuesta. Y para este + +00:01:33.740 --> 00:01:37.840 +primer ejemplo vamos a irnos con el modelo instantáneo. Y el primer + +00:01:37.840 --> 00:01:40.920 +ejemplo que vamos a poner es el siguiente prompt: «Un grupo de veintitrés + +00:01:40.920 --> 00:01:44.860 +personas quiere sentarse en mesas con seis sillas cada una. ¿Son suficientes + +00:01:44.860 --> 00:01:48.580 +cuatro mesas?» Lo que quiero que veas es cómo el mismo prompt lo + +00:01:48.580 --> 00:01:52.220 +va a resolver dependiendo de cuál es el modelo que usamos y, + +00:01:52.220 --> 00:01:57.600 +luego, cómo podemos inducir ese pensamiento paso a paso que queremos ejecutar cada + +00:01:57.600 --> 00:02:02.480 +vez que lanzamos un prompt. Lo envío y vemos que la respuesta + +00:02:02.480 --> 00:02:05.940 +es instantánea. Me dice: «Cada mesa tiene seis sillas y hay cuatro mesas, + +00:02:05.940 --> 00:02:10.440 +entonces seis por cuatro, veinticuatro sillas en total. Como el grupo es + +00:02:10.440 --> 00:02:13.780 +de veintitrés personas y veintitrés es menor a veinticuatro, entonces se alcanzan las + +00:02:13.780 --> 00:02:19.000 +sillas, sobraría una silla libre». Aunque no le dijimos que nos mostrara + +00:02:19.000 --> 00:02:22.160 +la cadena de pensamiento, lo hizo y fue muy rápido en darnos la + +00:02:22.160 --> 00:02:26.700 +respuesta. También es un problema bastante simple. No nos enfoquemos en la + +00:02:26.700 --> 00:02:31.380 +complejidad del problema. Veamos exactamente el mismo problema con el modelo Thinking. Creamos + +00:02:31.380 --> 00:02:35.680 +un nuevo chat, cambiamos el modelo a Thinking y, tal cual como + +00:02:35.680 --> 00:02:38.590 +lo acabamos de hacer, le decimos el mismo prompt: «Un grupo de veintitrés + +00:02:38.590 --> 00:02:43.400 +personas quiere sentarse en seis sillas cada una. ¿Son suficientes cuatro mesas?» + +00:02:43.400 --> 00:02:45.500 +Y lo primero que vamos a ver es que se va a demorar + +00:02:45.500 --> 00:02:49.940 +más, va a decir Thinking. Y en ese Thinking nos dice: «Sí, + +00:02:49.940 --> 00:02:54.020 +cada mesa tiene seis sillas, cuatro mesas, cuatro por seis, veinticuatro, son veintitrés + +00:02:54.020 --> 00:02:58.600 +personas, alcanzas y sobra una silla». Me dio la misma respuesta, pero + +00:02:58.600 --> 00:03:02.500 +le tomó un poquito más de tiempo llegar a ella. Ahora, en cada + +00:03:02.500 --> 00:03:07.380 +una de estas que acabamos de ver, eh, pues en la primera + +00:03:07.380 --> 00:03:10.180 +nos contó un poco la operación matemática para llegar allá y nos dio + +00:03:10.180 --> 00:03:13.600 +la narrativa de cómo llegó allá, pero incluso cómo pensó que tenía + +00:03:13.600 --> 00:03:18.840 +que hacer una operación matemática. Acá, de hecho, lo pensó y llegó a + +00:03:18.840 --> 00:03:23.299 +la misma respuesta y nos cuenta la misma operación matemática, pero todavía + +00:03:23.300 --> 00:03:26.400 +queda la duda, cómo llegó a que esto lo podía resolver de esa + +00:03:26.400 --> 00:03:31.240 +manera. Vamos a hacer un nuevo chat y bajo el mismo Thinking + +00:03:31.240 --> 00:03:35.000 +vamos a usar el mismo prompt, pero le voy a decir: «Piensa "paso + +00:03:35.000 --> 00:03:39.220 +a paso"». Y lo enviamos. Y ahora nos va a salir el + +00:03:39.220 --> 00:03:45.140 +Thinking. Y si esperamos un segundo más, nos va a decir calculando las + +00:03:45.140 --> 00:03:50.180 +sillas y dice: «Pensé por cuatro segundos». Vamos a calcularlo. Cuatro mesas + +00:03:50.180 --> 00:03:53.880 +con seis sillas cada una, cuatro por seis, veinticuatro. Como hay veintitrés personas, + +00:03:53.880 --> 00:03:58.100 +comparamos veinticuatro sobre veintitrés, por lo tanto, sobra una silla. Listo, tarea + +00:03:58.100 --> 00:04:03.100 +resuelta. El paso corto es este. Puedes organizar, por ejemplo, tres mesas con + +00:04:03.100 --> 00:04:06.360 +seis personas y una mesa con cinco. A todos llegamos al mismo + +00:04:06.360 --> 00:04:10.860 +resultado, pero la diferencia es cómo el prompt nos permitió ver cuál fue + +00:04:10.860 --> 00:04:15.500 +el proceso de pensamiento para llegar allá. ¿Esto qué quiere decir? ¿Que + +00:04:15.500 --> 00:04:18.620 +nuestros prompts ahora tienen que ser más sencillos, ya que el modelo puede + +00:04:18.620 --> 00:04:23.820 +razonar, puede pensar ese paso a paso? La verdad es que depende + +00:04:23.820 --> 00:04:26.320 +del problema. Y el ejercicio que acabamos de hacer es lo que te + +00:04:26.320 --> 00:04:29.760 +invito a hacer cada vez que tú vayas a tener un prompt. + +00:04:29.820 --> 00:04:33.990 +Yo siempre intento el mismo problema, resolverlo con diferentes modelos en la misma + +00:04:33.990 --> 00:04:38.340 +herramienta y ver cuál es la calidad de la respuesta. E incluso + +00:04:38.340 --> 00:04:41.640 +si yo veo que la respuesta está llegando a ser no la que + +00:04:41.640 --> 00:04:44.680 +yo esperaba, le doy el paso a paso que yo espero que + +00:04:44.680 --> 00:04:47.940 +siga, porque cuando le doy el paso a paso que yo espero que + +00:04:47.940 --> 00:04:51.900 +siga, estoy limitando también esa cadena de pensamiento. Cada uno de esos + +00:04:51.900 --> 00:04:54.840 +pasos se va a convertir en un prompt y cada uno de esos + +00:04:54.840 --> 00:05:00.580 +pasos los va a usar para pensar cómo resolverlos. Entonces, estamos limitando + +00:05:00.580 --> 00:05:05.540 +los caminos por los que se puede ir. Incluso, hagamos algo nuevo. Vamos + +00:05:05.540 --> 00:05:11.000 +a decirle este mismo prompt y le vamos a decir: «Descríbeme el + +00:05:11.000 --> 00:05:22.180 +paso a paso... Paso que harías para resolver este tipo de problemas. Dame + +00:05:22.180 --> 00:05:27.420 +tres alternativas». Y vamos a ver cuál es la respuesta. Esto lo + +00:05:27.420 --> 00:05:30.820 +está haciendo en el modelo Thinking. Acá tenemos la respuesta y quiero que + +00:05:30.820 --> 00:05:33.360 +veas lo siguiente. Al pedirle que me dé el paso a paso + +00:05:33.360 --> 00:05:35.460 +que-- de lo que haría como si fuera un template y que me + +00:05:35.460 --> 00:05:39.599 +diera tres alternativas, uno, estamos aplicando lo que aprendimos en la clase + +00:05:39.600 --> 00:05:43.520 +pasada de self-consistency, pero dos, el problema fue más complejo y en este + +00:05:43.520 --> 00:05:47.820 +caso pensó por quince segundos. Y cuando le doy que-- clic acá, + +00:05:47.820 --> 00:05:52.060 +voy a ver cuál fue la cadena de pensamiento. En este caso, ChatGPT + +00:05:52.060 --> 00:05:56.240 +está configurado para que piense en inglés. Entonces, voy a ver el + +00:05:56.240 --> 00:05:59.710 +paso a paso y la cadena de pensamiento en inglés, y luego voy + +00:05:59.710 --> 00:06:03.728 +a ver el resultado. Y acá puedo ver...Voy a responder el problema + +00:06:03.728 --> 00:06:09.248 +matemático que tiene, eh, y mostrar los pasos. Va a ofrecer tres approaches. + +00:06:09.248 --> 00:06:13.538 +Entonces, lo primero que pensó fue cuáles son los-- las diferentes alternativas. + +00:06:13.538 --> 00:06:21.268 +Multiplicación y comparación, división y redondear hacia arriba, y luego, uso de, de... + +00:06:21.268 --> 00:06:28.228 +división y dividendos. Y luego, va a crear la respuesta que me + +00:06:28.228 --> 00:06:33.328 +muestra las tres alternativas, y con eso luego hizo el breakdown de cómo + +00:06:33.328 --> 00:06:35.668 +se ve esa respuesta y ya me la mostró y acá la + +00:06:35.668 --> 00:06:39.328 +tenemos. Voy a usar una de las plantillas que me dio, multiplicar y + +00:06:39.328 --> 00:06:43.288 +comparar. Voy a irme a un nuevo chat, voy a poner multiplicar + +00:06:43.288 --> 00:06:51.288 +y comparar. Eh, le voy a decir: «Usando este template, resuelve el problema + +00:06:51.288 --> 00:06:55.888 +que te daré». El template es este, y luego le digo el + +00:06:55.888 --> 00:06:59.988 +problema, y el problema va a ser ligeramente distinto al que le había + +00:06:59.988 --> 00:07:04.228 +dado. Voy a ponerlo acá, le voy a decir: «Un grupo de + +00:07:04.228 --> 00:07:08.018 +veintitrés personas quiere sentarse en seis sillas cada una, ¿son suficientes cuatro mesas?» + +00:07:08.018 --> 00:07:11.648 +Le voy a decir que son trescientas personas y voy a decirle + +00:07:11.648 --> 00:07:16.808 +que si son suficientes, doscientas mesas. No, mentiras, voy a decirle que sí + +00:07:16.808 --> 00:07:22.028 +son suficientes cincuenta mesas. Entonces, mismo prompt, estamos cambiando las variables para + +00:07:22.028 --> 00:07:26.688 +ver que la plantilla que le estoy dando funciona, pero ahora el paso + +00:07:26.688 --> 00:07:29.628 +a paso ya está acotado a que esta sea la forma en + +00:07:29.628 --> 00:07:34.048 +la que lo va a resolver. Lo enviamos y originalmente, cuando le pusimos + +00:07:34.048 --> 00:07:36.948 +el prompt sin el paso a paso, pensó por cuatro segundos. Cuando + +00:07:36.948 --> 00:07:40.908 +le pedimos la plantilla, pensó por quince segundos. Y acá ni siquiera alcanzó + +00:07:40.908 --> 00:07:45.308 +a decirme cuánto, fue a few seconds, unos pocos segundos. Y lo + +00:07:45.308 --> 00:07:49.698 +que hizo fue seguir literalmente el paso a paso. Vamos a multiplicar cincuenta + +00:07:49.698 --> 00:07:53.808 +por seis, trescientos. Comparamos con las trescientas personas, trescientos es mayor o + +00:07:53.808 --> 00:07:59.328 +igual a trescientos. Conclusión, es exactamente suficiente y me entrega ese resultado. No + +00:07:59.328 --> 00:08:03.248 +sobran sillas, es exactamente suficiente. Con modelos de razonamiento como lo que + +00:08:03.248 --> 00:08:06.048 +acabamos de ver, algo que a mí me ha sido muy útil es + +00:08:06.048 --> 00:08:10.327 +empezar con el problema muy amplio, ver alternativas de cómo es el + +00:08:10.328 --> 00:08:15.228 +chain of thought o esa cadena de pensamiento para resolverlo... Después de analizar + +00:08:15.228 --> 00:08:18.148 +la cadena de pensamiento, unificar cuál es la que más me parece + +00:08:18.148 --> 00:08:22.228 +que resolvería el problema de manera más efectiva y luego volver a ir + +00:08:22.228 --> 00:08:25.308 +con el prompt dándole el paso a paso que va a resolver + +00:08:25.308 --> 00:08:30.448 +el problema para el futuro. Con esto también empiezo a evitar un problema + +00:08:30.448 --> 00:08:34.648 +que es: ¿Cuáles son las palabras para-- correctas para decir esto? Estamos + +00:08:34.648 --> 00:08:38.508 +cayendo en cuáles son las palabras que usaría el modelo para pensar en + +00:08:38.508 --> 00:08:43.048 +cómo resolver el problema y basados en eso complementar el prompt para + +00:08:43.048 --> 00:08:48.228 +ir limitando esa creatividad y llegar al resultado que siempre estamos esperando. Esto + +00:08:48.228 --> 00:08:51.128 +quiere decir que en modelos de razonamiento no significa que nos saltemos + +00:08:51.128 --> 00:08:55.248 +el paso a paso, significa que tenemos una herramienta más para poder acotar + +00:08:55.248 --> 00:08:58.788 +esa creatividad y llegar al prompt exacto que necesitamos para resolver un + +00:08:58.788 --> 00:08:59.448 +problema. + diff --git a/prompt-engineering/15-Prompt chaining dividir tareas complejas en pasos independientes.sub.vtt b/prompt-engineering/15-Prompt chaining dividir tareas complejas en pasos independientes.sub.vtt new file mode 100644 index 0000000000000000000000000000000000000000..76420fbfcabf73c46e35463bf8d8268b5fc8cb61 --- /dev/null +++ b/prompt-engineering/15-Prompt chaining dividir tareas complejas en pasos independientes.sub.vtt @@ -0,0 +1,362 @@ +WEBVTT + +00:00:00.220 --> 00:00:03.880 +Piensa en prompt chaining como si fuera una línea de ensamblaje. Estamos en + +00:00:03.880 --> 00:00:06.779 +una fábrica de autos y la realidad es que no es que + +00:00:06.780 --> 00:00:09.820 +digamos: «Quiero un auto» y de repente sale un auto. Hay un primer + +00:00:09.820 --> 00:00:12.980 +paso con la carrocería, hay un segundo paso, donde se ponen las + +00:00:12.980 --> 00:00:16.219 +puertas, hay un tercer paso, donde se pone todo lo eléctrico, hay un + +00:00:16.219 --> 00:00:20.040 +cuarto paso, donde se pone el motor, hay un quinto paso, donde + +00:00:20.040 --> 00:00:24.150 +se pone toda la cojinería y cada uno de esos pasos va dando + +00:00:24.150 --> 00:00:27.030 +pie al siguiente para poder terminar al final de la cadena de + +00:00:27.030 --> 00:00:31.300 +ensamblaje con un coche construido. Con los prompts funciona igual. En lugar de + +00:00:31.300 --> 00:00:34.420 +tener un prompt gigante que llegue y me diga: «Creo una estrategia + +00:00:34.420 --> 00:00:39.360 +de marketing para el siguiente Q del año», pues es una tarea gigante. + +00:00:39.360 --> 00:00:42.700 +Y ya vimos chain of thought y ya vimos self-consistency, y sí, + +00:00:42.700 --> 00:00:46.820 +podemos tener el paso a paso y puedes llegar a un resultado. Pero + +00:00:46.820 --> 00:00:51.300 +igual como en una cadena de ensamblaje de un coche, cada estación + +00:00:51.300 --> 00:00:53.980 +tiene un propósito y tiene muy claro qué es lo que tiene que + +00:00:53.980 --> 00:00:57.620 +resolver y cuál es su resultado para pasar a la siguiente estación. + +00:00:57.620 --> 00:01:01.440 +En este caso, si vamos a crear una estrategia de marketing y nosotros + +00:01:01.440 --> 00:01:05.280 +somos expertos en marketing, podríamos partir desde ahí arriba, pero la verdad + +00:01:05.280 --> 00:01:08.280 +es que nosotros sabemos cómo hacer una estrategia de marketing paso a paso + +00:01:08.280 --> 00:01:11.710 +y cuál es el resultado de cada una de esas estaciones. Va + +00:01:11.710 --> 00:01:14.200 +a ser muy parecido a lo que hicimos en chain of thought, donde + +00:01:14.200 --> 00:01:17.760 +tenemos un paso a paso, pero acá estamos dividiendo el problema en + +00:01:17.760 --> 00:01:20.320 +cada uno de esos pasos para que cada uno de esos pasos sea + +00:01:20.320 --> 00:01:23.539 +un prompt, para que cada uno de esos pasos sea algo que + +00:01:23.540 --> 00:01:26.920 +hacemos dentro del ChatGPT o dentro del LLM, de preferencia en un nuevo + +00:01:26.920 --> 00:01:31.140 +chat. Imagina, por ejemplo, que a partir de un resumen de un + +00:01:31.140 --> 00:01:35.760 +artículo de un blog que escribiste, quieres hacer las publicaciones en social media. + +00:01:35.760 --> 00:01:39.320 +Primero, el punto es sacar los puntos claves de ese blog post + +00:01:39.320 --> 00:01:43.060 +que escribiste. Lo siguiente es que cada uno de esos puntos claves los + +00:01:43.060 --> 00:01:47.030 +vas a convertir en una publicación para una red social. Digamos que + +00:01:47.030 --> 00:01:50.280 +es Instagram. Luego de que sabes cómo cada uno de esos puntos se + +00:01:50.280 --> 00:01:53.740 +convierte en la publicación de Instagram, lo siguiente es crear la pie-- + +00:01:53.740 --> 00:01:58.120 +la pieza gráfica. Luego de que creaste la pieza gráfica, lo siguiente va + +00:01:58.120 --> 00:02:00.640 +a ser crear el texto que va a acompañar esa pieza cuando + +00:02:00.640 --> 00:02:04.840 +la publiques. Y hasta que tengas todos esos pasos resueltos, vas a poder + +00:02:04.840 --> 00:02:09.620 +publicar esa pieza en tu feed. Aquí el punto es que podríamos + +00:02:09.620 --> 00:02:13.160 +hacerlo en una sola conversación, pero ya hemos venido hablando sobre cuál es + +00:02:13.160 --> 00:02:16.980 +el problema de agrandar la ventana de contexto. Y lo más óptimo + +00:02:16.980 --> 00:02:21.020 +para sacar el mejor provecho de un LLM es que dejemos de hacerlo + +00:02:21.020 --> 00:02:24.660 +en una sola conversación y que el resultado de cada paso pase + +00:02:24.660 --> 00:02:28.100 +a un nuevo chat para partir al siguiente paso que tenemos en la + +00:02:28.100 --> 00:02:31.320 +cadena, justo como si habláramos de la cadena de producción de un + +00:02:31.320 --> 00:02:34.320 +coche. Vamos a ir a un ejemplo detallado y es que voy a + +00:02:34.320 --> 00:02:39.160 +tomar el último reporte de la organización Cl-Climate Change Committee, que está + +00:02:39.160 --> 00:02:44.560 +en Inglaterra, que en abril de 2025 generó un reporte sobre cómo estaba + +00:02:44.560 --> 00:02:48.660 +avanzando la adopción de cambio climático dentro de Inglaterra al Parlamento. Y + +00:02:48.660 --> 00:02:52.480 +a partir de eso vamos a tratar de generar contenido que venga de + +00:02:52.480 --> 00:02:55.120 +ese reporte. Vamos a crear un resumen de cien palabras que de + +00:02:55.120 --> 00:03:00.020 +verdad nos aporte para entender las causas, efectos y soluciones del cambio climático. + +00:03:00.020 --> 00:03:02.900 +Pero, pues hacer un resumen es bastante sencillo. Lo hicimos en el + +00:03:02.900 --> 00:03:06.080 +primer módulo con un solo prompt. Acá vamos a hacer algo diferente, lo + +00:03:06.080 --> 00:03:09.700 +vamos a dividir en tres pasos. El primer paso va a sacar + +00:03:09.700 --> 00:03:13.660 +los puntos más relevantes del reporte. El segundo paso lo va a clasificar + +00:03:13.660 --> 00:03:17.780 +entre causas, efectos y soluciones. Y el tercer paso va a tomar + +00:03:17.780 --> 00:03:21.780 +ese resultado para generar el resumen. Veamos cómo cambia comparado a lo que + +00:03:21.780 --> 00:03:24.840 +hicimos en el primer módulo. En la parte de recursos te dejé + +00:03:24.840 --> 00:03:28.150 +tres archivos: un PDF, que es el reporte de cómo es el progreso + +00:03:28.150 --> 00:03:33.060 +adaptándose al cambio climático en Inglaterra, y dos, eh, spreadsheets, uno que + +00:03:33.060 --> 00:03:36.240 +trae todas las gráficas y datos que aportan al reporte y uno que + +00:03:36.240 --> 00:03:40.900 +tiene una serie de recomendaciones. Y tenemos nuestro prompt. Extrae los cinco + +00:03:40.900 --> 00:03:44.080 +puntos más importantes del reporte que te adjunté sobre el progreso del cambio + +00:03:44.080 --> 00:03:48.020 +climático en UK. Le vamos a dar enviar. Y algo que vamos + +00:03:48.020 --> 00:03:50.640 +a ver es que apenas lo envío, va a tratar de mostrarme un + +00:03:50.640 --> 00:03:53.460 +preview de los archivos que subí. Entonces, me está diciendo que no + +00:03:53.460 --> 00:03:57.000 +me puede mostrar el preview de, eh, gráficas y datos, pero sí me + +00:03:57.000 --> 00:04:01.480 +muestra el de las recomendaciones y el PDF está por acá. Y + +00:04:01.480 --> 00:04:05.300 +ahora, como estoy usando el thinking, va a tardarse un rato, pero también + +00:04:05.300 --> 00:04:07.900 +yo puedo ver cuál es el chain of thought. Lo primero que + +00:04:07.900 --> 00:04:12.480 +está haciendo es leyendo los documentos. Le dio doble lectura. Y ya que + +00:04:12.480 --> 00:04:16.760 +terminó la segunda lectura, dice: «El usuario preguntó por cinco key points. + +00:04:16.760 --> 00:04:19.880 +Voy a enfocarme en lo siguiente, ta, ta, ta». Y me entrega los + +00:04:19.880 --> 00:04:23.840 +cinco mensajes claves del reporte e incluso me da las citas de + +00:04:23.840 --> 00:04:29.120 +dónde encuentro esa información de la cual se basó para darme la respuesta. + +00:04:29.120 --> 00:04:31.860 +Y esto es lo clave. Yo voy a irme al icono de + +00:04:31.860 --> 00:04:35.120 +acá que dice copiar, le voy a picar y me voy a ir + +00:04:35.120 --> 00:04:39.700 +al nuevo chat. Y acá le voy a decir: toma los siguientes + +00:04:39.700 --> 00:04:44.360 +puntos, dos puntos, y voy a pegar lo que me dio. En este + +00:04:44.360 --> 00:04:47.800 +caso, simplemente, voy a quitar la información que no me sirve, voy + +00:04:47.800 --> 00:04:51.940 +a dejar solamente los puntos, y desde acá le voy a decir que + +00:04:51.940 --> 00:04:57.659 +me los organice por las categorías que estoy buscando generar el reporte. + +00:04:57.660 --> 00:05:01.950 +Entonces, le voy a decir: organízalos en categorías de progreso, recomendaciones e impacto. + +00:05:01.950 --> 00:05:07.260 +E incluso con lo que ya aprendí, voy a decirle: cinco puntos + +00:05:07.260 --> 00:05:19.340 +clave del reporte de cambio climático... UK. Voy a poner acá la etiqueta, + +00:05:19.340 --> 00:05:23.240 +la copio, me voy hasta el final, la pego y la cierro. + +00:05:23.240 --> 00:05:26.460 +Y con eso ya le estoy diciendo que los puntos inician ahí y + +00:05:26.460 --> 00:05:33.660 +que quiero que los organice en esto. Vamos a enviarlo... Y el + +00:05:33.660 --> 00:05:36.480 +prompt va a hacer que empiece a pensar, porque estamos en el modelo + +00:05:36.480 --> 00:05:42.700 +thinking. Pensó por seis segundos y tenemos el resultado. Progreso está acá, + +00:05:42.700 --> 00:05:48.860 +recomendaciones está acá, impacto están acá. Tal cual, lo que yo le pasé + +00:05:48.860 --> 00:05:52.400 +arriba lo acabo de clasificar. Vamos a copiar este resultado y nos + +00:05:52.400 --> 00:05:56.180 +vamos a ir a un nuevo chat. Acá le voy a decir: «A + +00:05:56.180 --> 00:06:07.040 +partir de los hallazgos del reporte de progreso en adaptación al cambio + +00:06:07.040 --> 00:06:19.170 +climático...OK, voy a poner «A partir de los siguientes hallazgos». Dos puntos. Le + +00:06:19.170 --> 00:06:24.430 +voy a poner «Hallazgos». Voy a cerrar. Voy a abrir de nuevo + +00:06:24.430 --> 00:06:29.990 +«Hallazgos». Voy a cerrar. Y acá, dentro de ese bloque, voy a poner + +00:06:29.990 --> 00:06:34.970 +la clasificación que ya tengo. Le voy a pedir que me haga + +00:06:34.970 --> 00:06:40.850 +un resumen justo como lo que queremos. Entonces, por acá tengo mi prompt + +00:06:40.850 --> 00:06:44.410 +y es: Escribe un resumen de cien palabras enfocado en las soluciones + +00:06:44.410 --> 00:06:48.710 +más viables. Y le doy a Enviar. De nuevo el modelo va a + +00:06:48.710 --> 00:06:51.810 +ponerse a pensar y nos va a dar el resultado. En este + +00:06:51.810 --> 00:06:55.310 +caso, vemos que está creando el resumen, que lo debe hacer en español. + +00:06:55.310 --> 00:06:59.310 +Tuvo dos pasos que tuvo que pensar para llegar acá, y acá + +00:06:59.310 --> 00:07:03.430 +me dice: Las soluciones más viables combinan dirección clara y ejecución rigurosa. Primero, + +00:07:03.430 --> 00:07:06.330 +fijar objetivos y metas medibles por sector ligados a hitos anuales y + +00:07:06.330 --> 00:07:12.330 +presupuestos. Segundo, crear una coordinación interdepartamental fuerte con mandato en resiliencia y rutas + +00:07:12.330 --> 00:07:18.130 +de decisiones rápidas. Tercero, mainstreaming de la adaptación en planifi-- en planificación, + +00:07:18.130 --> 00:07:23.490 +spend review, regulación, etc., etc., etc. Me da un cuarto punto y con + +00:07:23.490 --> 00:07:27.970 +eso termina. Lo importante de este proceso es que llegamos a un + +00:07:27.970 --> 00:07:31.400 +resumen. Llegamos a un resumen de cien palabras. ¿Lo pudimos haber hecho en + +00:07:31.400 --> 00:07:36.990 +un solo chat? Sí. ¿Cuál es el problema? Que estamos subiendo tres + +00:07:36.990 --> 00:07:40.250 +archivos, que la ventana de contexto va a ir creciendo, que eso puede + +00:07:40.250 --> 00:07:44.710 +inducir a más errores, alucinaciones o que se le olvide instrucciones. Y, + +00:07:44.710 --> 00:07:49.250 +en este caso, como hicimos cada uno de los prompts, incluso podemos detallar + +00:07:49.250 --> 00:07:53.770 +cada una de esas, esas estaciones para que el resultado sea lo + +00:07:53.770 --> 00:07:57.730 +más óptimo posible para seguir a la siguiente estación y llegar a un + +00:07:57.730 --> 00:08:02.550 +resultado aún más preciso de lo que buscamos. En prompt chaining lo + +00:08:02.550 --> 00:08:06.450 +bueno es que cada paso literalmente es un prompt que podemos iterar hasta + +00:08:06.450 --> 00:08:10.070 +que lleguemos al prompt exacto y optimizar cada uno de esos pasos + +00:08:10.070 --> 00:08:13.930 +para asegurar siempre que vamos a sacar la misma calidad de coche al + +00:08:13.930 --> 00:08:15.410 +final de la línea de producción. + diff --git "a/prompt-engineering/16-Creaci\303\263n de agentes personalizados con IA para empresas.sub.vtt" "b/prompt-engineering/16-Creaci\303\263n de agentes personalizados con IA para empresas.sub.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..9eb4d0e74e59e6b446390cd28a73d3541fd3a405 --- /dev/null +++ "b/prompt-engineering/16-Creaci\303\263n de agentes personalizados con IA para empresas.sub.vtt" @@ -0,0 +1,806 @@ +WEBVTT + +00:00:00.660 --> 00:00:04.280 +Hasta el momento has aprendido varias técnicas de prompting que te permiten solucionar + +00:00:04.280 --> 00:00:08.220 +diferentes tipos de problemas. Quiero que paremos un segundo para ver un + +00:00:08.220 --> 00:00:13.040 +par de herramientas que tenemos disponibles cuando trabajamos con Claude, ChatGPT, Gemini o + +00:00:13.040 --> 00:00:17.980 +Microsoft Copilot. Estas herramientas te van a permitir controlar otras cosas dentro + +00:00:17.980 --> 00:00:22.060 +de cómo la inteligencia artificial lee tus prompts y los ejecuta, pero también + +00:00:22.060 --> 00:00:25.580 +te va a dar un superpoder más, y es escalar estos prompts + +00:00:25.580 --> 00:00:29.240 +a procesos que puedes automatizar dentro de tu empresa. Vamos a empezar con + +00:00:29.240 --> 00:00:32.439 +Microsoft Copilot, y en especial vamos a empezar acá porque es un + +00:00:32.439 --> 00:00:38.420 +poco diferente a OpenAI, a Claude y a Gemini, solo porque Microsoft Copilot + +00:00:38.420 --> 00:00:42.220 +no tiene un modelo propietario de ellos. Recordemos que por detrás usan + +00:00:42.220 --> 00:00:47.430 +los modelos de OpenAI, que es GPT-4 y GPT-5. Pero aun así tenemos + +00:00:47.430 --> 00:00:52.660 +un playground donde podemos hacer un poco más de cosas que dentro + +00:00:52.660 --> 00:00:56.580 +de las otras herramientas no vamos a tener disponibles solo porque Microsoft se + +00:00:56.580 --> 00:00:59.640 +integra muy bien con toda su suite de trabajo. Voy a estarte + +00:00:59.640 --> 00:01:03.220 +mostrando todas las herramientas y recuerda que abajo en los recursos tienes los + +00:01:03.220 --> 00:01:07.700 +enlaces a cada una de ellas. Entonces, cuando yo mencione Microsoft Copilot, + +00:01:07.700 --> 00:01:12.180 +Copilot Studio o cualquier playground, recuerda revisar en los recursos para poder acceder + +00:01:12.180 --> 00:01:16.360 +a estas herramientas. Vamos a empezar con Microsoft Copilot. Cuando entramos a + +00:01:16.360 --> 00:01:20.840 +Copilot, lo primero que vemos es esta Welcome y esta caja de texto + +00:01:20.840 --> 00:01:23.899 +en donde ya hemos interactuado un poco durante el curso y vamos + +00:01:23.900 --> 00:01:28.780 +a ver una parte que se llama Agentes. Acá vamos a aclarar algo. + +00:01:28.780 --> 00:01:33.860 +Los agentes, en general en inteligencia artificial, no es exactamente lo que + +00:01:33.860 --> 00:01:37.920 +vamos a ver acá. Dentro de otras herramientas, esto se puede llamar un + +00:01:37.920 --> 00:01:42.899 +GPT o puede llamarse un proyecto en Claude. En Microsoft lo llamamos + +00:01:42.900 --> 00:01:47.180 +agentes, no es la definición formal de agentes de inteligencia artificial. Ya vamos + +00:01:47.180 --> 00:01:51.080 +a ver cómo logramos que estos agentes sí se conviertan realmente en + +00:01:51.080 --> 00:01:55.280 +un agente de inteligencia artificial. Pues ya que tenemos en cuenta eso, vemos + +00:01:55.280 --> 00:01:59.760 +Agentes y yo puedo explorar diferentes agentes como el researcher o el + +00:01:59.760 --> 00:02:05.440 +analista, que básicamente son chats de Microsoft Copilot con un prompt que los + +00:02:05.440 --> 00:02:09.820 +especializa en algo que nosotros determinamos, en este caso, en ir a + +00:02:09.820 --> 00:02:13.940 +buscar contenido en internet y hacer una investigación o en hacer análisis de + +00:02:13.940 --> 00:02:19.320 +datos. Y podemos ver otros más dentro de, eh, el store que + +00:02:19.320 --> 00:02:22.720 +tiene de agentes, pero también podemos crear uno, que esto es lo más + +00:02:22.720 --> 00:02:28.260 +importante o lo más interesante que tenemos acá, donde yo puedo describir + +00:02:28.260 --> 00:02:30.240 +un poco qué es lo que quiero que haga mi agente o lo + +00:02:30.240 --> 00:02:34.240 +puedo configurar tal cual. Y cuando lo voy a configurar, yo le + +00:02:34.240 --> 00:02:37.240 +voy a poner un nombre, le voy a poner un-- una descripción, pero + +00:02:37.240 --> 00:02:41.260 +sobre todo le voy a poner unas instrucciones. Todos los prompts que + +00:02:41.260 --> 00:02:46.290 +hemos ido trabajando, esos prompts son los que yo colocaría en Instrucciones. Entonces, + +00:02:46.290 --> 00:02:53.560 +yo le puedo decir: «Actúa como un analista de datos y cuestióname + +00:02:53.560 --> 00:02:59.080 +los insights que te entregue». Y en el momento en que yo pongo + +00:02:59.080 --> 00:03:04.920 +estas instrucciones, yo acá puedo probar este chat. Entonces, vamos acá a + +00:03:04.920 --> 00:03:13.840 +decirle analista de datos y pongo «mi analista». Y acá tengo la opción + +00:03:13.840 --> 00:03:17.120 +de probar este chat, donde voy a interactuar con él como si + +00:03:17.120 --> 00:03:21.460 +estuviera abriendo un nuevo chat en Microsoft Copilot, pero siempre va a tener + +00:03:21.460 --> 00:03:29.260 +cargado este prompt inicial. Entonces, yo le digo: «El calentamiento global está + +00:03:29.260 --> 00:03:34.740 +matando el mundo». Y él me va a responder teniendo en cuenta que + +00:03:34.740 --> 00:03:37.740 +debe actuar como analista de datos y me va a cuestionar el + +00:03:37.740 --> 00:03:40.650 +insight que le acabo de entregar. Entonces, me dice: «Si el ave-- el + +00:03:40.650 --> 00:03:43.860 +calentamiento global es una amenaza seria y creciente para el planeta, está + +00:03:43.860 --> 00:03:47.400 +provocando ta, ta, ta, ta, ta. ¿Te interesa más como mitigar el problema, + +00:03:47.400 --> 00:03:50.980 +el problema de etc., etc., etc.?» Si seguimos en las configuraciones, yo + +00:03:50.980 --> 00:03:56.360 +además le puedo ingresar conocimiento. Es decir, yo puedo conectar mi OneDrive y + +00:03:56.360 --> 00:04:01.560 +poner información de mi OneDrive o puedo cargarle la información que yo + +00:04:01.560 --> 00:04:06.740 +tengo disponible acá. De hecho, teníamos el ejemplo de... del banco en donde + +00:04:06.740 --> 00:04:10.120 +íbamos a crear una aplicación móvil y teníamos la ley de crediti-- + +00:04:10.120 --> 00:04:13.980 +la ley crediticia de México, y yo se la puedo subir. Y la + +00:04:13.980 --> 00:04:17.880 +diferencia a subir esto al chat es que, en el chat, todos + +00:04:17.880 --> 00:04:20.959 +los documentos que yo subo van a ser parte de su ventana de + +00:04:20.959 --> 00:04:25.860 +contexto. En cambio, dentro de este knowledge que yo estoy dándole, lo + +00:04:25.860 --> 00:04:29.780 +que estoy haciendo es darle una cantidad infinita de archivos que yo puedo + +00:04:29.780 --> 00:04:32.680 +subir y que, al momento en el que yo le haga una + +00:04:32.680 --> 00:04:35.940 +pregunta al chat, él va a tener que primero ir a consultar los + +00:04:35.940 --> 00:04:39.580 +archivos, traer la información relevante, hacer la parte de la ventana de + +00:04:39.580 --> 00:04:44.200 +contexto y con eso sí responder. Entonces, lo más importante de esta parte + +00:04:44.200 --> 00:04:48.000 +es que yo puedo subir todos los archivos que yo quiera acá, + +00:04:48.000 --> 00:04:50.560 +no van a ampliar la ventana de contexto, sino van a ser una + +00:04:50.560 --> 00:04:54.000 +fuente de consulta. Luego, acá yo le puedo dar más herramientas. Puedo + +00:04:54.000 --> 00:04:57.900 +decirle que sea capaz de escribir código, que sea capaz de escribir imágenes, + +00:04:57.900 --> 00:05:05.520 +simplemente comprenderlo o con apagarlo, puedo quitar o, eh, agregar funcionalidades a + +00:05:05.520 --> 00:05:10.860 +esa gente. Y luego, puedo darle opciones de cómo empezar un prompt cuando + +00:05:10.860 --> 00:05:14.500 +esté en la ventana de inicio. Entonces, le puedo decir: «Hola» y + +00:05:14.500 --> 00:05:19.680 +le voy a decir: «Saludo al chat». Y lo que va a pasar + +00:05:19.680 --> 00:05:23.060 +es que aparecen estas opciones que, cuando yo le pico, me llena + +00:05:23.060 --> 00:05:27.580 +el prompt inicial, y eso puede ser un paso para hacerlo más an-amigable + +00:05:27.580 --> 00:05:31.540 +al momento de compartir a todos, eh, las personas de mi equipo. + +00:05:31.540 --> 00:05:35.400 +Con esto ya puedes crear un agente de Microsoft Copilot, compartirlo en tu + +00:05:35.400 --> 00:05:38.430 +equipo y que ese prompt que tú tenías no simplemente se quede + +00:05:38.430 --> 00:05:42.640 +en un documento en Word, sino que se vuelva un chat que cualquiera + +00:05:42.640 --> 00:05:46.300 +pueda usar. Pero hay una herramienta más de Microsoft, que es la + +00:05:46.300 --> 00:05:50.030 +más interesante, que es Copilot Studio. Vamos a ir a ella. Recuerdan los + +00:05:50.030 --> 00:05:54.940 +recursos donde está. En Copilot Studio, yo puedo entrar y puedo también + +00:05:54.940 --> 00:05:58.420 +crear los agentes, lo mismo que acabamos de ver en Microsoft Copilot, y + +00:05:58.420 --> 00:06:01.240 +de hecho, si lo creo allá, lo voy a ver disponible acá. + +00:06:01.240 --> 00:06:06.276 +Pero lo más interesante es que yo puedo crear flujos, flujos de agente.Ahorita + +00:06:06.276 --> 00:06:12.256 +te decía que estos agentes de Copilot Studio y de Microsoft Copilot + +00:06:12.256 --> 00:06:15.616 +no eran la definición formal de agentes. Y la razón es porque siguen + +00:06:15.616 --> 00:06:20.056 +siendo un chat que no pueden tomar acción sobre una herramienta. Con + +00:06:20.056 --> 00:06:24.536 +Agent Flows de Copilot Studio, yo sí puedo crear un nuevo agente y + +00:06:24.536 --> 00:06:28.496 +hacer que se conecte con las aplicaciones de Microsoft y tome acciones + +00:06:28.496 --> 00:06:32.996 +concretas, como por ejemplo, cuando termine la reunión en Teams, tomo el transcript, + +00:06:32.996 --> 00:06:37.116 +genero un resumen y lo envío al correo de todos los asistentes. + +00:06:37.116 --> 00:06:40.276 +Eso sería un agente porque tomó acción. No tuve que ir yo a + +00:06:40.276 --> 00:06:44.336 +decirle: «Mira, acá está el transcript y desde acá, eh, crea un + +00:06:44.336 --> 00:06:48.036 +resumen y luego yo copiar ese resumen y enviarlo, eh, a los correos + +00:06:48.036 --> 00:06:50.196 +de los asistentes». En este curso no me voy a ir a + +00:06:50.196 --> 00:06:53.136 +detalle de cómo se hacen los Agent Flows, pero recuerda que tenemos un + +00:06:53.136 --> 00:06:56.836 +curso de Copilot Studio en donde vemos a detalle todas las configuraciones + +00:06:56.836 --> 00:07:01.396 +que puedes tener dentro de Copilot Studio y cómo las puedes implementar en + +00:07:01.396 --> 00:07:04.916 +la suite de Microsoft en un ambiente empresarial. Ahora vamos a ir + +00:07:04.916 --> 00:07:08.576 +a otra herramienta que se llama Google AI Studio. Este es un playground + +00:07:08.576 --> 00:07:10.956 +muy parecido a lo que vamos a encontrar en OpenAI y en + +00:07:10.956 --> 00:07:17.056 +Claude, que nos permite ciertas configuraciones adicionales directamente hacia el modelo. Ya no + +00:07:17.056 --> 00:07:20.816 +estamos hablando de la herramienta como tal. Estas configuraciones no están en + +00:07:20.816 --> 00:07:25.556 +Microsoft Copilot porque Copilot no tiene un modelo como tal. Usa GPT, que + +00:07:25.556 --> 00:07:28.676 +es de OpenAI, pero en este playground sí lo vamos a ver. + +00:07:28.676 --> 00:07:32.436 +Entonces nos vamos a Google AI Studio. Recuerda que en recursos encuentras los + +00:07:32.436 --> 00:07:37.515 +enlaces para llegar acá. Y vas a encontrar una interfaz muy parecida + +00:07:37.516 --> 00:07:41.156 +a Gemini. Empieza con una caja de texto y esa caja de texto + +00:07:41.156 --> 00:07:47.336 +es poner el prompt y correrlo. Por ejemplo, eh, ¿cuál es la + +00:07:47.336 --> 00:07:54.536 +capital de Estados Unidos? Y lo puedo correr con normalidad, pero quiero que + +00:07:54.536 --> 00:07:58.396 +veas ciertos detalles. Lo primero es que tengo la capacidad de ponerle + +00:07:58.396 --> 00:08:03.396 +un nombre a esto. Este nombre va a identificar como esta mesa de + +00:08:03.396 --> 00:08:08.116 +experimentación, donde yo puedo ir haciendo pruebas y lo, lo importante acá + +00:08:08.116 --> 00:08:10.296 +es que yo lo puedo guardar para recordar qué es lo que yo + +00:08:10.296 --> 00:08:16.116 +estaba experimentando. Acá no se trata tanto de usar el LLM para + +00:08:16.116 --> 00:08:20.056 +consultas como tal, sino para crear los prompts que yo quiero luego llevar + +00:08:20.056 --> 00:08:23.116 +a un agente, luego llevar a un GPT, luego llevar a una + +00:08:23.116 --> 00:08:26.256 +automatización con N8N. Voy a poner el nombre y le voy a poner + +00:08:26.256 --> 00:08:31.636 +Test 1. Puedo ser descriptivo, es lo más importante para no olvidar + +00:08:31.636 --> 00:08:35.596 +qué estoy haciendo, pero para este ejemplo pongámosle Test, y hay un par + +00:08:35.596 --> 00:08:40.216 +de configuraciones que ya tengo disponibles. Primero, yo puedo ver acá, puedo + +00:08:40.216 --> 00:08:44.296 +editar la respuesta del modelo, porque el punto es que esto hace parte + +00:08:44.296 --> 00:08:47.856 +de la ventana de contexto, entonces yo quisiera poder complementar con lo + +00:08:47.856 --> 00:08:51.936 +que no me dio el modelo. Luego yo puedo volver a correr la + +00:08:51.936 --> 00:08:55.496 +respuesta en este logo que se ve acá que dice Rerun. Si + +00:08:55.496 --> 00:08:58.596 +yo le pico, vuelve a correr el prompt y vuelve a darme una + +00:08:58.596 --> 00:09:01.296 +respuesta, ya sea si es diferente o no, según el prompt que + +00:09:01.296 --> 00:09:07.796 +yo ponga acá arriba. Puedo eliminar esta respuesta y entonces limpiar mi ventana + +00:09:07.796 --> 00:09:12.736 +de contexto y volverla a correr, que acá lo tenemos. E incluso + +00:09:12.736 --> 00:09:17.436 +puedo empezar a crear árboles. ¿A qué son esos árboles? Es: tengo un + +00:09:17.436 --> 00:09:21.396 +prompt inicial, tengo una respuesta y quiero empezar a probar diferentes cosas + +00:09:21.396 --> 00:09:26.596 +y poderlas comparar. Entonces, si yo hago esto, puedo ver la versión original + +00:09:26.596 --> 00:09:30.996 +y puedo luego iterar acá y decir: Editar, y le voy a + +00:09:30.996 --> 00:09:40.036 +decir, eh: Capital cultural de Estados Unidos. Lo guardo, lo puedo volver a + +00:09:40.036 --> 00:09:48.536 +correr. Y esto que estoy corriendo ya parte desde el árbol que + +00:09:48.536 --> 00:09:51.876 +yo acabo de crear. Entonces acá me dice: «Acá hay un debate sobre + +00:09:51.876 --> 00:09:55.186 +si es Nueva York», etc., etc., etc., etc. Y luego me puedo + +00:09:55.186 --> 00:09:58.916 +ir al historial, y en el historial puedo ver mi chat original, que + +00:09:58.916 --> 00:10:04.456 +es Test 1, y que se guardó, pero también puedo ver la + +00:10:04.456 --> 00:10:08.736 +rama que yo acabo de crear, como esa variación, que es donde yo + +00:10:08.736 --> 00:10:13.416 +le dije lo de, eh, la capital de Nueva York. En este + +00:10:13.416 --> 00:10:15.976 +caso no se cambió, lo vuelvo, lo vuelvo a cambiar y lo, y + +00:10:16.016 --> 00:10:20.696 +lo guardo. Entonces lo voy a oír acá. Voy a decirle: «Capital + +00:10:20.696 --> 00:10:24.576 +cultural de Estados Unidos». Se guardó el prompt, no lo tenía que editar. + +00:10:24.576 --> 00:10:28.636 +Lo que no se editó fue la-- eh, eh, cuando corrí el + +00:10:28.636 --> 00:10:33.256 +prompt. Entonces lo vuelvo a correr, y ahora voy a tener la respuesta + +00:10:33.256 --> 00:10:36.876 +que estábamos viendo en el otro momento. Ahora veamos un par de + +00:10:36.876 --> 00:10:40.396 +con-- de configuraciones más. Entonces voy a devolverme a chat, se crea un + +00:10:40.396 --> 00:10:43.896 +nuevo chat, y yo acá puedo crear un chat temporal, que es + +00:10:43.896 --> 00:10:47.516 +un chat que va a ignorar absolutamente todo lo que exista acerca de + +00:10:47.516 --> 00:10:50.996 +mi cuenta, todo lo que ha podido, eh, obtener acerca de quién + +00:10:50.996 --> 00:10:54.415 +soy yo y que va guardando en su memoria, y que incluso este + +00:10:54.415 --> 00:10:59.116 +chat se va a borrar una vez yo termine esta sesión. Esta + +00:10:59.116 --> 00:11:02.556 +función es muy útil para tener un ambiente aislado y poder probar algo + +00:11:02.556 --> 00:11:05.596 +que no esté influenciado por ninguna de los otros experimentos que he + +00:11:05.596 --> 00:11:12.236 +hecho. Y también tengo la opción de comparar modelos. Cuando yo comparo modelos, + +00:11:12.236 --> 00:11:15.915 +me voy a ir a ver el detrás de cámaras. Acá yo + +00:11:15.915 --> 00:11:20.876 +puedo escoger Gemini 2.5 Pro, que hablamos que es el modelo que se + +00:11:20.876 --> 00:11:25.236 +da chance de pensar por más tiempo, y también puedo probar 2.5 + +00:11:25.236 --> 00:11:30.036 +Flash, que es el modelo que va a dar respuestas más instantáneas. Y + +00:11:30.036 --> 00:11:33.776 +en este caso tengo la oportunidad de hacer las pruebas al mismo + +00:11:33.776 --> 00:11:37.356 +tiempo sin tener que hacer lo que hicimos en clases pasadas de abrir + +00:11:37.356 --> 00:11:40.875 +un nuevo chat y comparar si no veo las dos una al + +00:11:40.876 --> 00:11:44.156 +lado de la otra y poder tener una decisión. Esto hace ese proceso + +00:11:44.156 --> 00:11:49.456 +un poquito más fácil. Voy a decirle acá: ¿cuál es la capital + +00:11:49.456 --> 00:11:56.156 +de Estados Unidos? Voy a correrlo y me va a dar la respuesta. + +00:11:56.156 --> 00:12:00.436 +Entonces podemos ver que uno está pensando, el otro también. Acá está + +00:12:00.436 --> 00:12:05.316 +teniendo como un paso más de pensamiento. Este fue mucho más rápido porque + +00:12:05.316 --> 00:12:10.656 +el flash es de...Lo más rápido que puedas responder. Y Gemini 2.5 + +00:12:10.656 --> 00:12:13.896 +Pro, que si se da el tiempo de pensar se demoró más tiempo. + +00:12:13.896 --> 00:12:16.716 +Y de hecho puedo ver cuánto tiempo fue: ocho segundos para el + +00:12:16.716 --> 00:12:21.496 +modelo rápido, trece punto cinco segundos para el modelo más lento. Y en + +00:12:21.496 --> 00:12:25.356 +una de las clases estábamos hablando de que los LLMs parten las + +00:12:25.356 --> 00:12:29.256 +palabras en tokens y que la ventana de contextos se mide en tokens. + +00:12:29.256 --> 00:12:32.596 +Y quiero que vean esto que tenemos en el Playground. Tenemos el + +00:12:32.596 --> 00:12:36.816 +conteo de tokens que estamos teniendo en cada ventana de contexto. En este + +00:12:36.816 --> 00:12:40.436 +caso nosotros usamos doscientos treinta y cinco tokens en esta consulta que + +00:12:40.436 --> 00:12:46.576 +acabamos de hacer. Teniendo este comparador vamos a ver la última configuración más. + +00:12:46.576 --> 00:12:52.376 +A este lado nosotros podemos ver configuraciones como temperatura, la resolución que + +00:12:52.376 --> 00:12:56.396 +queremos, las imágenes que se generan, si tenemos habilitado no el thinking mode. + +00:12:56.396 --> 00:12:59.176 +En este caso estamos en un modelo que tiene habilitado el thinking + +00:12:59.176 --> 00:13:04.036 +mode, entonces no lo podemos deshabilitar, pero sí puedo controlar por cuánto tiempo + +00:13:04.036 --> 00:13:07.696 +va a pensar que es ese thinking budget. Y el thinking budget + +00:13:07.696 --> 00:13:12.016 +es cuántos tokens tiene permitido usar para ir a pensar y luego volver + +00:13:12.016 --> 00:13:15.656 +con la respuesta. Entre más tokens le doy, más chance tiene de + +00:13:15.656 --> 00:13:21.556 +pensar, entre menos tokens, más instantánea la respuesta. Y tengo más herramientas y + +00:13:21.556 --> 00:13:25.316 +más configuraciones. En la siguiente clase vamos a ver temperatura y top + +00:13:25.316 --> 00:13:29.796 +P, que son dos configuraciones que controlan la creatividad del modelo. Quiero que + +00:13:29.796 --> 00:13:33.816 +veas algo, así como nosotros en los agentes de Copilot Studio pudimos + +00:13:33.816 --> 00:13:38.856 +ver que le podíamos dar herramientas a nuestro modelo, acá también puedo decirle + +00:13:38.856 --> 00:13:43.636 +que me dé respuestas estructuradas, que ejecute código, que pueda ir a + +00:13:43.636 --> 00:13:48.316 +Google, hacer búsquedas y traer la información. Claramente, en el caso de Microsoft + +00:13:48.316 --> 00:13:53.055 +Copilot sería Bing. Y todas las configuraciones que nos va a permitir + +00:13:53.056 --> 00:13:58.556 +controlar mejor lo que nosotros estábamos haciendo en Gemini, pero ya nosotros decidiendo + +00:13:58.556 --> 00:14:02.136 +qué hace el modelo. Por ejemplo, yo puedo irme solo a consultar + +00:14:02.136 --> 00:14:05.656 +la base de entrenamiento del modelo y ver qué respuestas me da. O + +00:14:05.656 --> 00:14:09.436 +saber que esa información no es actualizada, no es la verdad más + +00:14:09.436 --> 00:14:13.736 +verdadera cuando hago una consulta y habilitar que vaya a buscar internet. Y + +00:14:13.736 --> 00:14:15.576 +eso va a implicar que se va a demorar un poquito más + +00:14:15.576 --> 00:14:19.076 +de tiempo, pero que el resultado va a ser mucho, mucho mejor. Ahora + +00:14:19.076 --> 00:14:22.256 +quiero que nos vayamos a OpenAI y a Claude para ver cómo + +00:14:22.256 --> 00:14:26.156 +se ven esas interfaces, pero básicamente vas a encontrar lo mismo. La opción + +00:14:26.156 --> 00:14:29.996 +de comparar prompts, la opción de probar diferentes modelos entre el modelo + +00:14:29.996 --> 00:14:33.536 +rápido y el modelo de problemas complejos, el que piensa un poquito más + +00:14:33.536 --> 00:14:38.856 +de tiempo. Configuración de temperatura, top P y la posibilidad de agregar + +00:14:38.856 --> 00:14:42.056 +o quitar herramientas que va a usar el LLM al momento de dar + +00:14:42.056 --> 00:14:46.556 +una respuesta. Ahora vamos a irnos al Playground de OpenAI. Recuerda que + +00:14:46.556 --> 00:14:50.216 +en la sección de recursos tienes el enlace para llegar más rápido. Cuando + +00:14:50.216 --> 00:14:53.696 +llegues al Playground vas a encontrar una interfaz así. Acá arriba vas + +00:14:53.696 --> 00:14:57.556 +a encontrar estos botones. Si encuentras el botón de dashboard quiere decir que + +00:14:57.556 --> 00:15:00.836 +ya terminó la configuración de tu cuenta. Si no, va a aparecer + +00:15:00.836 --> 00:15:04.816 +un botón que dice start building o comienza a construir. Le picas, llenas + +00:15:04.816 --> 00:15:08.236 +la información y ya vas a poder ver el botón de dashboard. + +00:15:08.236 --> 00:15:10.936 +Cuando das en el botón de dashboard, en este caso yo estoy en + +00:15:10.936 --> 00:15:13.616 +una cuenta que no tiene una tarjeta de crédito. Entonces cuando le + +00:15:13.616 --> 00:15:17.856 +voy a dar crear me dice: «Ey, debes agregar una tarjeta de crédito». + +00:15:17.856 --> 00:15:21.416 +Y esto es importante. Es diferente si tienes una cuenta paga de + +00:15:21.416 --> 00:15:26.156 +ChatGPT al Playground. En la cuenta paga de ChatGPT tú solo puedes usar + +00:15:26.156 --> 00:15:30.276 +ChatGPT y te cobran tu suscripción mensual y ya está. En el + +00:15:30.276 --> 00:15:35.096 +Playground te van a cobrar por tokens. Es muy poco, casi que un + +00:15:35.096 --> 00:15:38.356 +dólar por cada millón de tokens que usas, pero te van a + +00:15:38.356 --> 00:15:41.996 +cobrar por tokens. En este caso yo ya tengo una cuenta configurada con + +00:15:41.996 --> 00:15:45.096 +un método de pago y cuando le doy crear, llego a una + +00:15:45.096 --> 00:15:48.276 +interfaz muy parecida a la que vimos en Copilot Studio o la que + +00:15:48.276 --> 00:15:51.696 +vimos en Gemini. Yo puedo poner un prompt inicial que va a + +00:15:51.696 --> 00:15:55.276 +ser el prompt con el que el chat se va a configurar. Puedo + +00:15:55.276 --> 00:15:58.776 +dar mensajes como usuario o puedo usarlo como si fuera un agente + +00:15:58.776 --> 00:16:01.985 +o un GPT normal. Y en esta parte de acá tengo todas las + +00:16:01.985 --> 00:16:07.556 +configuraciones que vimos en Gemini Studio. Lo importante acá es que estas + +00:16:07.556 --> 00:16:11.436 +interfaces cambian mucho y lo que debes tú explorar cada vez que cambien + +00:16:11.436 --> 00:16:16.795 +es dónde encuentras esas mismas configuraciones: temperatura, top P, cómo agregas o + +00:16:16.796 --> 00:16:21.176 +quitas herramientas y, en el caso de modelos que tienen razonamiento, cuál es + +00:16:21.176 --> 00:16:25.296 +su esfuerzo. En AI Studio teníamos un thinking budget que se daba + +00:16:25.296 --> 00:16:29.216 +por tokens, pero en este caso tenemos solamente si queremos que el esfuerzo + +00:16:29.216 --> 00:16:32.956 +sea mínimo, bajo, medio o alto, que sería muy parecido a lo + +00:16:32.956 --> 00:16:40.466 +que nosotros veíamos cuando estábamos entrando a ChatGPT y teníamos acá automático, instantáneo, + +00:16:40.466 --> 00:16:44.656 +thinking o pro. Ahora vamos a irnos a Claude. Y en Claude + +00:16:44.656 --> 00:16:48.116 +hay algo en especial. Cuando yo llego acá estoy en la herramienta, no + +00:16:48.116 --> 00:16:51.936 +en el modelo. La empresa detrás de esto es Anthropic y lo + +00:16:51.936 --> 00:16:56.416 +que debo de hacer es entrar a anthropic.com. Recuerden, los recursos están los, + +00:16:56.416 --> 00:17:00.096 +eh, los enlaces y ellos se esfuerzan porque uno siempre usa Claude, + +00:17:00.096 --> 00:17:04.236 +entonces toca encontrar esto que dice API build with Claude. Le doy learn + +00:17:04.236 --> 00:17:07.816 +more y luego acá le doy start building. Te va a pedir + +00:17:07.816 --> 00:17:12.336 +iniciar sesión de nuevo porque son como si fueran cuentas separadas y llego + +00:17:12.336 --> 00:17:17.736 +al workbench. Anthropic tiene algo en especial. Anthropic tiene un generador de + +00:17:17.736 --> 00:17:21.736 +prompts que cuando le pico yo puedo generar los prompts a partir de + +00:17:21.736 --> 00:17:26.076 +describir la tarea que quiero que se haga. Esto es igual como + +00:17:26.076 --> 00:17:29.756 +si tú fueras a Claude o a ChatGPT y le dijeras: «Actúa como + +00:17:29.756 --> 00:17:33.476 +prompt engineer. Tengo este problema, ayúdame a escribir un prompt». Y ese + +00:17:33.476 --> 00:17:39.556 +es un gran tip para poder crear buenos prompts. Entonces, si me devuelvo, + +00:17:39.556 --> 00:17:42.716 +le doy crear prompt y voy a enfrentarme a una interfaz muy + +00:17:42.716 --> 00:17:47.136 +parecida. Acá pasa lo mismo, debes poner una tarjeta de crédito y te + +00:17:47.136 --> 00:17:50.155 +van a cobrar por tokens. No vas a tener el cobro de + +00:17:50.156 --> 00:17:54.336 +Claude porque son dos aplicaciones distintas, igual como lo es ChatGPT con el + +00:17:54.336 --> 00:17:57.496 +Playground de OpenAI donde accedes a los modelos. Y lo mismo que + +00:17:57.496 --> 00:18:01.456 +te decía en OpenAI, estas interfaces cambian mucho. Lo importante es que aprendas + +00:18:01.456 --> 00:18:05.776 +a identificar dónde están las configuraciones que te interesan. En este momento, + +00:18:05.776 --> 00:18:10.616 +esas configuraciones las encuentras en Tools y acá puedes ver las herramientas a + +00:18:10.616 --> 00:18:13.636 +las que les puedes dar acceso. Y en esta parte donde dice + +00:18:13.636 --> 00:18:17.776 +Model Settings, puedes ver los modelos que puedes usar y acá vas a + +00:18:17.776 --> 00:18:20.636 +ver todas las versiones de modelos que hay entre Opus, que es + +00:18:20.636 --> 00:18:23.756 +el modelo que piensa por más tiempo, y Sonnet, que es el modelo + +00:18:23.756 --> 00:18:29.776 +más rápido. Temperatura, cantidad de tokens, si queremos que piense cuál es + +00:18:29.776 --> 00:18:34.216 +el budget de los tokens y desde ahí correr tus prompts. Con esto + +00:18:34.216 --> 00:18:36.736 +en la siguiente clase te voy a explicar qué es la temperatura + +00:18:36.736 --> 00:18:39.256 +y qué es el top P, y vamos a hacer unos ejercicios en + +00:18:39.256 --> 00:18:40.976 +Google AI Studio. + diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..a676a8f1af27bc9dc43ddb44becb336e98adebae --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt.metadata" @@ -0,0 +1,8 @@ +1762796718.8431203 +69 +0 +711d83c40bab4518122ae9cbfbbcb73a9cec47f4bde54ba19b8bab736b9091b5 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..4835f9cc0504ae6e245db5598f043316119f6aee --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.7689216 +210871161 +0 +ab306e883de4877ad6336714c968a420a0ca776a93c738033a75aa188d1b2968 +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..6876c1822edc64ab0f03c83bc09f999d6a101883 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8429253 +16943 +0 +64309e236e42997454cb13b98215d15c61850e14847eaa65ec90d2fc3756a940 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..33a3673757c95814f5f0c8f669eb9addada956b3 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8433287 +596542 +0 +656b48eaf6daee831b4c720dfc01f8738818291b0cd83f0d0998cb2c14b9b5b6 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..ae55efc4f425dfb7720ff73e17a727fb7f34fa58 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.7690637 +174453175 +0 +561e47b45e6f357d0bee9499103234fc22a5ff16be297fecb1e3ebff42b63377 +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..849c29223accd67dc13d4a056e60133b0ec05141 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8435264 +11612 +0 +c7306cf7953399e715698ed048e403e60147078af2fcfefdf947c269aeb37f54 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..47c93ec06b074ce10a76822a1aaa2fc92d151fca --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt.metadata" @@ -0,0 +1,8 @@ +1762796718.8437212 +62 +0 +c2ead92b964b9660e6576fe0ce1d96be80cb9fad4ba7c67fa458a1787fb71da8 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..5ea4f01c775f659a4cc530baa6db537c9f2095da --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8439155 +594682 +0 +0dfabea89b9fa0b80a2dab2c1c4e358652f52b9f9755660747768ce3fe927a69 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..80847d788fa5a9950f8117a0797d16085ce25602 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8440986 +596060 +0 +99d7aa9ac3b4a53a8ba5a1d0c62e3e60816726d4bd5a867961b0fdedfee960ca +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..280f3e561fa5d961e1b3ad384070bac6446640ac --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.7692053 +264338212 +0 +fb873924e477c6a1da9d77d52ba5ed6e37a99480548e918aa657d85ea51b113a +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..a9ca20dbcd295ec24de9eaaad92d1a14f979d281 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.7693577 +192800425 +0 +e2b83ffa4e9d32fd44088b03c347997005eac16bf71f4c83038a79f06d5da7ff +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..bb063ed6478080bae61a35155956046719f14365 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8443673 +13599 +0 +bf1992319359ff1aedf35b1407d4d59fd5b97f204f8df722a2561714081558df +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..c765889ba5a0943623bc7fff0bfcd2c0c153d27d --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8445706 +594855 +0 +f20d987ae337e8765ea055adc762d7e2fa667497c249fa5fc6ff2f618cf096c5 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..a3c1aac3c43c500ab54ad29a02aa447c919b5442 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.769517 +465096382 +0 +4c877255a9b173f261196c8c1ed6e5385978f415a7905bec418490e618ab752d +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..da8ef6eb5a4509832ce67b1929c8e3e4c7479eeb --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8447561 +23916 +0 +1f5dcb1bcc70916a8d2dae5800bb6b934888dc09ca549e9cf9482cdbab6be057 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..3340ff8a51d7287763c6ce53774f020c7817505b --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt.metadata" @@ -0,0 +1,8 @@ +1762796718.844919 +108 +0 +9e5516f1ea15db157cfb663ae866b5f2f17a2ed5b1d4dd88205aaa4d4b4dc8c4 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..d631b1477ff1ff1e5ec29a184c020ab907ce9662 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8450778 +596692 +0 +326c88dd7c1c29150f737b397723ffd70dab9481d202a73149317c6e8f98b64f +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..8f3e61184f9455205b2fcdff0a317889d3332a42 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Lecturas recomendadas.txt.metadata" @@ -0,0 +1,8 @@ +1762796718.8454006 +78 +0 +ecf4bd872ab4107a404f13a979226e58ec511e04bb91712e56efae684ec2760c +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.mp4.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.mp4.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..319e7f7428ab8807deeab329df2cd18024200218 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.769705 +334399745 +0 +f6cbc6dce7a5e9618632bc712446bb4a248b85cc7ffabeffccf2fc32a8609044 +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.vtt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.vtt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..dd2574c1ded72652faa7006583d54dccc9d2f64e --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Qu\303\251 es una red neuronal.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8452423 +19758 +0 +faf44f07696129fea918cd25e6aa377fc18bc18442e5e811012346330d9ff8fd +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Resumen.html.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Resumen.html.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..3183d33befb8515bbb3e469f08ef2ddf70b756bb --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/02-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8455565 +599921 +0 +7eb0a5914f1d396cc1ded9421420c4051c1dacbda04c9bf19d5c2d493e454a97 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.mp4.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.mp4.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.mp4.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.mp4.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..37c157c083379ee614819edf5ca60beb74427060 --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.mp4.metadata" @@ -0,0 +1,8 @@ +1762797052.7700121 +324637685 +0 +cde6761ea6d2ca7627919bef1c23ea47922dbe2ed08614c5e6ee026420baaa84 +lfs + +1 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.vtt.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.vtt.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.vtt.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.vtt.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..e86fc82da73ec1e47cf4cb0741a358032c87f44b --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-C\303\263mo funcionan los LLMs.vtt.metadata" @@ -0,0 +1,8 @@ +1762796718.8457115 +23806 +0 +3440ab08dade686bbe22575414ffe1d8ae06be78490773a636efa48911660ea8 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-Resumen.html.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-Resumen.html.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-Resumen.html.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-Resumen.html.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..0c70aed24d8976016d0b2a7dbd754aa73f33eadb --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/03-Resumen.html.metadata" @@ -0,0 +1,8 @@ +1762796718.8458638 +598279 +0 +5a3dbdeddeb69dda6adc44f0c41dbbd5cb4d28e2b133a76ba32a82cf51e201a0 +regular + +0 +1 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/presentation.mhtml.lock" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/presentation.mhtml.lock" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/presentation.mhtml.metadata" "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/presentation.mhtml.metadata" new file mode 100644 index 0000000000000000000000000000000000000000..e8ba262f72ec6a86c0fc620302fbb64d1fc4af7b --- /dev/null +++ "b/subir/.cache/huggingface/upload/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/presentation.mhtml.metadata" @@ -0,0 +1,8 @@ +1762796718.834764 +3633157 +0 +3e4f0dd469e52b0dd5b4e1202c5a3810875e94c1b0d35049edd78941374bb5e0 +regular + +0 +1