AI Agents & XMTP (Spanish)

AI Agents & XMTP — dev3pack · 1:05:44

A practical walkthrough of a travel-expense agent built with XMTP, Coinbase AgentKit and Gemini. The lesson connects encrypted messaging, wallet services and LangChain tools, then tests expense tracking, bill splitting and balance queries on Base Sepolia while explaining prompts, conversation context and local data storage.

Speakers

Topics

From AI Agents & XMTP — dev3pack, hosted by dev3pack.

Transcript

H, listo. Eh, ya empezamos la grabación. Entonces, voy a primero empezar eh presentándoles una breve introducción de qué son estos conceptos. Eh, un momento. Ya. Bueno, primero eh tenemos que empezar por eh ¿qué es XMTP? XMTP es un protocolo de mensajes eh descentralizado y cifrado en el en nuestro ecosistema web 3. Este protocolo nos permite que usando ya sea wallet o address se puedan enviar mensajes cifrados de punto a punto, lo cual los hace eh una forma de

mensajería muy segura. Este tipo de mensajería, además eh permite interoperabilidad entre distintos aplicaciones, dado que funciona eh es algo como que tú puedes integrar esa tool y tú puedes integrar tus mismos mensajes, verlo en una aplicación o en otra que tenga integrado el mismo protocolo XMTP. Este protocolo puede facilitar también lo que es el chat, notificaciones, mensajería entre aplicaciones web 3 eh sin que se tenga que depender de un nodo central o algún servidor central como lo son los eh eh chats de mensajería comunes que hay como WhatsApp, eh Facebook, Instagram, ¿no? Pues esto

funciona con una eh con nodos descentralizados, los cuales nos aseguran que al igual que la blockchain eh resilencia, privacidad y resistencia a la censura. Entonces, dado que este protocolo eh funciona de manera segura y y es muy útil para nosotros realizar eh mensajería dentro de la web 3, este tipo de mensajería o este protocolo es el que vamos a usar para nosotros realizar los agentes de IA. Ahora, ¿cómo vamos a realizar eh estos agentes o mejor dicho, con qué herramienta? Lo vamos a realizar con el agent kit. ¿Qué es el agent kit? En este caso, el agent kit de base es un agent kit que nos permite nosotros usar

agentes de IA con capacidades onchain. Eso, ¿qué quiere decir? que nuestros agentes van a poder realizar eh interacciones dentro de la blockchain, tanto como gestionar una wallet, firmar transacciones y ejecutar cualquier otra acción dentro de la blockchain, ¿no? Este, estos agentes están diseñados para integrarse con cualquier LLDM y frameworks y asistentes de IA, ¿no? O sea, son eh tú puedes elegir cualquier eh agente, usar tu API Key para integrarlo y funcionar con cualquiera sin problemas. Entonces ahí ya va a depender el LLM de tu preferencia y qué con cuál te adaptes mejor.

Otro eh beneficio que tiene Legend Kit es que simplifica mucho la integración, ¿no? Porque Legend Kit nos da ya un una alta grama de herramientas los cuales nos van a poder integrar de manera sencilla eh con nuestra aplicación. A su vez que eh al incluir un agente, nosotros simplificamos el el desarrollo, ¿no? Ya sea en agentes web 3, porque dado que ya viene integrado con esas capacidades de interactuar en la blockchain, eh se nos va a hacer muy sencillo eh la integración. Eh además viene con herramientas seguras que pueden servirnos para custodia, autenticación, ejecución de contratos inteligentes.

Eh, sin más, esto sería como que un breve resumen de lo que hacen estas herramientas. Eh, les voy a pasar eh por chat el enlace a la documentación para que ustedes mismos puedan eh revisarlo. Eh, denme un momento. A ver, ¿dónde se esconde esto? Aquí está. Ahí ustedes pueden revisar. Eh, y también eh, o sea, ahí pueden revisarlo y también pueden eh dar como que una revisada más a profundidad, ¿no?, cómo es la integración después de que terminamos

esta clase y poder entender mejor a detalle cómo funciona. Entonces, ahora para esta clase no vamos a realizar una aplicación desde cero porque nos tomaría mucho tiempo y solo tenemos una hora. Entonces, lo que vamos a usar va a ser un repositorio ya creado. Eh, va a ser similar o el mismo que está haciendo para las clases en inglés, pero nosotros vamos a utilizar eh vamos a realizar este estos avances con los cambios ya hechos, pero entendiendo cómo es que funciona y cómo es que se integran eh las aplicaciones para para

que se puedan ver. Ahorita mismo están viendo lo que es el repositorio que estoy compartiendo. Solo se está viendo lo que es la la presentación. A ver, voy a compartir de nuevo si no para que pueda verse bien. Entonces, ya. Ah, ¿dónde está compartir? pueden ver, ¿no? Ya. Entonces, eh lo que

vamos a hacer primero es usar este repositorio para nosotros poder entender cómo integrar estos dos eh protocolos y el agent kit en una aplicación, ¿no? Entonces, al final de este día vamos a correr este agente y vamos a hacer que funcione. Obviamente este agente está enfocado en una cosa que es eh trip expenses. Eso quiere decir como para hacer un récord de tus gastos de viaje y luego poder tú dividir estos gastos entre las personas que han viajado similar, ¿no? Entonces, para empezar, lo que podemos hacer es ahorita les voy a pasar el enlace para que puedan seguirme y puedan ustedes también clonar el

repositorio y avanzar junto conmigo para ir entendiendo, porque eh primero vamos a tener que conseguir eh API keys necesarias para poder inicializar, ¿no? Porque dado que esto es, ¿cómo decirlo? Eh, ¿dónde está? Esto es los agentes van a necesitar a piquí, por ejemplo, la piqui de un ll pueda usarse para poder tú integrarlo en tu agente para que pueda responder así. Otro es el las address que necesitan para el XMTP Protocol, pues necesito un address, un private key.

Otra cosa más también que necesitamos van a ser el las keys de de Coinbase Developer entonces inicializamos de manera simple. Eh, yo uso Windows system por Linux. Entonces, ya eh git git clon clonamos el repositorio, entramos y inicializamos nuestro eh editor de código que cualquiera que usemos, ¿no?

Porque ahí depende de cada uno, gustos y colores. Yo de por sí uso Visual Studio Code nada más. Y dentro de el editor de código, nosotros vamos a tener ya inicializados un index de que va a ser como que la integración de todo lo que necesitamos. Eh, unos scripts que estos scripts nos van a servir a nosotros para poder integrar eh las API keys que nos van a pedir al menos en el XMTP. Esto lo podemos generar unas kiss necesarias porque dado que necesita tener una wallet en cada extremo, ya sea en el agente y como el usuario para que pueda ser seguro y encriptado, entonces es

