Aprende a utilizar la AI en Programación (para Seniors)

CodelyTV - Redescubre la programación
13 Jun 202353:02

Summary

TLDREn este video se presenta una nueva librería de inteligencia artificial llamada chef.ai que permite integrar IA en lenguajes de programación como C# y Scala de una forma muy sencilla, con solo unas pocas líneas de código. Se muestran ejemplos de cómo hacer consultas a modelos de IA para obtener respuestas, generar imágenes, analizar PDFs e incluso interactuar con bases de datos. La librería será de código abierto y saldrá próximamente. Se destaca lo novedoso e interesante de esta forma de trabajar con IA cercana al lenguaje de programación.

Takeaways

  • 😊 Es una nueva librería para integrar IA en código de forma fácil y potente
  • 💡 Permite usar GPT y otros modelos de IA en Scala, Kotlin y más lenguajes
  • 🤖 Puedes hacer consultas en lenguaje natural y obtener respuestas estructuradas
  • 📸 También permite generar imágenes con IA a partir de prompts
  • 🔁 Usa un sistema de backtracking para que la IA razone mejor las respuestas
  • 🌐 Interactúa con APIs y bases de datos para enriquecer la información para la IA
  • ⚙️ Está pensada para ser multiplataforma y correr en servidores, nubes, móviles, etc.
  • 🔜 Sale en una versión alfa pública el 1 de junio de 2023
  • 👥 Desarrollada por el equipo de Cydia con experiencia en IA e ingeniería de software
  • 🤝 Invitación abierta a contribuir y construir herramientas y utilidades sobre la librería

Q & A

  • ¿Qué librería se presenta en el vídeo?

    -Se presenta una librería llamada chef.ai que permite integrar inteligencia artificial de forma sencilla en lenguajes de programación como Kotlin y Scala.

  • ¿Qué pueden hacer los desarrolladores con esta librería?

    -Los desarrolladores pueden utilizar esta librería para generar texto, imágenes, interactuar con bases de datos y modelos de IA, y muchas otras funcionalidades de forma simple en su código.

  • ¿De dónde proviene la librería chef.ai?

    -La librería proviene de Anthropic, una empresa que trabaja en el campo del análisis estático de código y seguridad.

  • ¿Qué modelos de IA soporta actualmente chef.ai?

    -Actualmente soporta modelos de OpenAI y Anthropic, pero se agregará soporte para modelos locales en las próximas semanas.

  • ¿Cómo se serializan y deserializan los datos con chef.ai?

    -La librería genera un esquema JSON a partir de las clases definidas por el programador, y utiliza ese esquema para serializar y deserializar los datos de forma automática.

  • ¿Se puede usar chef.ai en dispositivos móviles?

    -Sí, gracias a Kotlin Multiplatform la librería puede ejecutarse en iOS, Android y otros sistemas.

  • ¿Cuándo estará disponible la librería chef.ai?

    -Según lo mencionado en el vídeo, la libería chef.ai estará disponible de forma pública el próximo 1 de junio de 2022.

  • ¿Qué otras plataformas soportará chef.ai en el futuro?

    -En el futuro se agregará soporte para otras plataformas como Rust.

  • ¿Cómo se integra la memoria en chef.ai?

    -La memoria se integra a través de un vector store que puede estar en memoria, en un fichero o en una base de datos SQL para almacenar el contexto.

  • ¿Se puede contribuir al desarrollo de chef.ai?

    -Sí, cuando se publique la librería se podrá contribuir con nuevas interacciones y herramientas.

Outlines

00:00

📚 Introducción a la Integración de IA en la Programación

Se presenta una librería revolucionaria que permite integrar inteligencia artificial (IA) directamente en lenguajes de programación, combinando la potencia del lenguaje fuertemente tipado con IA para generar respuestas complejas. Raúl Raja, cofundador de 47 Degrees, ahora llamado Xabia, introduce esta librería, destacando su facilidad de uso y su capacidad para interactuar de manera más natural y eficiente con IA. Los ejemplos mostrados se centran en Kotlin y Scala, preparando el escenario para una previsualización de cómo esta librería cambia la interacción con IA en el desarrollo de software.

05:01

🔍 Ejemplo Práctico y Potencial de la Librería

Se demuestra la aplicación práctica de la librería mediante un ejemplo en Kotlin, donde se solicita la población de una ciudad, mostrando cómo la librería procesa y devuelve datos estructurados de manera inteligente, sin requerir manipulación manual de datos. Este ejemplo subraya la capacidad de la librería para simplificar tareas complejas y cómo puede revolucionar el acceso y la manipulación de datos a través de IA. Además, se discute la precisión de la IA y su capacidad para interactuar directamente con bases de datos o documentos para obtener respuestas contextualizadas.

10:04

🎨 Expansión de Funcionalidades y Compatibilidad

Se exploran funcionalidades adicionales de la librería, como la generación de imágenes y la capacidad para trabajar con estructuras de datos complejas y anidadas. Este segmento ilustra la flexibilidad de la librería para manejar diversos tipos de solicitudes y la integración con diferentes lenguajes de programación, ampliando el alcance de las aplicaciones de IA en el desarrollo. La discusión incluye también la compatibilidad con múltiples lenguajes y la visión futura para la librería, resaltando su potencial para transformar la manera en que se desarrollan y prueban aplicaciones.

15:06

🛠️ Análisis Técnico y Ejemplos Avanzados

Este segmento profundiza en los aspectos técnicos de la librería, mostrando ejemplos avanzados que incluyen la solución de problemas de código y la interacción con bases de datos a través de preguntas en lenguaje natural. Se demuestra cómo la librería puede interpretar y resolver consultas complejas, facilitando tareas como la depuración de código y la extracción de datos. La capacidad de la librería para entender y generar código basado en criterios específicos destaca su aplicabilidad práctica en escenarios de desarrollo real.

20:06

🌟 Conclusiones y Perspectivas Futuras

En la conclusión, se enfatiza la innovación que representa la librería en el campo del desarrollo de software, integrando IA de manera efectiva para mejorar la productividad y la creatividad en la programación. Se discuten los planes futuros para la librería, incluyendo su lanzamiento público y la expansión de su compatibilidad con otros lenguajes de programación. La visión compartida es la de una herramienta que no solo facilita el trabajo de los desarrolladores sino que también abre nuevas posibilidades en la creación de software inteligente y adaptativo.

Mindmap

Keywords

💡Inteligencia artificial

La inteligencia artificial (IA) se refiere al desarrollo de sistemas informáticos capaces de realizar tareas que normalmente requieren inteligencia humana. En el contexto del video, la IA se integra en el lenguaje de programación para automatizar y optimizar procesos, como la obtención de datos o la generación de imágenes. Un ejemplo mencionado es el uso de GPT-3.5 Turbo para realizar predicciones o consultas complejas.

💡Lenguaje fuertemente tipado

Un lenguaje fuertemente tipado es aquel en el que cada variable y expresión tiene un tipo definido claramente que no cambia a lo largo del tiempo. En el video, se destaca la combinación de la potencia de un lenguaje fuertemente tipado con las capacidades de la IA, lo que permite desarrollar aplicaciones más robustas y seguras, al aprovechar las ventajas de ambos mundos.

💡Librería de código

Una librería de código es un conjunto de funciones, clases y definiciones preescritas que se pueden utilizar para desarrollar software, evitando la necesidad de escribir código desde cero. En el video, se presenta una librería que facilita la integración de la IA en la programación, simplificando el proceso de implementación de funcionalidades complejas mediante el uso de pocas líneas de código.

💡API

Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas y especificaciones que permiten que diferentes aplicaciones de software se comuniquen entre sí. En el video, se menciona la utilización de una API para interactuar con la librería de IA, lo que sugiere que se puede acceder a las funcionalidades de la librería a través de llamadas a esta API, facilitando la integración con otros sistemas o aplicaciones.

💡Serialización

La serialización es el proceso de convertir un objeto en un formato que puede ser fácilmente almacenado o transmitido, y posteriormente reconstruido. En el contexto del video, la serialización automática es crucial para la interacción entre la IA y los tipos de datos definidos por el usuario, permitiendo que las respuestas de la IA se mapeen directamente a estructuras de datos complejas.

💡Modelo

Un modelo, en el contexto de la IA, es una representación matemática entrenada para realizar tareas específicas, como predecir resultados o generar contenido. En el video, se menciona el uso de modelos como GPT-3.5 Turbo para generar predicciones precisas, lo cual es central para la funcionalidad de la librería presentada.

💡Generación de imágenes

La generación de imágenes es una capacidad de la IA para crear visualizaciones gráficas a partir de descripciones textuales. En el video, se habla de una funcionalidad de la librería que permite generar imágenes mediante IA, lo que abre nuevas posibilidades para la creación de contenido visual automatizado y personalizado.

💡Interoperabilidad

La interoperabilidad se refiere a la capacidad de diferentes sistemas y aplicaciones para trabajar juntos de manera eficiente. El video destaca la importancia de la interoperabilidad entre la IA y los lenguajes de programación, facilitando la integración de funcionalidades de IA en aplicaciones desarrolladas en distintos lenguajes.

💡Kotlin

Kotlin es un lenguaje de programación moderno que se menciona en el video como uno de los lenguajes compatibles con la librería presentada. La elección de Kotlin (y Scala) como ejemplos demuestra el enfoque en lenguajes modernos y fuertemente tipados para la integración de IA en el desarrollo de software.