algo muy necesario. Y lo que son los otros las funcionalidades que se tienen, ¿no? En este caso, los servicios, los cuales voy a explicar yo eh paso a paso para que puedan entender eh cómo es que se configura, qué necesitas poner, qué no. Eh, entonces vamos a empezar primero por lo importante, que es instalar todas las dependencias que vamos a necesitar. Entonces, para este caso, como ya tenemos todo listo esto, solamente tenemos que abrir un terminal e instalarlo con npm y o npm install. Entonces, mientras se va instalando, eh primero vamos a ver qué es lo que hace, ¿no? El script de generate key. Eh lo primero que hace es más que nada generarnos un

una private key de con random bytes. Entonces no no es la gran cosa, solo genera de manera random una wallet, mejor dicho, una private key mediante la función private key to account y generamos la cuenta, ¿no? Entonces, con esto, esto es de manera simple y como es para prueba el la que vamos a necesitar, esto no es un gran problema. Entonces, simplemente esperamos a que se instale para poder generar nuestras kiss y ver mientras vamos a crear nuestro verdadero variable entorno y no el ejemplo.

Copiamos todo esto aquí y ya tenemos listo instalado todo. Entonces, lo primero que vamos a hacer eh completar las API KIS que necesitamos. Para esto eh vamos a ejecutar este script, pero este script ya viene configurado para ejecutarse automáticamente. Solo tenemos que poner npm run y gen, eh dos puntos kiss. Entonces, lo que va a hacer es que va a ejecutar el script y nos va a generar las eh lo que necesitamos, ¿no? Primero la XMTP Wallet Key, eh, que copiamos y la eh XMTP Database description key. Y listo. Y lo copiamos acá también. Esto

lo dejamos acá en en DEP nada más. Eh, es como para identificar que estamos en el entorno de desarrollo. Entonces, de eso no hay ningún problema. Entonces, la API Key que necesitamos ahora es las API keys del Conbase Platform, eh lo cual vamos a conseguirlo aquí. Un momento, les voy a pasar el enlace para que ustedes también puedan conseguirlo. A ver, ¿dónde está el chat?

A ver, el chat, el chat. A ver. Ah, el tamaño de la fuente. Sí, claro. Ahorita lo subo. Creo que era era alt más, si no me equivoco. [Música] 20. Eh, claro, ahorita lo vuelvo a pasar.

Ahí está. Ah, déjame ver cómo era para eh editar la fuente. Eh, fuente fuente fuente. Experiencia. Ahí está. Ya, ahora sí les parece bien la fuente.

Ya. Listo. Entonces, eh continuamos, ¿no? Eh esta estas keys que necesitan ahora para el CDP, las AP Keys los pueden encontrar aquí en el Coinbase portal. Entonces, simplemente yo ya he abierto el mío. Entonces, lo que necesitamos simplemente es eh crear un API key o simplemente este usar alguno de las que tenemos, ¿no? Yo ya tengo uno configurado, simplemente lo que tienen que hacer es el nombre de la API key, no sé, este, ah, base y se crea. Entonces nosotros vamos a necesar esto, estos dos que va a ser el API Key ID, que van a ser uno, el API Key name que va a ser el ID, va a ser el

AP key name y el secret va a ser el AP key, este private key. Entonces para el wallet secret lo que necesitamos es otra cosa distinta, ¿no? Para el wallet secret lo que necesitamos es entrar acá. Vamos a entrar a server wallet. y vamos a counts. Esto sirve para que con un server wallet. Entonces, lo que nosotros tenemos que hacer es aquí generar generate new secret. Entonces, eh me va a pedir verificación dos pasos.

A ver, déjame ver. me va a llegar un código a mi correo, a mi número, pero en todo caso eh ustedes eh intentan acá y les va a generar un código igual que el el public key el private key que les generó en en el dashboard, pero en este caso aquí solo es un código. Aquí no tengo mucha señal, no me va a llegar, creo. Ya, pero en todo caso eh esto lo pegan, lo que les dé ahí lo pegan aquí. Eh, yo tengo otro código, así que de ahí lo voy a copiar.

Teng un código acá, entonces lo copio ahí. Y entonces lo que nos queda ahora mismo es nada más eh nuestro API key de la LDM que vamos a usar. En este caso para fines prácticos y que me parece que el API key de Open AI de Open AI quiero decir de Gemini es es está un poco libre. Entonces podemos usar el API Key de Gemini, lo pueden buscar acá, pero si tienen algún otro API Key también puede ser, pero de preferencia aquí Gemini porque fue configurado como para usar con Gemini.

Los pueden conseguir ahí, simplemente entran ahí y aquí ustedes generan un API key. está crean una clave a piqu base crea un proyecto Entonces se crea el proyecto, creanla

aquí y aquí lo copian y lo pegan en la variable de entorno. Listo, con estas variables configuradas y entonces ya podríamos iniciar a lo que es ver cómo configurar tu agente. Entonces lo primero que vamos a necesitar es configurar las acciones, ¿no? Que qué vas a querer tú que haga tu agente. Entonces para eso vas a inicializar un archivo en tus servicios lo puedes llamar.

En este caso, eh este servicio configurado es acerca del trip expenses, entonces va a estar relacionados a esto. Y la forma de almacenar la data también va a ser una forma local para fines prácticos. ¿Por qué? porque se va a almacenar aquí en este archivo de data, pero esto claramente se puede extrapolar a cualquier otro tipo de almacenamiento, ¿no? Tú lo puedes conectar a una base de datos, eh, a algún más que nada una base de datos, ¿no?, donde tú puedas tener la persistencia de esa data. Así cuando tú lo despliegues en producción, puedas simplemente hacer eh fecha esa data, mantener eh la data de cada usuario y sin problemas funcionar, ¿no?, de manera escalable.

Entonces, eh lo que necesitamos acá primero es un eh importar FS, que es para leer archivos y escribir el pad para tener las rutas y también las URLs, ¿no? Entonces, lo primero que hacemos es eh conseguir el nombre de la ruta del proyecto mediante el pad, el de name y de el, ¿cómo se dice? la ruta del archivo, ¿no? Mediante la ruta del archivo obtenemos el el root del directorio y con eso vamos a a empezar. ¿Para qué? Para inicializar dónde vamos a guardar la data. Primero que nada, como ya les dije, va a ser de manera local. Nosotros lo vamos a

guardar en la ruta del archivo. Eh, retrocedemos dos hacia atrás porque estos dos puntitos significan retroced. Entonces, retrocedemos esta ruta, luego al SRC y luego entra a la data y lo guarda en este archivo expense Jason. Luego ahora según la lógica de lo que va a ser esta aplicación, vamos a configurar eh los otros datas que va a tener esta clase que estamos creando. Vamos entonces a hacer un mapping. ¿Por qué un mapping de los expenses? Porque vamos a nosotros guardar asociar un usuario o un ID de algo hacia un gasto.

Entonces, un mapping para este caso nos sirve perfecto porque a su vez de reducir eh el tiempo, la complejidad del tiempo de búsqueda eh va a ser muy corto para tú cuando quieras encontrar alguna en específico, va a ser una búsqueda o uno. Entonces, esto facilita mucho a su vez que se presta para la lo que es la lógica de lo que se quiere hacer. Entonces, inicializamos el mapping normal, eh, los datos y luego inicializamos los gastos, o sea, expenses o los gastos, ¿no? Pero vamos a ver cómo funciona esto. Esto está hecho para que use la data local que se ha configurado,

pero como ya les dije antes, esto lo pueden extrapolar, ¿no? Por ejemplo, en este caso está buscando el la ruta del data field, entonces está buscando si existe, si no existe, eh simplemente como que lo deja ahí y si existe simplemente empieza a leerlo como un json y esto lo inicializa en la el los valores de los expenses. Entonces simplemente es un try catch, pero en este caso sería distinto. Por ejemplo, si quieren conectar una base de datos, lo que tienes que hacer es fetch, eh conseguir la data y guardarla en lo que son los expenses. Entonces, como es algo que ustedes pueden extrapolar a cualquier otro tipo de base de datos,

esto va a depender de cómo es lo que ustedes quieren eh hacer, ¿no? Entonces, simplemente esto tienen que configurarlo según sus necesidades. De igual manera, esto save dispenses, ¿no? Por ejemplo, si ustedes ya quieren guardar la data registrada, no van a tener que hacer un write file sign porque esto lo va a guardar acá, sino que tienen que hacer un un putot, por ejemplo, a su base de datos y guardar la nueva data, ¿no? Entonces los métodos de cómo tú vas a acceder a la persistencia de tus datos, eh, ya sea para guardar o para eh traer la data, ¿no? hacer. Entonces, lo que

sigue ahora sí son los métodos que van a usarse eh para tu lógica de negocio. Esta lógica de negocio que es eh añadir gastos de un viaje. Entonces, necesitamos añadir esa función. Lo que vamos a pasar por parámetros siempre para todas las funciones va a ser un conversation ID. ¿Para qué es esta conversation ID? Esto es un identificador único para identificar a un usuario en específico. Por ejemplo, eh viene una persona a tu chat y te dice, "Quiero añadir eh 100 soles de gasto para tal eh producto o $100 para tal producto, ¿ya?" Y viene otra persona y te dice, "Quiero añadir $150 de gasto para tal gasto." No, pero tú cómo sabes

qué usuario es cuál. O sea, tú no puedes saber uno, eh, ¿por qué? Porque simplemente no tienes una forma de identificarno, ¿no? Entonces, para esto te sirve esto, que se se tiene se maneja este parámetro para poder identificar y diferenciar entre los entre los usuarios. Luego lo demás que tenemos que pasar es simplemente los datos que necesitamos, ¿no? Como son el amount, eh la descripción de el gasto y quién fue el que pagó, ¿no? Porque podemos especificar en nuestro mensaje en el agente quién va a pagar, eh, o por default si no se le tiene el user.

Entonces, primero que tenemos que hacer es validar la el conversation ID para porque esto es muy importante para poder identificar entre usuarios. Entonces, al validar esto, eh si no existe, eh seteamos un el conversation ID. Bueno, entonces lo que sigue después es simplemente ya muy simple en este caso de de todas maneras va a depender lo que quieran hacer. En este caso, lo que se quiere hacer es por ahora almacenar los gastos, ¿no? Entonces creamos un ID para este gasto en específico eh con la data al stream eh sin problemas.

Otra cosa que necesitamos es guardar es la cantidad, ¿no? Entonces parseamos esta data a un tipo flut float y ponemos una descripción como para saber a qué ha sido el gasto, quién ha sido el usuario que ha pagado y el tiempo en el que fue hecho. Esto son métodos simples que al menos para este caso de uso que va a ser de manera simple, no no requiere mucho mucha lógica, al menos esta parte, pero esta parte sí va obviamente va a ser muy importante cuando tú quieres hacer tu aplicación, no sé si quieres hacer una aplicación de eh que podemos pensar, por ejemplo, para almacenar, yo que sé, tipo un saldo de o cómo se dice,

una tienda, sus productos. para que puedan saber cuántos productos tiene, quiera manejar productos, entonces va va a cambiar, ¿no? Por ejemplo, el nombre del producto, la cantidad que tiene el producto, su el precio del producto. Entonces va a depender siempre del caso que uso que tú vas a tener. Entonces eh ya tenemos eh formateado el gasto. Lo que tenemos que hacer ahora simplemente es con el conversation ID, listo, eh guardamos esto, o sea, subimos esto a los expenses o lo indexamos con un push y simplemente guardamos todo de nuevo en nuestra data, en nuestra base de datos, dependiendo de cómo lo tenemos guardado.

De la misma manera, los demás métodos son sencillos, simplemente ya tenemos que eh podemos obtenerlo mediante el conversation ID, que vamos a pasar por parámetro. para cada usuario va a ser distinto. Entonces, simplemente regresamos sus expenses. Luego tenemos para obtener el total de cada uno. Eh, en este caso la lógica ya la tenemos implementado. Obtenemos los expenses del usuario y con un reduce realizamos una suma de todos los valores del amount, ¿no? Entonces, con eso podemos nosotros gestionar eh nuestra lógica que es obtener el total de los gastos que se realizó mediante todo ese proceso.

Otra funcionalidad que se implementa en este caso de uso que es el Trip Expenses es dividir los gastos, o sea, dividir los gastos entre un cierto número de personas. Entonces, para esto, como ya sabemos, por parámetros siempre vamos a requerir en el conversation ID cuando queremos eh realizar nuestros eh nuestros métodos para nuestra utilidad que vamos a tener y también el parámetro necesario para realizar esta operación. Como queremos que divida eh el gasto total entre cierto número de personas, tenemos que pasar por parámetro el número de personas que queremos que pida.