💡Escala

Scala es otro lenguaje de programación moderno, fuertemente tipado y funcional, mencionado en el video junto con Kotlin. La inclusión de Scala subraya la versatilidad de la librería de IA, que puede adaptarse a diferentes paradigmas de programación y estilos de desarrollo.

Highlights

Con solo tres líneas de código puedes integrar inteligencia artificial en tu lenguaje de programación

La librería traduce las respuestas de IA a nuestra estructura de datos para usarlas fácilmente

Puedes generar imágenes con IA indicando formato y descripción deseados

La librería permite razonar sobre documentos o videos en lenguaje natural

Se puede configurar el contexto y datos que utilizará la IA para personalizar las respuestas

Funciona con múltiples modelos de IA como GPT-3.5, integrándolos en una misma aplicación

Soportará modelos IA locales para mayor seguridad sin enviar datos externamente

Se lanzará públicamente el 1 de junio de 2023

Tendrá versiones para múltiples lenguajes como Kotlin, Scala, Java, Rust

Permite crear operaciones de alto nivel sobre IA para resolver problemas complejos

Analiza código y te ayuda a solucionar problemas y mejorarlo

Puedes integrar IA con bases de datos para consultarlas en lenguaje natural

Transforma respuestas de texto plano a formatos estructurados como JSON

Cuenta con utilidades auxiliares para interoperabilidad entre lenguajes

Permite contribuir con nuevas funcionalidades al hacerse open source

Transcripts

play00:01

hoy vamos a ver una librería de código

play00:04

que con solo tres líneas te hace que te

play00:06

exploten la cabeza porque vamos a

play00:08

integrar Inteligencia artificial en

play00:09

nuestro lenguaje de programación pero no

play00:11

lo típico de vamos a hacer una llamada

play00:12

por curry me devuelve el resultado no

play00:14

vamos a combinar lo que viene a ser el

play00:16

poderío de nuestro lenguaje fuertemente

play00:18

tipado tenemos tipos de datos con proms

play00:20

juntarle ambas cosas y que nos devuelvan

play00:22

las respuestas de paga a más a más de

play00:24

una forma de una Api para poder

play00:26

interaccionar con esta librería que es

play00:27

súper buena súper fácil pero claro aquí

play00:30

no todos somos expertos sino todos

play00:32

tenemos expertas Ojalá yo pudiera

play00:33

tenerlo también tan a fondo de este tema

play00:35

pero por suerte Contamos a una persona

play00:37

que es súper top es de los programadores

play00:39

más Tops que puede haber el momento hoy

play00:41

en día y encima él entre otras personas

play00:42

ha hecho esta librería que vamos a

play00:44

presentar hoy aquí tenemos a Raúl raja y

play00:46

ha conocido en code y ha estado en otros

play00:48

directos en otros vídeos muy pro de lo

play00:51

funcional cto de forex Seven de gris

play00:53

ahora llamado xabia funcional super top

play00:56

en serio seguirle en Twitter tenéis ahí

play00:58

su enlace en Twitter es muy muy muy top

play01:01

dice todo lo que hace todo lo que ha

play01:02

preparado y hoy lo que vamos a ver ha

play01:04

preparado unos ejemplitos de código que

play01:05

son brutales es lo que decimos de cómo

play01:08

integrar código en O sea ella hay en

play01:11

nuestro código entonces Raúl que yo lo

play01:15

he dicho o sea cómo cómo se hace esto

play01:17

pues primero de todo gracias por la

play01:19

introducción Rafa me halaga yo siento

play01:22

normal que me conoce lo sabe

play01:25

estamos trabajando en la librería de

play01:27

ella eh Y pues

play01:29

estoy trabajando en ella Desde la

play01:32

empresa con mucha gente ya contará un

play01:34

poquito más después pero básicamente lo

play01:36

que como te decía lo que te permite es

play01:38

introducir la ia y directamente en el

play01:42

lenguaje de programación que lo estés

play01:44

usando inicialmente tenemos como tarea

play01:46

una serie de lenguajes y los ejemplos

play01:49

que voy a enseñar hoy pues van a ser en

play01:51

colling y en la escala y nada Cuando

play01:55

quieras podemos empezar Vamos a darle

play01:57

Tenemos aquí la pantallita el código

play01:58

vamos a empezar viendo ejemplo colding

play02:00

esto importante lo que acaba de decir

play02:01

Raúl vamos a ver hoy ejemplos en collin

play02:04

y en escala sorpresas habrán con esta

play02:06

librería porque lo dicho esto es una

play02:08

cosa estamos viendo una pre Release

play02:10

porque aún no ha sido sacado al público

play02:12

ya veremos cuando Esto va a salir para

play02:13

que todo el mundo lo podamos utilizar

play02:14

pero hoy en día esto Solo existe en las

play02:17

máquinas locales de Muy pocas personas y

play02:19

esas pocas personas son la gente que ha

play02:21

creado esta librería entre ellos tenemos

play02:23

a Raúl Así que Raúl Si quieres enseñar

play02:25

una prueba rápida de cómo se utilizaría

play02:26

esto por ejemplo el caso que me pasaste

play02:29

el otro día que vimos de calcular la

play02:31

población de una ciudad Vale pues en

play02:34

este caso lo primero que haríamos sería

play02:36

como estamos utilizando codling vamos a

play02:39

utilizar

play02:40

el plugin ahora explicaré porque es

play02:43

necesario Esto vale vamos a modelar una

play02:47

clase o un modelo en este caso hemos

play02:51

dicho que sería población no pero podría

play02:54

ser por ejemplo eso bueno como ven niño

play02:58

y por ejemplo Podría tener el nombre la

play03:02

que se refiere vale esto sería una

play03:05

estructura típica que estudiamos depende

play03:08

en hexagonal ordenado estaría dentro de

play03:10

la carpeta de dominio que después

play03:11

podemos tener un repositorio a base de

play03:13

datos que fuera a base de datos Y

play03:14

devolviera este population de nuestra

play03:15

base de datos donde llamada Api pero

play03:17

queremos hacerlo un poquito más mágico

play03:19

queremos hacerlo con Inteligencia

play03:21

artificial que es en donde está la magia

play03:22

aquí claro y el enfoque de la librería

play03:24

también es ese no utiliza estos modelos

play03:26

porque lo que intenta es hacer que el

play03:29

programador utilice el aire desde un

play03:31

punto de vista

play03:33

develoment de cuando estás pensando en

play03:36

cómo modelar tu problema qué partes

play03:38

tiene qué estructura tiene en este caso

play03:40

con nuestro problema que es coger la

play03:42

población de algo pues tiene dos

play03:44

requisitos una vez que devuelva la

play03:46

población en sí y otro sería pues Y

play03:49

ahora ya que tenemos nuestro modelo pues

play03:51

lo siguiente sería vamos a hacer un

play03:53

pequeño programita que utilice este

play03:55

modelo y que intente obtener

play03:58

la predicción no de cuál sería el

play04:01

problema sea a lo mejor algo parecido a

play04:03

esto por un lado vemos que estás

play04:06

utilizando copa y ya conoce un poquito

play04:08

por dónde quieres ir y ya te ha puesto

play04:10

cosas de por medio

play04:16

aquí abajo vamos a imprimir de forma

play04:19

diferente

play04:22

por ejemplo

play04:24

es que te va muy bien con pelota a ti A

play04:27

mí no me funciona tan bien me hace más

play04:29

el pájaro muchas veces

play04:31

tienes que pagarlo tío ya estamos Vale

play04:35

entonces línea 9 lo que has hecho una

play04:38

Pro un Pro una función Pro vale como si

play04:40

fuera que estamos en ppt y le estamos

play04:42

escribiendo un texto en La Barrita de

play04:43

abajo y hemos dicho danos la población

play04:45

de Holanda en este caso y entonces

play04:47

después hace un printer n de la

play04:49

población de Holanda es dos puntos y

play04:50

aquí importante response que response si

play04:53

lo vemos tiene el tipo population punto

play04:55

opulation Entonces population estamos

play04:58

haciendo un tipo de datos que hemos

play04:59

creado nosotros antes o sea en teoría

play05:01

esto ha hecho una llamada una Api y ha

play05:03

sabido En qué parte de mi tipo de datos

play05:05

meter esto en la response

play05:07

exactamente Entonces si lo ejecutamos Y

play05:09

tenemos suerte los dioses de los hay no

play05:13

son favorables vamos a ver

play05:16

vale pues aquí te da no sé si la

play05:19

población es correcta seguro que parece

play05:21

que no no

play05:22

17 millones de Bueno sí alucinado un

play05:27

poquito No si puede ser Aquí también

play05:29

tienes que tener en cuenta que hay

play05:31

muchas formas de interactuar con la es

play05:33

interactuar directamente haciendo una

play05:35

pregunta al modelo que en este caso el

play05:38

modelo que estamos utilizando esta gpt

play05:39

3.5 Turbo entonces con este modelo en

play05:43

concreto pues si no tiene más contexto

play05:46

pues va a intentar darte una de las

play05:48

respuestas o indiferencia dado su

play05:50

entrenamiento No pero si por ejemplo tú

play05:53

le dieses más contexto te podría dar más

play05:57

información de acuerdo a cosas que tú

play05:59

has hecho como búsquedas o ingestar