Este número nos va a servir para dividirlo, ¿no? Simplemente. Entonces, como ya tenemos el método get total, llamamos a nuestro método y lo dividimos por persona y retornamos lo que necesitamos. En cas, en este caso es el total, el número de personas y cuánto va a pagar cada persona. Por lo demás, nos sirve como, por ejemplo, para borrar las conversaciones. Eh, son métodos ya auxiliares, ¿no?, que nos sirve para luego formatear o limpiar todo lo que ya hemos hablado. Entonces, esto este servicio que configuramos ahorita o que está configurado ahorita nos va a servir para nuestra lógica de negocio, o sea, para que eh funcione

cómo tú quieres, qué es lo que tú quieres que haga eh tu agente. Estas funciones van a facilitar pues tú y ya le vas a decir claramente qué quieres que haga. Entonces el agente después de procesar el mensaje que le manda, simplemente tiene que llamar a los métodos que tú ya inicializaste para poder ejecutarse siguiendo tu lógica. Lo siguiente que tenemos que configurar son los servicios de la wallet. ¿Por qué? Porque con estos servicios son con los que la gente va a poder interactuar con la blockchain. Con estos servicios le se puede inicializar una wallet hacia el usuario, se le va a crear una wallet, eh le puedes mandar cualquier cripto en específico, eh mandarle testnet. Con

esto va a poder consultar su saldo, eh enviar cripto o realizar tal vez alguna firma de algún contrato. Entonces esto esta wallet se inicializa usando eh lo que es el wallet, los servicios de wallet de Coinbase. Por eso nos pedía el API Key de el Secret y el API Key ID. Entonces nosotros tenemos que sí o sí entonces validar esas eh variables de entorno y simplemente llamando a la a la función que tiene ya Coinbase integrado para su el Coinbase SDK, simplemente configuramos el eh configuramos con nuestras API Keys

y ya tenemos inicializado nuestro algo así como nuestro server de wallets. Entonces, simplemente para cada usuario y configurando el network ID que vamos a usar, o sea, ya depende, ¿no? Por ejemplo, en este caso va a ser Cepolia Bepolia para que pueda crear wallets en esa red. Entonces, simplemente eh inicializamos esa configuración. Eh, esa la tenemos configurada, por ejemplo, en nuestra variable de entorno eh que es el network ID, que es Bolly. Entonces, ya eso ya también lo podemos configurar acá para que, por ejemplo, si queremos que sea en base polia, tenemos que obviamente poner el RPC URL de base polia, ¿no? Si queremos que sea en en

base, simplemente tenemos que poner el RPC de base. Entonces, dado que ya tenemos inicializado nuestro wallet service y con una wallet creada, porque esta wallet lo que va a hacer es crear una sola wallet para cada usuario. Entonces, lo que tenemos que hacer ahora es simplemente inicializar o crear los métodos que nos van a servir eh de ayuda, ¿no? para este caso, métodos como el get adders, que nos va a servir para devolver el address de la wallet que hemos creado para ese usuario, obtener el balance, o sea, el saldo que tiene en I.

Esto es simplemente como cualquier llamada normal, ¿no? tú utilizas este obtienes la wallet y dado que ya está configurado con el servicio de Coinbase, simplemente tú puedes eh tú puedes tener los balances simplemente llamando al método que ya tiene, este método que está integrado en lo que es el los tipos de wallet, simplemente te retorna la lista de balances de esta wallet y eh que son este sumados de todas las address en la wallet, ¿no? Entonces formateamos simplemente para obtener IT y retornamos como qué es lo que queremos que muestre, ¿no? Porque nosotros solo queremos que muestre el saldo en it, por ejemplo. Entonces solo

obtenemos el saldo en IT y lo formateamos como queremos que lo devuelva. El balance lo pasamos un string para que lo devuelva y el network devolviendos para saber en qué red está ahorita mismo, en qué red está funcionando y en qué red estamos obteniendo el saldo. Los demás parámetros que se tienen que configurar ahora, por ejemplo, son send it, que es muy importante para mandar eh el token nativo. De la misma manera, en este caso, como ya está un servicio wallet creado, ya tiene los métodos para crear una transferencia este y mandarla, ¿no? Entonces, simplemente lo que tenemos que hacer como hacer una

transferencia normal, tenemos que especificar el monto, el tipo de cripto, a quién estamos enviando y esto que es ya un parámetro más alto que es el gaslets, que es una configuración del Paymaster y las wallets para que puedan hacer este transacciones esponsoreadas sin gas. En este caso lo dejamos false nada más. Y dado que ya pasamos por parámetros a quién se va a mandar y la cantidad, simplemente esperamos a que la transacción se ejecute. Obtenemos el el transaction hash, el transacction e el link de la transacción y retornamos formateado de la forma que queremos, ¿no? Entonces, si todo va bien, este try se ejecuta

y devolvemos que fue exitoso. devolvemos el el transaction hacks, el link, la cantidad mandada hacia quién y el network. En caso de que no, ya que ya lo estamos manejando con un trccatch, simplemente mandamos el error a que se debe eh y que la transacción falló. Bueno, esto de export wallet eh simplemente es para otra funcionalidad, ¿no?, de uno exportar wallet, pero es algo que no vamos a usar, pero puede ser como que un adicional que le puedes poner, ¿no? Ya.

Ahora también lo que puedes hacer acá es dependiendo de lo que quieras hacer con tu wallet, dado que este es simple, solo quiere manejar los gastos, solo ha configurado esto. Pero, por ejemplo, si tú quieres que llame un contrato, simplemente puedes hacer de la misma forma. eh crear una función acing, eh yo que sé, crear NFT y pasas tus parámetros, ¿no? Eh eh ves si está la wallet, por ejemplo, y luego eh vamos a autocompletarlo, que esto es más que nada didáctico. Y simplemente

aquí haces la transferencia, ¿no? Pero aquí ya no sería create transfer, por ejemplo, sería por right contract, me imagino, porque esto siempre tiene método así, right contract, llamas al contrato, tal, tal, tal. O sea, esta parte son las configuraciones de qué es lo que tú quieres hacer con la wallet, ¿no? Ya tú puedes configurar exactamente o específicamente qué es lo que buscas según tu caso de uso. Eh, puedes llamar, dado que esto te va a servir con una wallet ya configurada, como si estuvieses haciendo un servicio normal en la web 3 que configura la wallet, solo que tú tienes el manejo de la wallet aquí con tu Coinbase, este,

con tus kiss de Coinbase. Entonces, configuras lo que tú quieras que haga tu aplicación y listo. Simplemente luego lo vamos a conectar con lo que queremos que ha el AI agent, lo cual vamos a ver más adelante para saber cómo es que se conectan luego todo esto para funcionar como un agente de IA. Lo que ahora vamos a ver es inicializar los servicios de XMTP, que esto es muy importante, ¿no? Porque este es el servicio mediante el cual va a funcionar el agente. El el protocolo de mensajería que vamos a usar es este. Entonces, es muy importante también saber cómo inicializarlo, ¿no? De la misma manera que creamos ya sea el Expense Manager o el Wallet Service, tenemos que crear

nuestro Xntp Service como una clase y el constructor con el agente, ¿no? Tenemos que inicializar el agente del XMTP. Esto lo inicializamos con nuestras variables de entorno, que ya lo tenemos, que simplemente lo podemos generar. Esto lo que va a hacer es que va a asignarle un address a la gente eh, y para que pueda realizarse el chat, ¿no? Porque como ya les dije, este es un mensajería cifrado punto a punto. Para ambos se necesita una wallet y una private key para que puedan cifrar los mensajes y solo puedan verlos uno o el otro.

Entonces, simplemente los métodos que aquí podemos configurar son tanto el address del XMTP. Eh, y también algo muy importante, est, esto sí es algo muy importante, es el método de cómo va a procesar el mensaje eh XMTP, ¿no? Entonces, nosotros vamos a crear este método, lo cual va a recibir un handler que va a ser una función, o sea, va a recibir una función por parámetro, lo cual esta función es la que va a procesar el mensaje, ¿no? Simplemente el XMTP Servers va a recibir del contexto, ya sea el texto que se le va a mandar como mensaje. Esto lo va a procesar, va a obtener simplemente el mensaje, o sea, el contenido del mensaje, quién es el que lo está enviando

y esto lo va a mandar al handler que nosotros ya vamos a configurar en el agente más adelante que van a ver, pero esto es como que la configuración necesaria para saber cómo va a procesar el mensaje que se le manda. es algo así como podríamos decir un limpiado, ¿no? Porque vamos a mandarle solo el mensaje al handler para que este lo procese y ya el contexto nosotros lo podemos especificar después en el agente también aparte para que sepa quién está mandando eh montos o hacia quién o todo lo necesario del contexto, ¿no? Para que el agente pueda funcionar correctamente.

de la gente de igual manera se le va a setear, por así decirlo, en el agen también, ¿no? Mejor dicho, esto es otra gente, esto es la gente del, así que esto es aparte me está confundiendo. un star. Esto es el star hunder. Eso quiere decir o mejor dicho este esta inicialización es para que cuando se quiera inicializar eh el agente simplemente se llama esta función su handler y se inicializa. De igual manera, esto es para que se empiece la mensajería, ¿no?

Entonces, ahora vamos a la parte más importante que es la configuración de la gente. ¿Por qué es? ¿Por qué es la parte más importante? Porque esta va a ser la parte que va a procesar el mensaje, que va a dar las respuestas, que va a llamar a las funciones que ya configuramos para que hagan este tanto el Expense Manager o los servicios de la wallet. Entonces tenemos que estar muy eh pendientes de esto porque también es algo que si te falla tu servicio va a fallar. Entonces hay que estar muy pendientes.

Eh, pero de manera similar creamos una clase para inicializar este AI agent. Pasamos por parámetro lo que es el wallet service que configuramos. Esto va a ser que nos va a servir, que va a tener acceso a la a una wallet para que pueda realizar las transacciones que ya configuramos anteriormente para hacer las llamadas que necesite, ¿no? De igual manera, aquí lo que vamos a inicializar va a ser el agente de por sí, el LLM, vamos a poner un modelo, nuestro API Key y las configuraciones normales que esto necesita son simplemente estas para iniciar el LLM.

para el agent kit config, obviamente para esto vamos a necesitar nuestro wallet secret que hemos configurado el cdp y esto va a poder darnos como que vamos a poder usarlo con esto porque si no no nos va a dejar. Y simplemente con las otras configuraciones del apiky name o el ID que ya configuramos de esta parte, el el name y el private key, con estos, ¿dónde está? Con estas variables de entorno que ya configuramos nos va a dejar inicializar nuestro agent kit y poder usar las funciones del agent kit sin ningún problema.

Entonces, inicializamos la configuración del agent kit y luego inicializamos el agent kit dentro de del AI agent, ¿no? Entonces, simplemente eh también los agent kit tools, el cual nos lo brinda LC Chain, que es como un framework que te permite la operabilidad, ¿no? Como te dije entre los diferentes LLMs sin problema con nuestro agen kit ya inicializado. Entonces, con esto nosotros vamos a poder hacer llamadas que nos pueda procesar el LM que queremos. Entonces de esta parte si quieren profundizar pueden revisar la documentación de LChain para que puedan poder ver un poco más, ¿no?, de cómo es que funciona. Pero si no también, o sea, lo puedes dejar por ahí

tu app inicializada así y luego haciendo las llamadas puede funcionar igual, eh, sin ningún problema. Entonces, guardamos eh ahora que hemos inicializado y empezamos, ¿no?, con creando, por ejemplo, eh el agente con las tools que ya hemos configurado. En este caso va a configurarlo con el LLM, las tools que pasamos y el message modifier, que también viene a ser una parte muy importante para los agentes. Este modifier va a ser el prom que nosotros queremos configurar para que eh bloquea nuestra gente. Aquí obviamente va a depender de lo que tú quieras

hacer, de tu caso de uso. Tú tienes que ser muy específico con lo que quieras hacer. Por ejemplo, aquí le está diciendo, eh, tú eres un muy ayudante eh agente de viajes, de gasto de viajes, eh lo cual ayuda a los usuarios a trackar sus gastos, pueden hacer este request de payments en base polier. Entonces, tiene tal capacidades para trackar los gastos, listar los gastos, eh dividir las cuentas, eh o limpiar los gastos que tuvo, hacer pagos y pedir phone, ¿no? Esto esto viene para un caso de uso que es como que para usar el cóm el foset, pero ya está muy bien integrado, ¿no? En lo que es este caso, pero como podemos

ver, el PROM tiene que ser detallado para que el agente en su contexto pueda identificar qué hacer. qué no hacer, eh, cómo comportarse, ¿no? Entonces, aquí le estamos especificando qué capacidades tiene, qué debe usar y cómo debe este recibir, ¿no? Por ejemplo, cuando el usuario dice, "Yo gasté dos IT en un vuelo, tiene que usar siempre ad expense tool." Cuando el usuario pregunta acerca de que muestre los gastos, que cuánto he gastado, que liste sus gastos, tiene que usar listen tool de la misma manera, ¿no? O sea, tú tienes que configurar