play06:02

datos de una base de datos o de un

play06:03

documento vale mira Comenta la gente que

play06:07

sí que tiene 17.54 millones Así que se

play06:09

ha acercado mucho el tener un trato hace

play06:11

dos tres años Así que está guapísimo

play06:13

pero paremos a pensar y miremos estas

play06:16

tres líneas porque son tres líneas que

play06:18

yo las vi y parecen muy tontas y parecen

play06:19

muy fácil pero que de verdad que pasan

play06:21

muchas cosas aquí detrás O sea que

play06:22

estamos haciendo una petición a opening

play06:24

pidiendo cosas es hacer la petición es

play06:26

que lo que nos devuelve que ya sabéis

play06:28

cuando hacemos un Chrome mensaje PP que

play06:30

devuelve un churrasco de texto o un

play06:31

churco de código es todo aquí se ha

play06:33

sabido Traducir a mi nuestra Estructura

play06:35

de datos Entonces nosotros fácilmente

play06:36

ahora podemos poner aquí punto bupusion

play06:39

pero si buscáramos más datos podríamos

play06:41

añadirlo en el tipo de datos más cosas

play06:42

que lo completaría y la búsqueda sería

play06:44

súper súper rica

play06:46

exactamente primero lo que tenemos que

play06:49

entender es que

play06:50

esta función por ejemplo que hace la

play06:53

serinización automática que se llamant

play06:55

que vemos aquí está dentro del bloque de

play06:58

ella y el bloque de ahí tiene dentro un

play07:01

scom el bloque nos permite es tener

play07:04

acceso a diferentes cosas que se pueden

play07:06

hacer con la iay por ejemplo en este

play07:08

caso pedirle que auto se realice un

play07:12

mensaje pero por ejemplo habría hay otro

play07:16

que se llama

play07:18

no intenta serializarlo sería como una

play07:21

llamada normal a una Api luego tenemos

play07:24

otro que sería como por ejemplo

play07:27

images que podemos ver siquiera la más

play07:29

adelante que es para generación de

play07:31

imágenes Espera que el día que Espera

play07:35

espera también te genera imágenes

play07:36

sí puede hacer generación de imágenes

play07:38

tanto en formatos a medida como extremos

play07:41

has hecho ahora o simplemente decirle

play07:44

regálame cinco imágenes para este en

play07:47

concreto esto es súper top es O sea la

play07:50

cosa no Que se superó o sea es súper top

play07:52

por qué porque es algo que podemos hacer

play07:54

con llamadas a la apis pero no de una

play07:57

forma tan fácil yo nunca había visto tan

play07:59

fácil y tan integrado en el código

play08:00

porque muchas veces decimos de sabes la

play08:03

frase que hay últimamente de la y nos va

play08:04

a quitar el curro la y hay que aprender

play08:06

a convivir con ella y cosas de estas

play08:07

pero esta es la forma de verdad Es la

play08:10

primera vez que yo he visto esta forma

play08:12

tan buena de interaccionar con la

play08:13

Inteligencia artificial y de verdad que

play08:15

nos dé este tan cerca y ya no solo como

play08:18

desarrollo sino también de punto de

play08:19

vista al usuario o sea esto aquí es una

play08:21

forma súper elegante de tener este tipo

play08:23

de broms cuando tenemos un servicio Como

play08:25

si comentas que se pueden hacer imágenes

play08:26

el típico que hay ahora que haces una

play08:28

foto a tu sala y te sugiere una foto

play08:30

mejor o sea un Setup mejor pues todo

play08:32

esto de una forma muy muy elegante que

play08:34

encima Esto lo puedes en infraestructura

play08:36

implementación de repositorio y hay

play08:38

repositorio y queda finísimo esto o sea

play08:40

esto era imposible hace unos años

play08:43

complicado hace unos meses así de fácil

play08:46

es ahora sí

play08:47

la verdad es que sí la verdad es que

play08:50

aparte de tener esta interfaz lo que

play08:53

estamos intentando de aportar encima de

play08:56

lo que serán llamadas a la Api o hablar

play08:57

con modelos que de eso también hay otra

play08:59

librería por supuesto sobre todo en el

play09:01

mundo de python como podría ser el caso

play09:03

de lanchain o muchas de esas que son

play09:05

populares en este espacio si os fijáis

play09:08

aquí lo que ocurre en el código

play09:10

es que

play09:12

esta guía o este bloque de ida en sí

play09:15

mismo segundo lo voy a intentar aquí

play09:19

en sí no es más que una función vale la

play09:24

función suspendida que tiene como recibe

play09:27

que es esta como capacidad especial para

play09:30

la gente que no sabe no tiene concepto

play09:32

de calding suspend que es una función

play09:34

suspendida una función que puede hacer

play09:36

cosas

play09:37

ínfimas y no bloqueante con

play09:39

con código imperativo te permite

play09:42

describir programas que son asíncrono

play09:44

que por ejemplo pueden hacer llamadas

play09:45

apis trabajos que tardan mucho tiempo y

play09:48

acaban después streaming ese tipo de

play09:52

exactamente Es una SIM faction como dice

play09:54

Fabricio

play09:56

esta función asíncrona tiene como veis

play09:59

el tipo del iescope este tipo en sí es

play10:03

el que ofrece esa sintaxis de prompt y

play10:06

todas las funcionalidades que vemos

play10:07

dentro del bloque Y esa funcionalidades

play10:10

lo que nos permiten es pasar esto como

play10:12

funciones son programas que son no

play10:14

evaluados y no es hasta que nosotros le

play10:16

decimos writer

play10:18

por ejemplo en este caso si decimos al

play10:20

bloque de Ya hay que nos dé un aire

play10:22

vemos que el aire que nos devuelve es un

play10:26

aire que contempla tanto el resultado

play10:28

del programa en este caso es unit porque

play10:30

es un pintel en el último steiner como

play10:33

el como el error que potencialmente la

play10:35

ia hay puede lanzar porque la es no

play10:41

determinista imperfecta muchas veces

play10:43

requiere de intercomunicación con el

play10:45

exterior no hay muchas cosas que pueden

play10:47

que pueden fallar aquí importante

play10:49

también decir que no sepa que es un

play10:51

editor es una forma de controlar los

play10:53

errores que tenemos en lugar de utilizar

play10:54

y lanzar excepciones con Raúl hicimos un

play10:57

directo llevándolo a un pasito más allá

play10:59

tenéis el lacito arriba a la izquierda

play11:02

cuando estoy viendo en YouTube y ahora

play11:04

lo paso por el chat para lo que estoy

play11:05

viendo en directo exactamente

play11:08

Entonces nos permite pasar esto como

play11:10

valores y evaluarlo más tarde combinar

play11:12

diferentes bloques de ahí unos con otros

play11:14

Por ejemplo si un bloque de ahí tiene

play11:16

una memoria y otro bloque de ahí tiene

play11:18

otra memoria podemos combinar ambas

play11:19

memorias para que hagan el trabajo

play11:21

juntos ese tipo de composiciones lo que

play11:24

la librería de una forma intenta atraer

play11:29

Hola

play11:31

brutal todo esto por dentro Ah

play11:34

preparamos ejemplitos No aquí más más

play11:36

con más chicha también importante a

play11:38

decir aquí de por medio estamos usando

play11:40

la alegría de openinghai que están

play11:42

experimentando una carga tremenda y que

play11:45

de vez en cuando falla falla bastante

play11:47

sabemos hecho pruebas y de vez en cuando

play11:49

le da por caer según 503 un 500 o un 400

play11:52

lo que sea así que puede ser que hagamos

play11:54

una competición y alguna vez funcione y

play11:55

alguna vez no es un poquito la petición

play11:57

de rodinger no Claro en directo No pasa

play12:00

nada

play12:01

lo otro que hay que tener en cuenta

play12:03

también es que no solamente la librería

play12:06

que os voy a enseñar funciona con

play12:07

opening está hecha para que funcione con

play12:10

diferentes modelos actualmente soporta

play12:12

openias y High Face O sea todos los

play12:14

modelos

play12:16

y vamos a sacar en las próximas semanas

play12:19

del soporte para modelos locales que

play12:22

realmente lo interesante cuando una

play12:24

empresa Cuando alguien quiere hacer ese

play12:26

tipo de trabajo con un entorno seguridad

play12:29

que no sea mandándole datos a opened

play12:31

todo el tiempo no está muy guapo todo el

play12:34

trabajo de i+d que hacéis con este tipo

play12:36

de librerías porque o sea es raro ver

play12:39

una empresa como la vuestra que ha

play12:40

puesto por librerías como pueden ser

play12:42

Arrow como puede ser esta misma pero que

play12:45

a la vez es una inversión de tiempo que

play12:46

también tengo que después eso viene muy

play12:47

bien porque esto y es que esto lo vamos

play12:50

a usar mucho en el día a día no me cabe

play12:52

duda

play12:53

si nosotros lo hemos hecho de hecho para

play12:56

cubrir ciertos casos de uso que

play12:57

queríamos desarrollar con nuestros

play12:59

clientes en el campo de análisis

play13:01

estático que es otro tipo de áreas más

play13:04

relacionadas al lenguaje de programación

play13:05

seguridad al código etcétera entonces

play13:08

ahí teníamos la necesidad de utilizar

play13:09

esta herramienta con ella eh Y como y

play13:13