todo lo que has configurado acá, tienes que pasarlo en el prone. ¿Para qué? Para que el PR identifique cuando se haga cierto request por chat, pueda saber qué herramienta vaya va a usar. Entonces tú lo configuras esto acá de esto lo que has llamado, ¿no?, que es adpol y tienes que pasarle un ejemplo claramente para que sea mucho más fácil de identificar. Por ejemplo, estás pasando el ejemplo expend tal tal, le pasa expense y los parámetros que cómo tiene que pasar, la descripción que tiene que poner, quién tiene que poner el usuario, o sea, por ejemplo, acá le está especificando, ¿no?

Si no pasas ningún usuario por default queda user. Si tú estás pasando que quién está gastando, por ejemplo, a mal ha gastado un ID, entonces quién paga ese monto es Amal. y de manera similar por cada caso de uso, ¿no? Tienes que hacer un ejemplo y también especificar qué es lo más importante, ¿no? Que por ejemplo todo tiene que ser en I, ¿no? No va a aceptar otro tipo de criptos que está en base polia. En caso ustedes ya lo vayan a desplegar, por ejemplo, tienen que poner en qué red van a desplegarlo. Por ejemplo, tú estás en base, eh, cómo tiene que comportarse, que tienen que usar las tools que ya están configuradas y porque a veces las LLMs

pueden alucinar y no vayan a ser que justo no use lo que tú estás configurando, sino que haga cualquier cosa y responda cualquier cosa. Y siempre esperar una una confirmación de las transacciones antes de hacer una transacción. y también el formato, ¿cómo quieres que devuelva? No, para cuando se hace una cuando cuando hace un request de la foset, como debe de hacerlo. O sea, este es el prom debe hacerse tu prom. Obviamente hay muchas maneras, eh, pero lo importante siempre tiene que ir. ¿Qué tiene que hacer? ¿Cómo tiene que usar las herramientas que tú has configurado?

Darle ejemplos. y decirle qué es la parte más importante, ¿no? Porque esos son eh cosas que le van a servir al modelo, al Llm para identificar eh qué debe hacer con mayor este confiabilidad, porque si no ya sabemos los problemas de alucinación de las Ll, nos puede generar errores, eh, que procese mal. Entonces, es es todo un caos. Bueno, y lo último, lo que sigue es el eh, ¿cómo se dice? Lo que necesitamos acá. Por ejemplo, cuando nosotros queríamos un text, necesitábamos un message handler, ¿no? Entonces eh simplemente nosotros aquí vamos a configurar lo que

es el message handler. Ah, no, eso se configura después. Esto es, este processo va a procesar el AI agent, eh lo que es nuestro nuestro mensaje, porque esta es la parte de las capacidades de la I del que va a tener la IA. Entonces, simplemente, por ejemplo, vamos a pasarle el mensaje y el conversation context. En el conversation context van a estar los tools que ya hemos configurado antes, eh, el conversation ID, que va a ser una conversación ID por cada usuario que va a tener el identificador único y el el address del agente, ¿no?, para que pueda realizar las interacciones.

Entonces, en un try cash simplemente lo que tenemos que hacer es verificar que tenemos la los parámetros necesarios, los dos tools, eh inicializar el el agente y eh el mensaje, ¿no? Eh el mensaje del usuario. En este caso podemos hacer algo, ¿cómo decirlo? darle más contexto al mensaje para que la gente pueda procesarlo mejor. Por ejemplo, este es el mensaje crudo, por ejemplo, quiero ver mi saldo, ¿no? Y este es el mensaje que va a llegar acá. Pero nosotros lo que podemos darle es un contexto de sistema.

Lo que podemos hacer en este caso es, ¿no?, por ejemplo, decirle system context, eh, tu wallet es tal y lo indexamos este mensaje. Entonces, lo que va a hacer el mensaje es irse a la gente en el cual vamos a invocar, vamos a hacer una llamada para que procese el mensaje. Vamos a darle quién es el eh el que mandó el mensaje. En este caso, el usuario es el que mandó el mensaje. ¿Y cuál es su mensaje? Entonces nosotros tenemos esto, le hemos dado más contexto para que pueda ser más específico y simplemente esperamos eh la respuesta, ¿no?, del LLM. Ahora, el LLM simplemente

aquí ya va a trabajar con las herramientas que se le dio, el mensaje que se le dio. Entonces, lo va a procesar y lo que nosotros vamos a devolver es el mensaje que tiene respuesta. Vamos a devolver el antepenúltimo mensaje, porque el último eh, si no me equivoco, es un algo como que informativo. Entonces, vamos a devolver el mensaje, no el último, sino el penúltimo. Por eso vamos a poner el, ¿cómo se llama? Eh, la longitud del mensaje, o sea, el tamaño -1, porque va a devolver como un arrey. Entonces, vamos a devolver esa parte.

Entonces, dado que tenemos eso y devolvemos el contening, nada más. En este caso sería simple, ¿no? Lo que el AI agent tiene que ser. Tenemos que pasarle el mensaje y un poco más de contexto. Aquí ya debería también este puedes tú configurar como tú quieras pasar el contexto, no sé, por ejemplo, eh lo que necesites, ¿no? Prácticamente eso es ya el Ll va procesarlo para que sepa cómo usarlo y va a usar tus herramientas que ya le diste. Entonces simplemente tienes que configurar qué es lo que quieres que sea relevante para que lo pueda hacer.

Eh, dado que esto ya lo pasas y simplemente devuelve. Entonces, ¿cómo se va a mostrar esto? Lo vamos a ver ahora en el index, que esto es lo que va a procesar y va a juntar todas las herramientas que ya antes hemos configurado, ya sea el AI agent, va a pasar también los tools que son los expense manager, donde hemos configurado las acciones necesarias que queremos que haga según los diferentes llamadas que vamos a tener, el servicio de XMTP que vamos a inicializar y eh los expense tools, ¿no?, que hemos configurado también.

En este caso, estos tools son ya más eh, ¿cómo decirlo?, específicos ¿no? Estos tools van a ser acompañarse de lo que son eh nuestro servicio, ¿no?, que queremos el expense manager. Simplemente, por ejemplo, aquí utilizando lo que es L chain, que te da estos tools para que la gente pueda leerlo, o sea, es como que tiene un formato cómo tiene que ser.

vas a inicializar un nuevo dynamic structure tool, vas a pasar el nombre de ese tool, o sea, por parámetro en un name, la descripción, qué es lo que hace. Por ejemplo, add a new expense to drug use this when user mention spending money adding expense. O sea, tú en este caso tienes que especificar textualmente qué es lo que quiere hacer, eh, qué es lo que el nombre que va a ser un identificador para el agente para llamar este tool, una descripción de qué es lo que hace o cuándo se llama y un esquema que va a ser qué es lo que va a tratar a obtener ¿no?