como parte de eso podemos desarrollado

play13:14

esta librería y vamos a hacer la Open

play13:17

sour y intentar que crecer con ella

play13:19

también para lo que has comentado esto y

play13:21

muchas veces que nuestros clientes

play13:22

quieren enterar y hay en su Flow pues

play13:24

este tipo de librerías lo que necesita

play13:26

para

play13:28

meterla en cualquier sitio y como voy a

play13:30

enseñar ahora mismo Pues multiplataforma

play13:32

está desarrollada en collin

play13:34

multiplataforma con bindings para otros

play13:36

lenguajes y permite eso pues que se

play13:38

pueda ejecutar en iOS en Android en

play13:43

claro si se puede ejecutar en móviles

play13:46

iOS Android y le puedes meter un

play13:49

modelito local eso es brutal claro Esa

play13:52

es la idea es un brutal bueno

play13:57

Raúl pues lo que tenemos un ejemplo en

play14:00

escala para enseñar a eso de que

play14:01

decíamos de que soportamos diferentes

play14:03

lenguajes en este caso un ejemplo

play14:05

bastante sencillo que tiene un modelo

play14:07

que es un caselase y al equivalente que

play14:09

hemos visto antes no se llama amor y

play14:14

después tienen una lista de emojis

play14:17

fijamos en lugar de tener la notación de

play14:20

señalizable pues tiene otro tipo de

play14:21

Boiler Play que hay que hacer para

play14:23

decirle que esto es idealizable que la

play14:26

hay ahí para que lo entienda

play14:28

Y en este caso pues deriva tanto un

play14:31

serial descriptor como un Jason decoder

play14:32

porque luego utiliza Jason por este lado

play14:35

el programa por ejemplo a ver si tenemos

play14:39

suerte

play14:44

Qué bonito dime que me quiere solo que

play14:48

me emojis Qué bonito

play14:51

y pues no sé qué Te puedo enseñar ahora

play14:54

vamos no volvemos aquí o sea súper

play14:58

interesante que una simple hemos

play15:00

cambiado el lenguaje tenemos otro tipo

play15:01

de datos diferente que tienen encima una

play15:03

lista de cosas por lo tanto entiendo que

play15:05

tenéis soportado todas las estructuras

play15:07

de datos simples o sea puede haber

play15:08

listas de cosas pueden haber como ya

play15:11

bastantes strings enteros pregunta puede

play15:14

haber una estructura de datos dentro de

play15:16

una estructura de datos

play15:17

Sí de hecho creo que no sé si la

play15:20

teníamos en alguno de los ejemplos creo

play15:21

que lo tenemos por aquí en alguno pero

play15:26

un momentito vale

play15:29

que tengo

play15:32

hecha de empleado por ejemplo intenta

play15:34

demostrar eso precisamente

play15:37

es una estructura de datos clásica

play15:39

necheada de hecho es la misma que

play15:40

tenemos en el ejemplo de arroz optics

play15:42

que la librería de programación en

play15:45

este ejemplo le dice a ley hay que

play15:49

provea y rellene toda la información de

play15:52

de una estructura que es sensible

play15:55

empleado no y este empleado pues tiene

play15:57

dentro

play15:59

una compañía

play16:01

dentro de la compañía tiene una

play16:03

dirección etcétera no Entonces

play16:06

esto no lo voy a ejecutar ahora mismo

play16:08

porque no lo tengo configurado con la

play16:10

con el token de opening yo si quieres te

play16:12

quito de pantalla para que puedas hacer

play16:13

lo que quieras

play16:15

Bueno sí venga venga ya no está

play16:19

compartiendo cuando tú me digas te

play16:20

vuelvo a pinchar esta pregunta no estaba

play16:22

ensayada o sea de verdad me ha salido la

play16:24

pregunta genuina de si se pueden poner

play16:25

tipos de datos anidados no sabía la

play16:28

respuesta ha dicho que sí hay un ejemplo

play16:29

vamos a ver qué pasa ahora si pone el

play16:31

token y a ver si esto funciona no

play16:33

funciona y cómo funciona me parece una

play16:35

locura Esto me parece un locubrón o sea

play16:38

sobre todo muchas veces cuando estamos

play16:40

haciendo backo Office también y no

play16:42

tenemos datos y queremos reinar datos de

play16:43

cómo quedaría Y antes inventábamos

play16:45

librerías raras ustedes pueden crear

play16:48

cosas muy reales con esto hay muchos

play16:51

muchos venga

play16:58

he dejado primero lo que pasaría si no

play17:01

ocurre

play17:01

el token vale

play17:05

Estoy leyendo que alguien está hablando

play17:06

de la parte seleccionada le voy a

play17:08

explicar

play17:10

estoy viendo que sigáis si te fijas te

play17:13

dice que el toque no está entonces Esto

play17:15

es lo que te hablaba de que la librería

play17:16

en sí tiene un patrón seguro porque ese

play17:19

print que sale en la consola es porque

play17:21

sale porque Héroes no nos deja que

play17:22

reviente el programa en ninguna

play17:24

circunstancia

play17:25

yo siempre estás obligado a tratar el

play17:28

caso en el que pueda haber una idea y

play17:29

error Y qué vas a hacer con ese caso

play17:32

igual que si fuera con la piedra con

play17:34

cualquier lápiz que tú utilices en tu

play17:37

aplicación Pues el mismo mismo concepto

play17:39

no eso no da seguridad Así que está muy

play17:40

bien

play17:41

voy a ver ahora si esto funciona no sé

play17:44

si crucemos los dedos

play17:47

a veces atranca y se tranca Pues también

play17:49

es interesante explicar por qué no vale

play17:51

si miramos de mientras la prom que la

play17:54

has pasado

play17:58

básicamente le he dicho

play18:01

invéntate información para un empleado

play18:03

que incluya su nombre principal

play18:06

secundaria apellido edad posición en la

play18:09

empresa donde vive

play18:13

y allí ponía usa information Provider

play18:15

porque este bromp anteriormente lo tenía

play18:18

puesto para que me buscara en internet y

play18:21

le diera la memoria a la guía ostias por

play18:24

eso te daba eso que si queréis ahora

play18:26

enseño un ejemplo de cómo se puede hay

play18:28

concepto de memoria y concepto de ahí

play18:30

que se puede iterar cositas con

play18:32

preguntas Sí vale el concepto este de

play18:36

memoria por ejemplo lo podemos ver aquí

play18:37

en este otro

play18:39

en este otro De hecho esto no hace falta

play18:42

especializable porque quiero

play18:44

aquí lo que tenemos básicamente estamos

play18:52

cogiendo de internet este documento este

play18:55

documento PDF un PDF que este es el Trío

play18:59

zapp paper que salió recientemente y

play19:01

este PDF básicamente te explica cómo tú

play19:04

puedes hacerle a una guía a un modelo

play19:06

como estos razonar sobre Cómo resolver

play19:09

un problema como si fueran como si fuera

play19:12

un humano cómo lo haría un humano cuando

play19:14

resuelva un problema pues primero tú

play19:16

intentas explorar ciertas ideas que

play19:18

tienes sobre el problema y si ves que

play19:20

cierta avenidas no te llevan por el

play19:22

camino que tú quieres haces Back

play19:24

tracking y vuelve a un punto que más o

play19:25

menos tiene referencia y exploran nuevas

play19:28

avenidas es como un árbol de decisiones

play19:29

no este paper pues te explica cómo

play19:33

implementar el look básico que

play19:36

Qué hace eso no entonces aquí lo que

play19:39

vamos a hacer vamos a ir con la utilidad

play19:41

de context que está dentro de día esto

play19:44

es básicamente aquí lo que estamos

play19:45

generando es un bloque que va a tener

play19:47

una sección de memoria con cierta

play19:49

información que queremos que solo afecte

play19:51

a las operaciones de guía dentro de ese

play19:54

bloque entonces aquí lo que estamos

play19:57

diciendo es con esta función PDF

play20:01

que nos devuelve una lista de strings

play20:03

básicamente implementar tu propia

play20:05

función que devuelva una lista de

play20:07

strings cada String sería un documento

play20:11

pues vamos a ir a coger la URL PDF URL y

play20:16

luego vamos a entrar en un look infinito

play20:18

en la consola donde le vamos a preguntar

play20:20

por el usuario y le vamos a hacer

play20:23

preguntas

play20:25

al básicamente hemos nos hemos hecho

play20:27

entre comillas nuestro propio va a tener

play20:29

aquí y razonando con él en este caso

play20:32

vamos a razonar sobre un PDF aquí hay un

play20:36

problema

play20:39

vale

play20:44

vamos a vamos a hacer un Pro vamos a

play20:47

estar interactuando en este caso con un

play20:49

PDF Pero esto Me está pareciendo algo

play20:51

guapísimo porque ya me estoy imaginando

play20:52

uso en codel y de tenemos un vídeo de

play20:54

code lo podemos ahí y se le sacamos un

play20:56

chat que puedas razonar sobre ese vídeo

play20:58

y sobre Oye me ha hablado ha hablado de

play21:01

esto Sí pero por qué y qué es esto viste

play21:03

otro dato esto puede ser brutal y estoy

play21:06

muchos muchos cosas proyectos del día a

play21:08

día tenemos un ecommerce tenemos el

play21:10

carrito podemos hacer un tronca razones

play21:12

sobre nuestro carrito de Oye de los

play21:15

productos me van a llegar todos mañana

play21:16

sí todo menos este otro eso como usuario

play21:19

es brutal y Normalmente se hago

play21:22

complicado implementar pero en este caso

play21:23

se hace fácil te pincho Raúl venga de

play21:27

eso lo ha hecho del tirón rápidamente ha

play21:30

infectado si te fijas dice

play21:32

20.970 en tokens vale

play21:37

lo siguiente vamos al PDF y esto Pues

play21:41

tiene un viaje de páginas no que

play21:44

hay que inyectar en texto la librería

play21:47

por detrás está convirtiendo el PDF a

play21:48

texto y ese texto pues lo está

play21:51

interesando pero lo tiene que enderezar

play21:52

para el modelo al que tú le vas a hacer

play21:54

preguntas para que sea útil cada modelo

play21:56

Tiene su propia

play21:58

de alguna forma carácter de formas de

play22:01

token o tiene una forma especial donde

play22:04

prefiere consultar y lo que estamos

play22:07

haciendo es meterlo en una base de datos

play22:09

de vectores en este caso está en memoria

play22:13

pero también tenemos implementación para

play22:15

postres y para otras bases de datos

play22:17

también y lo que haces es que cuando tú

play22:20

haces una búsqueda ahora y le haces una

play22:22

pregunta intenta coger del contexto que

play22:24

ha aprendido la información necesaria

play22:26

para dársela a la guía y que la guía

play22:29

pueda responder

play22:31

tu pregunta no Por ejemplo si lo hacemos

play22:33

La pregunta es qué guapo es eso

play22:46

a ver si tenemos suerte esto no siempre

play22:48

funciona porque esto al final siempre

play22:50

depende de cómo esté bien indexada y

play22:51

como buena sea tu base de datos a la

play22:53

hora de coger la información pero si

play22:55

tenemos suerte ya encontrar el contexto

play22:57

adecuado

play22:58

a lo mejor nos da una una respuesta

play23:01

vamos a ver suele tardar mucho esta

play23:03

petición suele tardar poco

play23:07

es que dependiendo también de la

play23:09

cantidad de respuesta que te tarda o no

play23:11

Ya entonces básicamente no ha dicho pues

play23:15

del PDF de que va el framework en que

play23:19

está inspirado etcétera entonces esto

play23:21

sabemos que funciona Porque este paper

play23:23

ha salido recientemente no es contenido

play23:26

anterior al 2021 o de lo que tenían

play23:31

entonces potencialmente pues así puedes

play23:33

integrar datos reales con tu aplicación

play23:36

de ella simplemente eras un context que

play23:40

tenga los datos que necesitas que la

play23:41

guía utilice para responder

play23:44

me parece ilegal de lo fácil que es

play23:47

hacer esto Raúl o sea cómo puede ser tan

play23:49

fácil esto O sea cómo Abre tantas

play23:51

puertas Aunque es tan facilito os habéis

play23:53

pegado un currazo aquí detrás pero

play23:55

brutal ahora vamos a ir a ver el tema de

play23:57

la esterilización de ser realización

play23:59

cómo funciona todo por dentro un dato te

play24:02

voy a dar Raúl no sé si conoces tú

play24:04

conoces

play24:07

aquí lo ves la conferencia de bcn No

play24:10

pues mira normal que no conozca pues ese

play24:13

primer año que se hace ahora en

play24:14

Barcelona antes se llamaba la jbc de

play24:16

comf que está en mundo junto a mí

play24:18

entiendo que un poquito más él ha

play24:20

cambiado el nombre se llama y se han

play24:22

abierto más lenguajes a fronting y más

play24:23

cositas y se celebra el 3 al 5 de julio

play24:26

y da la casualidad que estamos sorteando

play24:28

una entradita es tan fácil como aquí va

play24:31

voy a darle a tuitear un tweet de sorteo

play24:33

de entrada Simplemente tienes hacer un

play24:35

reto al tuit y seguirá Cody y a la

play24:37

cuenta de bcn y mañana antes de las 6

play24:40

más o menos haremos el sorteito a ver

play24:42

que le toca valorada la entrada en 450

play24:44

euros Así que yo hago aquí el tweet cojo

play24:48

el lacito os lo paso en serio el año

play24:51

pasado fuimos a jvcn estuvo súper guapa

play24:53

y este no tiene pinta que era de bcn

play24:55

siendo más generalista y también

play24:56

incluyendo más mundos va a estar muy muy

play24:58

potente Así que muy recomendado y ahí

play25:00

tenéis el lacito para hacerle retuit y

play25:02

empezar a ir así que seguimos Raúl con

play25:05

tu codiguito

play25:08

cuenta Cuéntame aquí un poquito por

play25:10

dentro las entrañas O quieres ir a ver

play25:12

otra cosita antes si quieres te enseño

play25:14

rápidamente La imagen que también es

play25:16

fácil así más sencillito

play25:19

venga Venga pues otra de las fichas que

play25:22

tenemos es que dentro de scope no

play25:24

solamente puede hacer Chrome para

play25:25

modelos textuales de hecho el objetivo

play25:27

es que de Cara a futuro soporte

play25:29

cualquier modelo incluso modelos que son

play25:31

multimodales Eso quiere decir que en una

play25:33

misma petición le puede Enviar texto

play25:36

imágenes o potencialmente vídeo etcétera

play25:39

y también como respuesta podrías obtener

play25:42

diferentes tipos de contenido del modelo

play25:46

Entonces por ahora

play25:50

me imagino los comentarios abajo de

play25:52

Rafael estás interrumpiendo todo el rato

play25:53

al Raúl diciendo que todo es muy guapo

play25:55

ya lo sabemos pero es que sí lo siento

play25:56

es que todo es muy guapo

play26:00

nada eso que

play26:02

esperamos soportar de todo tipo de que

play26:06

se pueda soportar en relación a cómo

play26:08

pueda interactuar con un modelo de allá

play26:09

y no en este caso pues tenemos el

play26:12

soporte de imágenes aquí le podemos

play26:14

hacer cualquier pregunta por ejemplo en

play26:16

esta

play26:18

estamos diciendo un Storm Shooter

play26:20

Imperial hablando con spongebok en

play26:23

instagram fotografía realista y este

play26:27

caso en concreto el modelo por defecto

play26:29

es

play26:30

Dalí

play26:32

Supongo que la generada con Dalí Y si

play26:34

tenemos suerte pues

play26:36

nos dará si os fijáis por ejemplo en

play26:39

este caso tenemos images estamos

play26:41

pidiendo que nos devuelva tres imágenes

play26:43

le puedes pedir que te devuelva a las

play26:46

que quieran

play26:47

y aquí tenemos pues tres imágenes que ha

play26:49

generado

play26:51

en esta misma

play26:56

vale vale

play27:04

vale

play27:06

Estos son ejemplos zorras no que

play27:08

básicamente los puedes hacer con

play27:10

cualquier lápiz y eso pero el hecho de

play27:12

que luego lo puedan modelar con tu

play27:13

dominio significa que tú imagínate

play27:16

podrías tener tu aplicación de Jetpack

play27:18

compost to you I lista para recibir

play27:20

modelos Y hacer que la hayáis rellene

play27:23

Trozos de los modelos para testing o

play27:26

para lo que quieras o podría utilizar

play27:28

datos generales generado al principio de

play27:31

testing de esto para hacerte más

play27:34

fidedigno de lo que estás deseando eso

play27:37

es potentísimo o sea para el tema de

play27:38

testing en lugar de utilizar los object

play27:40

con el típico faker detrás que usamos

play27:42

utilizar estas tipo de peticiones sí que

play27:44

es verdad que ahí Creo Supongo que será

play27:46

más el momento que tengamos el modelo

play27:47

local Así que para todos ustedes tenemos

play27:49

que hacer una petición

play27:54

mira un eurito un eurito un eurito claro

play27:59

no hay casos por ejemplo te quería

play28:01

enseñar un caso que este no lo había

play28:03

ejecutado porque esto básicamente se

play28:05

puede ir de madre horas vale que lo

play28:08

ejecutas pero enseñar un poco la

play28:09

problemática no ciertas preguntas son no

play28:12

muy deterministas por la ella entonces

play28:15

si en este caso le estamos preguntando

play28:16

que nos diga el número de agujas

play28:19

medicinales utilizada en el mundo la

play28:22

típica pregunta que te hacen en una

play28:23

entrevista de Google o empresas todo

play28:25

tochas que no tiene respuesta pero es

play28:26

para ver cómo piensas claro cualquiera

play28:28

que estamos haciendo Estamos buscando en

play28:30

internet con un tipo de búsqueda

play28:32

parecida y todo lo que estamos

play28:33

encontrando lo que hace internamente es

play28:35

hace crawling de los resultados y con

play28:38

los resultados trae toda todos los

play28:41

resultados de la información a memoria

play28:42

Pero esto potencialmente nunca te daría

play28:45

una respuesta que fuese fidedigna no

play28:47

Entonces por qué porque a lo mejor no lo

play28:50

puede estimar Y si tú lo estás pidiendo

play28:52

que lo hagas con esa actitud te diría

play28:54

que no si no te dirías un estimado no

play28:56

pero hay una forma que de controlar de

play28:59

alguna forma lo que se llama la

play29:00

temperatura u otros parámetros

play29:02