una cantidad en IT, que va a ser el amount, una descripción de este en específico de en qué se gastó y quién lo pagó. Entonces, simplemente vas a crear una función asíncrona, estos parámetros y va a probar. Simplemente hace la prueba que crea el add expense con un conversation id de parámetro, un amount, un description pbayo. En este caso, estos estas funciones son las que van a ser llamadas por el agente.

La gente cuando nosotros, como ya le hemos especificado, como ya han visto en cómo configuramos el AIA en su prom, simplemente va a llamar a estos cuando detecte que se hace una llamada o o cuando detecte que es necesario llamar a cada cual, ¿no? La misma manera, todos tienen el mismo el, ¿cómo se llama? El mismo esquema de inicialización. necesito un nombre, una descripción y el esquema, eh, qué es lo que vas a querer que guarde, ¿no? O cómo vas a querer que guarde y una función de cómo va a procesar ese mensaje.

En este caso no queremos que liste los gastos. Entonces, simplemente obtenemos eh del expense manager que configuramos, obtenemos el total según la configuración ID y lo formateamos, ¿no? Por ejemplo, el output o qué es lo que va a regresar, por ejemplo, el total gastado es tal y los gastos que ya hemos recuperado también simplemente los con un for each lo vamos listando o añadiendo este mensaje. Eh, ponemos la descripción, el monto, quién lo pagó, tal, tal, tal. Entonces, cada función que vamos a crear son los tools que va a usar la para nuestros mensajes, ya sea para dividir, para borrar todo.

Entonces, aquí va a depender también qué es lo que tú quieres hacer. Entonces, si lo que tú quieres es, por ejemplo, añadir eh a un marketplace eh un producto, lo que tienes que ser ad product, eh añadir un producto, tal, pones tu descripción, el esquema que va a tener tu producto, no sé qué qué vas a querer mandar, su nombre, su ID, su precio, cantidad, entonces simplemente no pasas por parámetro igual tu función, eh los datos que vas a necesitar, tanto como que el ID, el parámetro, tal, tal, tal, y simplemente con tu clase ya inicializada con tu utilagplace, simplemente llamas a la función que

tuviste y lo guarda y listo. O sea, esto es con el ejemplo del trip expenses, ¿no? Entonces, cada función, cada cosa que se hecho acá es específica para este tipo de caso de uso. Entonces, no se cierren que solamente puede ser de este tipo. Entonces, no, esto es configurable según a lo que ustedes quieran hacer. Entonces, ya hemos visto cómo se va configurando cada uno de estos y los tools simplemente hacen uso de lo que ya configuramos antes, tanto para guardar un expense, para añadir otro más y simplemente al ya tener configurados nuestros tools con esto vamos a poder usarlo

en lo que son nuestro agente en conjunto que vaya a manejar todo las llamadas tanto del XNTP, del W servers service, el el Xntp Service, el Expense manager. Entonces, simple, al igual que todos, tenemos que inicializar. Como ya tenemos eh inicializado cada uno, ahora tenemos que inicializar el agente con su wallet service. Inicializamos porque ya tenemos su parámetro de inicializar de este mismo el servicio de XTP.

Listo. Después de inicializar, eh cuando se corra, simplemente tenemos que esperar que llegue un mensaje, pasar el contexto y pasarle el handle message y nada más. Y lo que va a hacer es procesar mediante la configuración que se hizo, ¿no? En este caso, lo que se configura más importante no es tanto este main, que si no es algo así como que para que esté encendido o apagado o medio reposo, sino el handle message. Puesto que aquí vamos a ya pasar más específicamente cómo queremos que se haga.

Por ejemplo, vamos a tener el contexto del CTP Message context. Vamos a tener dentro de este contexto, los parámetros que tiene son el message, que es un objeto con el mensaje, tanto con metadata y el contenido del mensaje, pero lo que más va a importar en este caso va a ser el content, la conversación, en este caso la conversación, por ejemplo, con un usuario va a tener, no sé, digamos, eh el XMTP agent conversa conmigo, va a tener una conversación en específico y esa conversación va a tener un único ID identifier, que es lo que nos va a servir para identificar entre diferentes usuarios.

Entonces, inicializamos la función, le pasamos el contexto y recuperamos lo que nos va a servir, ¿no? Que van a ser el mensaje del usuario, el address de quien lo manda, el ID del mensaje y también tenemos que obtener el wallet address de la gente, ¿no? Pero eso como ya está configurado, solo tenemos que hacer las llamadas a sus parámetros y listo. los expense tools, que esto como ya dijimos, este ya está configurado, tenemos nuestro expense manager, simplemente inicializamos y creamos el contexto que nosotros vamos a pasar. Entonces, ya hemos obtenido la data que queríamos del contexto, así como lo la wallet de nuestro agente y

los tools. Simplemente lo que tenemos que hacer es con este contexto inicializado se lo pasamos al AI agent para que procese el mensaje. Y este process message nosotros ya lo habíamos inicializado acá, no sé si se acuerdan, en el que nosotros pasamos el mensaje y la el contexto. Entonces, simplemente esto lo que hacía era pasar eh el mensaje en crudo, enriquecido con un poco más del contexto y llama hacíamos la llamada de la gente para que lo procese.

Después de esto, simplemente la responde. Esperamos a que responda, mejor dicho, y nada más. Con esto, nuestro agente ya podría tanto realizar las funciones que hemos dicho que haga. Ya va a inicializar una wallet para que pueda ver la ver realizar mandarit, ver el balance, tener un address, inicializar. Ya hemos inicializado el XNTP Service, así como el AI agent, tanto ponerle un prom, eh crear las herramientas que ya hemos puesto acá e inicializarlo, ¿no? Con todas nuestras APS. Lo que queda ahora es probar cómo

este funciona. Simplemente, dado que este proyecto está configurado, simplemente lo que tenemos que poner npm start y nos va inicializar nuestro eh agente, ¿no? Nos va a inicializar en un en una página de Xnipp. Entonces, simplemente lo que nosotros tenemos que hacer es abrir. A ver, un momento aquí. Y aquí tenemos el mensaje, ¿no?, con nuestra agente. Entonces, podemos ponerle "Hey vamos a esperar y vamos a ver ahí nos va a dar el contexto, ¿no? Que es, hola, soy un eh agente de gastos de viajes.

¿Puedo ayudarte a traquear tus gastos? dividir tus cuentas y hacer pagos en base polia. Eh, por ejemplo, vamos a ponerle, ¿no?, el caso de uso I spend 0.05 on fly on mi vamos a poner ya y luego la gente lo va a procesar y va a decir, "Oh, entonces he añadido 0.5 5 gastos de 1000 para tus eh 0.5 para 1000 en tus gastos. ¿Quieres añadir algo más?