del from Y es que esta función de proms

play29:06

si nos fijamos tiene cosas como

play29:08

temperatura

play29:10

cuantos documentos traer del contexto

play29:12

para la memoria cuando quieren resolver

play29:14

la respuesta

play29:16

y ahora mismo esa temperatura que está

play29:18

puesta a 0.0 lo cual le está diciendo al

play29:21

modelo que sea muy poco creativo que se

play29:24

ciña a la respuesta No pero si quieres

play29:27

que sea más creativo pues le darías un

play29:29

valor más alto como si fuera por ejemplo

play29:31

uno o cero con nueve O algo parecido así

play29:35

como siempre cuando jugamos con temas de

play29:38

temperaturas también implica una

play29:40

creatividad mayor por lo tanto un nivel

play29:41

de alucinación a veces mayor también

play29:43

totalmente

play29:45

y aquí ahora sí quería vencieron un

play29:48

ejemplo de una implementación tenemos un

play29:51

ejemplo en el repositorio

play29:54

aquí que ya lo podréis ver más adelante

play29:56

Este ejemplo implementa lo que hemos

play29:59

hablado antes

play30:00

del paper del triozar de cómo decirle a

play30:04

una de ellas y qué razones para para

play30:07

resolver un problema Y si aparece bien

play30:09

pues

play30:10

lo podríamos

play30:13

mirar juntos intentar ejecutarlo no sé

play30:16

venga

play30:18

no sé si hay preguntas hasta ahora si

play30:19

quieres también podemos responder

play30:21

algunas de las preguntas

play30:26

Pues aquí lo que vamos a hacer es hay un

play30:30

hemos hecho que una implementación que

play30:31

sale del test sobre Cómo resolver un

play30:34

problema

play30:35

en donde quieres más allá que una simple

play30:37

respuesta de la ia

play30:39

y aquí en este problema le vamos a decir

play30:41

a la guía que es una experta en

play30:44

programación funciona vale en un canal

play30:47

de excepciones que nunca utilizan

play30:50

cuando es necesario vale que no puede

play30:54

utilizar loops o Wild o lo que sea que

play30:56

prefierever recortion y que nunca usa

play30:59

estado mutable vale o sea la línea 12

play31:02

eres una experta de pronunciación

play31:05

funcional y te ciñes a las reglas nunca

play31:07

te sales de ellas claro exactamente

play31:09

entonces luego le decimos Pues que

play31:11

encuentre problema en un código dado una

play31:15

un control de código que le vamos a

play31:17

mandar aquí que es problemático

play31:20

y a ver si hay una con el problema del

play31:23

código A ver vamos a ver estamos

play31:26

haciendo una lista que puede ser que no

play31:28

exista no O sea pues

play31:29

que no esté dentro de la lista

play31:31

exactamente

play31:33

reventaría pero tu compilador Pues algo

play31:35

que no es capaz de

play31:37

detectar normalmente

play31:39

entonces básicamente lo que tenemos

play31:42

ahora un framework que voy a enseñar

play31:43

cómo funciona por dentro vamos a

play31:45

intentar ejecutarlo primero a ver si

play31:46

funciona o no vamos a ver

play31:53

vale

play31:56

janelix Te pincho Ponce el token en

play31:59

codelly nunca helix y con elix borramos

play32:02

la clave de inmediato así no pasa nada

play32:05

vale un momentito nada más sí sí sí sí

play32:07

play32:10

bastante más compleja pues es enfocada

play32:13

también al modo desarrollador de tengo

play32:15

un Back con mi código ayúdame a

play32:17

solucionarlo pero lo importante aquí

play32:19

aunque no sea un vídeo de cómo hacer

play32:21

proms es ver cómo hemos hecho esta

play32:22

Chrome porque es una Chrome donde hemos

play32:24

dicho Oye eres una experta funcional a

play32:26

partir de aquí no usas ni esto ni esto

play32:28

ni esto porque el código que queremos

play32:29

que generes queremos que cumpla este

play32:31

estándar de calidad Entonces te pincho

play32:33

sí perfecto ya estamos ahí

play32:38

Vale qué está pasando aquí aquí pasa una

play32:41

serie de cosas que se muestran más

play32:44

fácilmente viendo la función que

play32:46

implementa todo esto

play32:49

Y esta es la función principal le voy a

play32:52

contar un poquito Pues cómo funciona

play32:53

cómo sería una función más compleja que

play32:55

trabaja con liay de los ejemplos que

play32:57

hemos visto no para hacer algo que sería

play32:59

muchísimo más interesante a la hora de

play33:01

ofrecer una funcionalidad para una

play33:03

aplicación no Entonces ahora Estamos

play33:05

dentro del mismo ficherito donde

play33:07

estábamos antes pero más para abajo con

play33:08

una función que hemos hecho nosotros

play33:09

estamos dentro aquí tenemos en el

play33:11

ejemplo tenemos el resto de archivos y

play33:15

estamos dentro del archivo Problem que

play33:17

es la que tiene el Main Loop y ahora a

play33:19

partir de aquí al resto de archivos para

play33:21

que veáis de que se componen

play33:23

principalmente perfectísimo entonces

play33:25

aquí lo que tenemos es esta función que

play33:27

se llama resolver recursivamente Y esta

play33:31

función en un momento dado se llama a sí

play33:32

misma y ahora explicaré por qué hace

play33:34

esto Entonces cuando esta función le

play33:37

pasamos un problema lo primero que hace

play33:39

es chequear si hemos

play33:43

intentado resolver ese problema más de

play33:45

el número de veces permitido Entonces

play33:48

por defecto diciendo que lo intente

play33:50

cinco veces y después de cinco veces

play33:52

pues ya que lo olvide

play33:54

entonces aquí sería el caso base que el

play33:58

caso que para la revolución que sería si

play34:00

el si hemos terminado pues la solución

play34:03

es que no es falsa y que no hay una

play34:04

solución correcta

play34:06

de lo contrario pues empezamos a

play34:08

resolver un problema y lo primero que

play34:10

hacemos es coger una señal de control

play34:13

para nuestro problema qué es esto Qué es

play34:16

una señal de control una señal de

play34:17

control Es que le pedimos Ai que nos dé

play34:20

una idea de cómo resolvería ese problema

play34:22

no le pedimos que se lo resuelva todavía

play34:24

primero lo tenemos que hacer qué razones

play34:26

sobre lo que intentamos que resuelva

play34:28

Entonces primero le decimos que dado

play34:32

este problema y esta historia de

play34:34

resolución posterior a este problema

play34:37

Generalmente una forma de resolver este

play34:41

problema con un texto o algo que tenga

play34:43

que hacer Qué guapa está prom Qué guapa

play34:45

o sea gente aquí estáis Aquí viendo Este

play34:47

vídeo apúntate esas promo porque son oro

play34:49

para utilizar este tipo de cosas ahí hay

play34:52

que hacerle reflexionar Realmente si

play34:53

quieres que sea que entienda el problema

play34:56

que está resolviendo en contexto no

play34:58

Entonces esta señal de control lo

play35:00

primero nos da la señal de control y lo

play35:01

siguiente que hacemos Es que vamos a

play35:03

generar una solución para eso con esa

play35:06

señal de control y entonces hacemos lo

play35:08

mismo le decimos a la guía que ha dado

play35:10

la historia anterior y dado el problema

play35:13

y dado la señal de control que provea

play35:16

una solución comprensiva que se adecue a

play35:20

como nosotros queremos que el problema

play35:22

sea resuelto

play35:24

entonces esa solución una vez que la

play35:27

tenemos la chequeamos chequeamos es

play35:30

fácil si es válida Pues vale Y entonces

play35:33

ya podemos seguir para adelante lo

play35:34

siguiente

play35:35

y si es válida la criticamos

play35:40

que le criticamos la criticamos es lo

play35:43

mismo le decimos a la ida tú eres una

play35:45

visor experto

play35:48

Y entonces le decimos que tiene que

play35:50

razonar sobre sobre esta solución que

play35:52

hemos generado según la descripción el

play35:54

problema y todo lo que tenga en memoria

play35:56

relevante y que critique si realmente la

play36:00

solución cumple el objetivo original o

play36:02

no

play36:03

Entonces sería entre comillas Se podría

play36:06

decir un poco que es como el test para

play36:08

la resolución que ha hecho la propia Y

play36:10

entonces Lite hacerla la posible

play36:12

solución un test para ver si pasa y si

play36:14

pasa Pues todo bien y si no pasa es esa

play36:17

línea de Back tracking de Volvemos a

play36:18

empezar pero con más contexto que antes

play36:20

exactamente entonces lo que te quiero

play36:22

decir es que el acto de hacer Chrome y

play36:25

obtener una predicción es lo más base

play36:26

que hay de interactuar con ella pero

play36:28

luego hay operaciones más generales que

play36:30

tú puedes crear como esta esta sería

play36:32

resolver problemas hay otra que sería

play36:34

sumarizar texto o lo que tú quieras toda

play36:36

esa operaciones generales las puedes

play36:38

crear simplemente con la operación base

play36:41

Pro eso todo que todo lo que estoy

play36:43

enseñando no es parte de la librería

play36:45

esto es un ejemplo que hemos codificado

play36:47

y que utiliza la librería para para

play36:50

hacerlo y entonces aquí en el caso de

play36:52

que cumpla el objetivo pues ya devuelve

play36:55

el objetivo y si no recursivamente si

play36:58

veis aquí que recursiva la llamada se

play37:01

llama para un round menor

play37:04

hacer otro intento de nuevo para para

play37:07

resolverlo entonces eso es la base del

play37:10

programa No tiene más historia y eso nos

play37:13

permite pues por ejemplo hacer una

play37:15

resolución

play37:16

de esto no sé si termina ya todavía

play37:21

vale Sí no terminaba no entonces lo que

play37:24

hemos dicho que ocurría que primero era

play37:26

una señal de control

play37:29

lo voy a hacer a la solución

play37:31

luego después de generar la solución la

play37:34

está validando cuando la he encontrado

play37:36

la ha criticado

play37:39

y una vez que la ha criticado y ha

play37:41

determinado que es correcto que la

play37:42

valida es correcta pues ha cambiado la

play37:46

función original a una función que ahora

play37:48

no tiene el problema que decíamos porque

play37:50

en lugar de utilizar get utilizar gettor

play37:52

null y devuelve el entero

play37:55

durable pues qué guapo esto Raúl y no sé

play38:01

si estés pensando porque esto es lo que

play38:02

has dicho esto es un ejemplo de código

play38:03

Esto no es la librería no si estás

play38:05

pensando también este tipo de ejemplos

play38:07

de código que te dan funciones

play38:08

utilidades de dejarlas en librería o

play38:12

otra librería que sea una capa encima de

play38:14

la librería para este tipo de utilidades

play38:16

porque es O sea yo me imagino tener esto

play38:18

es súper cómodo Y eso Y si ya está

play38:20

picado y ya este nivel que no quedes un

play38:22

ejemplo sino que queden algo muy

play38:23

utilizable Sí si quieres también Te

play38:26

puedo enseñar algún otro ejemplo sin

play38:28

ejecutar más de otros patrones que

play38:30

tenemos por ejemplo en este caso

play38:33

Este es un ejemplo que muestra cómo

play38:35

sería una interacción con una base de

play38:37

datos

play38:38

entonces aquí tenemos simplemente una

play38:40

interacción con jdc que le damos nuestra

play38:44

configuración para conectar una base de

play38:46

datos por defecto tenemos en mi sql

play38:50

y esta interacción de base de datos

play38:53

lo que hace es que con esta

play38:57

configuración puede traducir

play38:59

cualquier pregunta que tú le hagas sql

play39:03

primero coger información se la trae la

play39:06

memoria y entonces responde la pregunta

play39:08

Entonces si tú por ejemplo tienes una

play39:10

base de datos que va sobre yo que sé

play39:11

apuestas o yo que sé o lo que sea no

play39:16

cualquier tipo de información que tenga

play39:18

pues Le puedes preguntar a la base de

play39:20

datos Oye cuál sería la apuesta con

play39:23

mayor nivel de volumen de pujas

play39:28

esa pregunta en lenguaje natural primero

play39:31

le preguntan ahí cómo se hace esto en

play39:33

sql basado en el esquema de esta base de

play39:36

datos con este esquema y ahí entramos un

play39:39

poco en cómo funciona que los datos sea

play39:42

se realicen automáticamente no se trata

play39:45

de todo siempre dependiendo del modelo

play39:47

hay modelos que están entrenados para

play39:48

hablar Jason y

play39:50

cuando tiene respuesta la puedes

play39:52

realizar a un formato de datos

play39:54

correcto hay otros modelos como charpt

play39:58

que no que son más de generadores y los

play40:01

tienes que entrenar Entonces estos otros

play40:04

modelos nosotros lo que hacemos Es que

play40:05

le pasamos el Jason esquema general

play40:08

de la de la estructura del dato y le

play40:12

decimos responde con este esquema y

play40:15

luego alteramos algunos parámetros como

play40:16

el logins para hacer que ciertos

play40:19

caracteres la respuesta tengan más

play40:22

pueden aparecer con más frecuencia como

play40:25

puede ser los caracteres de Jason o los

play40:28

caracteres de la respuesta de los campos

play40:29

con los nombres de las propiedades de

play40:32

los campos Entonces el modelo Tiene una

play40:33

como una de predisposición a responderte

play40:35

de esa forma pero es un Pro también

play40:39

donde como los que hemos visto antes

play40:40

donde tienes que entrenarlo a que te

play40:43

responda con Jason esto cambia muchas

play40:46

cosas Esto hace que cuando quieres

play40:48

teorizar claro muchas veces pasa Oye

play40:50

Quiero saber no se me ha quedado en Cody

play40:52

vale el curso más hecho después de haber

play40:55

hecho este otro curso en la queery tiene

play40:58

para pensar con joints que no sé qué con

play41:00

no sé cuánto aquí es un textito ya tiene

play41:03

todo por debajo todo esto para dar las

play41:05

vueltas y ver que el resultado es bueno

play41:07

y te dará O sea que brutal te facilita

play41:11

muchísimo la vida

play41:12

interfaz de búsqueda también para el

play41:15

tema de eso de empresas que quieren

play41:17

sacar datos lo que pasa es que la

play41:18

seguridad siempre aquí importante Por

play41:20

ejemplo tal cual está hecho este ejemplo

play41:21

que no tiene la seguridad en

play41:23

consideración este ejemplo tú te puedes

play41:25

preguntar cosas como Cuáles son los

play41:27

usuarios y passwords de la base de datos

play41:30

Y si no estuviera apropiadamente

play41:32

encriptado pues le daría la respuesta

play41:34

básicamente

play41:35

siempre al final es cuánto le de

play41:37

contexto pues lo que condiciona Cuánto

play41:39

está exponiendo para ir

play41:42

quizá otro ejemplo por aquí interesante

play41:44

sería este

play41:49

bueno

play41:50

[Música]

play41:54

y también importante lo que comentan en

play41:57

el chat o un delete ahí de por medio hay

play42:00

como siempre si vamos a darle acceso a

play42:02

nuestra ahí para que tenga acceso a base

play42:04

de datos y pueda hacer repeticiones de

play42:05

verdad como siempre un usuario

play42:07

capacitito que pueda hacer sus

play42:08

operaciones porque problemas pueden

play42:11

pasar y nosotros lo podemos liar

play42:12

bastante

play42:15

sí creo que no tengo más ejemplo ahora

play42:18

mismo así para ejecutar aquí Vale pues

play42:20

vamos a ver por dentro cómo está el izar

play42:23

Muy bien pues para dar un poco de

play42:26

contexto lo que hablábamos antes el

play42:27

bloque de ia y en sí no es más que una

play42:30

función que como decíamos tiene ley hay

play42:34

scope y dentro de ese bloque pues se

play42:37

inicializan una serie de servicios de

play42:39

momento por defecto tenemos lo que

play42:41

utilizamos eso y como decíamos antes

play42:43

pues esto es una librería Colin

play42:45

multiplastform necesitamos keytor

play42:47

playing Para algunas llamadas http

play42:52

Y tenemos esa noción del vector Store

play42:54

que sería la memoria que es lo que tú

play42:56

puedes luego utilizar dentro de tu

play42:58

bloque

play43:01

y todos encapsula Pues en un gran con

play43:04

ella escope que sería

play43:06

a las operaciones que tiene dentro del

play43:09

bloque no

play43:11

Esa esa memoria está en memoria está en

play43:14

un fichero Puedes configurar cómo

play43:15

quieres que sea esa esa memoria hay

play43:19

varias implementaciones esto es un

play43:20

vector Store que sería un interfaz base

play43:22

y tenemos pues varias ahora mismo por

play43:25

ejemplo tenemos una que sería basadas en

play43:27

luces para búsqueda que lo puede hacer

play43:29

tanto de luz en distribuido como en

play43:30

luces local

play43:32

tenemos un local vector Store que es

play43:36

básicamente

play43:36

listas mutables y mapas mutables de

play43:39

memoria manejando los bytes y luego

play43:43

Tenemos también un vector que sería

play43:46

basado en una base de datos sql

play43:52

creo que preguntan el editor utilizo

play43:54

Intel idea pero esta es la versión

play43:56

Ultimate con el tema light

play44:01

y el Front en sí que sería la lo que tú

play44:05

preguntabas antes de

play44:08

un ejemplo aquí de pronto si de dónde

play44:13

está la magia de saber Cómo transformar

play44:14

un dato en otro dato

play44:18

sí toda la llamada pronto

play44:20

acaban

play44:22

en esta parte

play44:25

donde le decimos específicamente

play44:27

devuelve la línea en una sola línea sin

play44:31

caracteres adicionales Utiliza este

play44:33

Jason esquema que hemos generado para tu

play44:35

tipo de datos para que responder de

play44:39

forma adecuada le decimos que escape los

play44:42

porque muchas veces cuando tú le dices

play44:44

allá y que te suma te quería un texto

play44:46

queremos que lo meta en Jason pero como

play44:48

te lo va ya formateado te va a meter el

play44:51

trastorno de carro y ciertos caracteres

play44:53

que quizás rompan la estructura de

play44:56

Entonces es importante que el String

play44:58

estén escapado en Jason de forma

play45:01

adecuada y cuando se realizamos como

play45:04

veis Esto no es bulletproove de momento

play45:07

es imposible hoy en día no que fuera

play45:10

huele proof esto no Pero creo que se

play45:13

está acercando cada vez más funciona más