Pero también podemos ver nosotros cómo es que se maneja la persistencia teniendo eh habiendo configurado para que se guarde aquí en en local, ¿no? Podemos ver que se ha guardado tal como queremos. nos guarda un ID, nos guarda el monto, nos guarda la descripción, por quién ha pagado, por quién ha sido pagado este gasto y nos guarda un time stamp también para saber en qué momento se realizó este esta conversación. Entonces, pongámosle un poco más de ejemplo, ¿no? Eh, my friend José SPEN 0.003 dinner.

Eh, bueno, entonces comprendido. Eh, José ha gastado 0.03 ET dinner. Eh, entonces se ha añadido a tus expenses de la misma forma, ¿no? Añade esto aquí y como podemos ver maneja un ID general para este, ¿no? ¿Por qué? Porque este esto de aquí es solo para esta conversación. Entonces, si se crea otra conversación, va a crear otro elemento de este con su mismo tipo de gastos para cada uno para poder separar entre usuario. Entonces, hay que ponerle algo más y luego para probar su disponibilidad, ¿no? SPEN 0.01 ser un eh

on en viaje. Entonces, esperamos que procese y vemos que también añadió. Entonces, podemos preguntarle ahora cuánto gasté en total. Entonces podemos preguntarle, ¿no? ¿Cuánto es el total que he gastado? Entonces podemos ver que nos hace la suma, ¿no?, de todo el gasto que hemos tenido. Entonces, podemos ver 0.05 + 0.03 03 + 0 nos da correcto. Entonces quiero dividir eh vamos a poner que

queremos dividir este gasto entre dos personas, ¿no? I want to split the expenses with entonces quiero dividir los gastos en dos y entonces nos dicen, ¿no? Entonces, para la división de los gastos tenemos que en total has gastado tal, las personas en las que se van a dividir son dos y cuánto seben que divid cuánto tiene que parar cada persona y nos da esto. Entonces podemos ver que funciona bien con todas las herramientas que le hemos dado, eh los tools que se ha configurado. Entonces, podemos ver que

la gente está funcionando bien si nosotros lo parametrizamos bien y va a hacer lo que nosotros queramos. Entonces, por ejemplo, también podemos chequear eh puedes chequear en mi check my balance para ver eh las configuraciones que tiene, ¿no? De de wallet. Por ejemplo, eh podemos ver que nos dice que tenemos cero HIT, ¿no? Pero eso es porque este nos crea una wallet, o sea, para cada chat le va a crear una wallet y podemos ver que tiene esta wallet. Por ejemplo, vamos a ponerle un poco de de una test de Fet. Vamos a llamar Fet y vamos a darle un poco de y vamos a probar

My Balance. Entonces ahora podemos ver que sí efectivamente funcionan porque hemos visto que al inicio tenía cero y después que hemos llamado la fuset con la wallet nos puede leer. Entonces, tranquilamente, después de configurar todo lo que tú quieras que haga tu wallet, por ejemplo, puede hacer no solo llamar al balance, no solo mandarit, sino lo que puede hacer es llamar un contrato, mintear un NFT o mintear un token. Entonces, la configuración que tú le vayas a hacer a tu agente va a depender mucho de todo esto, de el wallet service, el expense

manager, el XMTP Service. Entonces, todo esto eh tiene que tienes que saber que es totalmente configurable, solamente tienes que seguir los mismos patrones, ¿no?, que te piden, qué tienen que ser, tienes que ser, por ejemplo, los wallets, tiene que ser una assign function, su nombre y ya con lo demás, como tienes el wallet service inicializado, simplemente tienes que hacer las llamadas a los parámetros que necesita. O sea, ¿qué parámetros son? ¿Cómo hacer las llamadas? Eso tranquilamente pueden preguntarle una o leer la documentación que les pasé y ahí pueden ver mejor cómo eh realizar, ¿no?, estas llamadas.

Pero eh conmigo eso sería todo hasta aquí. Eh, la verdad que ya me pasasé un poco más de la hora incluso. Eh, espero que hayan podido entender bien cómo es que pueden inicializar de tanto sus AI agents, sus su manager de la aplicación o de la utilidad del caso de uso que quieran hacer para que puedan así ustedes integrar un agente de IA en su aplicación. Entonces, sin más voy a dejar de compartir y h tienen alguno ustedes alguna pregunta tal vez para poder responderles si les queda alguna duda de algo h ninguna duda. Ninguna duda.

Bueno, si si no tienen dudas, si no hay más dudas, eh, fue un placer haber estado con ustedes. A ver, ah ah, subir a YouTube la grabación. Ah, sí, la la grabación se va a subir luego a YouTube en si quiero ejecutar. Es que sí, sí, no hay problema con la grabación, se va a subir después. Eh, para ejecutar el repoot solamente tienen que seguir los pasos que les que le he dicho, ¿no? Tienen que configurar sus variables de entorno, tanto el XMTP Wallet, que ya si no has visto tal vez al inicio te has perdido, se genera con este script nada más eh con el node eh J mpn G keys y te va a generar unas keys que tú vas a completar acá.

Luego para estas kiss lo tienes que obtener del Coinbase Platform, eh, dep platform. Lo voy a pasar acá de nuevo. Ah, no, no, no, no, simplemente es eso, eh, eso y instalar los paquetes, ¿no?, que se tiene eh tu npm install, instala los paquetes, completas las variables en torno y ya puedes este inicializarlo. Dale, chicos, muchas gracias, gracias por su atención. Eh, eh, ¿cuándo lo subirán? Ah, ya. Que cuándo lo subirán. Pucha, eso sí no sé, pero yo estimaría que de aquí en unos días. Ah, claro, sí les puedo pasar mi Telegram para que me puedan escribir si es que tienen dudas.

Eh, ahorita les paso el usuario. Eh, este es mi usuario. Eh, los pasé por chat por si de Telegram, por si tienen dudas. Normalmente normal pueden escribirme. Estoy también yo en los grupos de de Base Latam, estoy en los grupos de Depripac y también estoy en el grupo de de lo que son los base batchs. Así que sin problemas, ahí estoy. Cualquier consulta, cualquier duda, no no duden en escribir. Sí, sí, ahí se va a subir en el canal de Deprip Pack o en el de web tres compass, si mal no me equivoco.

Uy eso puedes hacer la consulta de nuevo en el canal de Basebatch para preguntarle a Solí en el de Tripac, ¿no? Ya, chévere, chévere. Entonces, muchas gracias.