play45:16

y más O mejor de alguna forma y como te

play45:19

decía va a haber otra alternativas que

play45:20

no sea el Pro sino que va a haber modelo

play45:22

específico que se realizan en James nos

play45:23

acogen el texto de otro modelo y única

play45:26

escoger ese modelo y encajarlo en esta

play45:29

estructura

play45:31

así facilita bastante Entonces cuando

play45:33

tengamos eso pues no habrá que hacer

play45:35

estos reintentos de momento lo que

play45:36

hacemos Es reintentamos recursivamente n

play45:39

veces según un máximo creo que son cinco

play45:41

a intentar corregir la respuesta ver si

play45:46

le faltan brackets si le faltan cosas de

play45:48

Jason que la respuesta de la guía no ha

play45:51

incluido no pero básicamente funciona de

play45:54

esa forma y luego como si lo he

play45:57

entendido bien para que me hagan tu

play45:59

leche en ver lo que está pasando Es que

play46:01

estamos generando un esquema en base a

play46:04

nuestros nuestras clases que hemos hecho

play46:06

nuestras clases por eso tienes que ser

play46:08

deslizable se genera un Jason esquema a

play46:09

partir del cual sabemos cómo entender el

play46:11

formato para después también

play46:12

serializarla otra vez y devolverlo

play46:14

exactamente y por eso necesita

play46:16

señalización porque la librería de

play46:18

collin tiene la información de memoria

play46:21

de la estructura de la clase la cual se

play46:24

puede usar para derivar cosas como Jason

play46:25

esquima o otro formato que no tiene por

play46:27

qué ser yeso el esquema Por ejemplo si

play46:30

tú quisieras derivar un jamel forma

play46:32

también le podría decir a la guía que te

play46:34

haga esto mismo que hemos visto en Jason

play46:36

pero

play46:38

me parece una solución súper elegante y

play46:40

simple en verdad para el problema que

play46:42

había así que olé por vosotros

play46:44

Gracias y luego tenemos pues una serie

play46:47

de

play46:49

cosas de más bajo nivel como podría ser

play46:53

segundo

play47:04

pues tenemos bastante utilidades para

play47:07

por ejemplo contar los tokens esto es

play47:09

importante si va a trabajar con

play47:10

cualquier modelo porque una lista de

play47:12

mensajes o de una lista de cosas

play47:16

en la forma en la que se usan los

play47:18

choques la forma en la que se mandan los

play47:20

mensajes el límite que tienes para los

play47:22

pros todo eso son diferentes por modelos

play47:24

Entonces aunque tú puedas combinar

play47:27

muchos modelos en el mismo bloque de ia

play47:29

y con diferentes políticas muchas veces

play47:32

para hacer aplicaciones que están muy

play47:34

fine tuneadas Según tu caso de uso para

play47:36

cuánto quieres que haya de contexto

play47:37

cuánto quieres que haya de respuesta

play47:39

pues acabas teniendo que utilizar

play47:41

ciertas funcionalidades en relación a

play47:44

contar

play47:49

y nada pues

play47:50

eso es un poco más o menos lo que

play47:52

tenemos hecho ahora mismo

play47:55

en la librería no tenemos mucho mucho

play47:58

más Vamos a sacarla dentro no tenemos

play48:00

mucho más dice con todo lo que hemos

play48:02

visto ya que esto es más cañón que nada

play48:04

y lo que decías ahora Raúl entonces Esto

play48:06

va a salir no va a ser Va a ser público

play48:09

si esto va a salir el próximo jueves

play48:13

tenemos planeados y todo va bien según

play48:15

desde marketing ingeniería en la empresa

play48:18

estamos trabajando todos juntos para

play48:20

hacer que eso ocurra si es posible el

play48:22

jueves el próximo jueves 1 de junio si

play48:25

el próximo jueves es posible va a salir

play48:26

esto pensó y podréis

play48:29

probarlos todos aquí importante la gente

play48:31

Mira tenéis aquí el Twitter de Raúl raja

play48:34

Ezequiel porque el momento que salga

play48:35

esto así sabes si os enteráis lo primero

play48:37

que hará será poner un tweet o de la

play48:40

cuenta oficial de vida funcional Así que

play48:41

a tope

play48:42

gracias

play48:46

pues lo dicho y esto hay más gente no

play48:49

que habéis hecho no eres solo tú Raúl Sí

play48:51

ya tengo aquí una pequeña presentación

play48:53

no voy a hacer una presentación ahora

play48:54

por supuesto pero que han sido un par de

play48:55

slime para

play48:57

comentando un poco la gente que ha

play48:59

estado involucrada no y que lo que

play49:01

estamos haciendo en términos de planes

play49:03

de cara de Cara a futuro y para

play49:06

invitarlos también a todos aquellos que

play49:08

os interese que en el momento en que sea

play49:09

este jueves que una es y contribuyáis

play49:12

con vuestras propias interacciones y

play49:15

herramientas como las que me he enseñado

play49:17

de base de datos de git de otras no

play49:20

básicamente es un gran equipo que es el

play49:22

equipo que está trabajando en esta

play49:25

librería y en otros productos

play49:26

relacionados que usan la librería y es

play49:29

el equipo de Siria donde estamos

play49:31

desarrollando este producto

play49:34

y pues cuenta gente de todas partes de

play49:37

ingeniería hasta marketing y estamos

play49:39

todos pues trabajando en diferentes

play49:41

áreas intentando avanzar un poco Cuál es

play49:44

el estado de la integración de hay en

play49:47

lenguaje de programación como el caso

play49:48

este de collin escala etcétera

play49:51

y cuando esté disponible pues Vais a

play49:53

tener versiones tanto alfas como

play49:55

snapshot inmediatamente que podréis

play49:57

descargar de Central o del repositorio

play50:00

de snapshot de sola Time seguramente No

play50:03

vendrán con el Confort y Seven deck

play50:06

para que no lo sepáis Este era el nombre

play50:08

de Nuestra Empresa Ahora nos llamamos

play50:10

Cydia

play50:11

vendrán con otro con otro grupo ID pero

play50:15

ya el nombre de la librería no entiendo

play50:17

de serie facial chef punto ahí

play50:20

exactamente sí que el nombre es

play50:22

buenísimo porque ya no es que sea

play50:25

como chef y es el que te cocina que está

play50:28

todo muy bien hilado todo pensado

play50:32

y como comentaba pues vamos a sacarlo

play50:35

tanto para collin escalar en esta

play50:37

primera versión pero nuestra intención

play50:39

es que va a salir para para múltiples

play50:43

otro lenguaje también de hecho ya la por

play50:46

ejemplo la versión de ras Está ya en

play50:48

camino

play50:49

estamos haciendo el lenguaje y como

play50:52

estas plataformas gracias a Golden

play50:54

reforma pues podemos usar todos estos

play50:57

lenguajes Y estos sistemas como como

play51:00

alguien no tanto en nativo como en gbm

play51:02

como entiendo que el portallaba es el

play51:05

facilito de los que hay aquí y después

play51:07

los otros llevan más curro sí aunque te

play51:10

sorprendería lo difícil que a veces

play51:12

Llamar a Colin desde Java desde escala y

play51:14

de muchos sitios sí hostias sobre todo

play51:17

con el tema de suspensión y cosas así

play51:18

pero bueno Ahí estamos también haciendo

play51:21

un par de librerías auxiliares que vamos

play51:22

a publicar que son para este tipo de

play51:24

cosas que interoperabilidad entre los

play51:27

lenguajes

play51:29

necesita básicamente para hacer

play51:33

entonces también saldrá eso

play51:35

Qué grandes

play51:37

estoy yendo al dominio El dominio chef

play51:40

punto ahí sí

play51:44

perfectísimo estamos demasiado

play51:49

justo ahora que preguntaba si la gente

play51:51

iba a usar la librería háganlo un 100%

play51:54

en la opción de mi apretado la cabeza

play51:56

genial Pues si tienen cualquier pregunta

play51:59

la gente o lo que sea sin duda Pues nos

play52:02

pueden dar un toque por Twitter o por

play52:05

gija o por donde sea siempre Estamos

play52:07

contentos de recibir a Nueva gente

play52:09

totalmente Ya sabéis tenéis aquí el

play52:12

Twitter de Raúl por si no lo seguís por

play52:14

seguirle y preguntarle cualquier cosa de

play52:15

estas nosotros lo bueno es que no esto

play52:18

ya hacemos de vez en cuando hablamos con

play52:20

él para ver cómo estamos yendo Y tal

play52:23

Pero también esta me ha gustado mucho

play52:24

porque no sé si nos has hecho pinta a

play52:26

nosotros de Oye tenemos esta librería os

play52:28

gustaría enseñarlo eso para mí ha sido

play52:29

brutal O sea me acuerdo verlo pasarlo a

play52:32

tope a tope Así que cositas de estas

play52:34

molan

play52:35

mucho Raúl lo dicho es un crack habéis

play52:37

visto aquí y siempre no lo pasamos

play52:39

genial en los directos y contexto

play52:40

contigo y con Rafa entonces

play52:43

totalmente pues lo dicho y si os ha

play52:46

gustado dale un like si estás en YouTube

play52:47

y nos vemos aquí en la siguiente en

play52:49

codellín un abrazo

play52:53

[Música]

Rate This

5.0 / 5 (0 votes)

Do you need a summary in English?