Graphi: Revolutionizing Dataflow Programming

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

Debido a la disponibilidad de varios servicios de IA y LLMs de código abierto, ahora podemos construir aplicaciones "agentes" muy sofisticadas. Gestionar múltiples agentes de IA que se ejecutan simultáneamente y controlar el flujo de datos entre ellos es bastante difícil en la programación tradicional con Promise o async/await. Proponemos un estilo de "programación de flujo de datos" junto con una implementación de referencia de código abierto, GraphAI (https://github.com/receptron/graphai).

This talk has been presented at JSNation US 2024, check out the latest edition of this JavaScript Conference.

Satoshi Nakajima
Satoshi Nakajima
19 min
21 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy presenta Graphi, un entorno de programación declarativa de flujo de datos para IA. Se enfatiza la importancia de las APIs asíncronas y los entornos de programación profundos en la era de la IA. La versión de JavaScript de OpenAPI permite un manejo más fácil de múltiples llamadas asíncronas. La programación declarativa de flujo de datos mejora la eficiencia y async/await simplifica la llamada a funciones de API asíncronas. Para optimizar aún más la programación asíncrona, se recomienda un enfoque de flujo de datos. Graphi permite construir gráficos conversacionales y manejar el flujo de datos cíclico. Ofrece ventajas como el paralelismo, la capacidad de obtener resultados y la escalabilidad. Graphi introduce nuevos conceptos como gráficos anidados y computación distribuida. Es un proyecto de código abierto que se está mejorando activamente y da la bienvenida a contribuciones.

1. Introducción a Graphi

Short description:

Hoy, voy a hablar sobre Graphi, el entorno de programación declarativa de flujo de datos para AI Asia. Con el rápido avance de la IA, las aplicaciones tradicionales están cambiando. Ahora usamos modelos basados en redes neuronales que a menudo son lentos y requieren APIs síncronas. Sin embargo, la industria no ha reconocido completamente la importancia de las APIs asíncronas y los entornos de programación profundos.

Así que hoy, voy a hablar sobre Graphi. Se escribe Graph AI, pero yo lo llamo Graphi, que es el entorno de programación declarativa de flujo de datos para AI Asia.

Así que las aplicaciones tradicionales se escriben típicamente, algún tipo de aplicación de control sobre una base de datos, pero debido al rápido avance de la IA, la forma en que construimos aplicaciones está cambiando bastante.

Además de la base de datos, usamos muchos modelos basados en redes neuronales como modelos de lenguaje grande o modelos de generación de imágenes, modelos de reconocimiento de imágenes. Así que esos, los modelos están típicamente disponibles como una API en el servidor remoto o a veces en la propia máquina. El desafío de esos, el módulo de IA, es que son muy lentos. A diferencia de las bases de datos típicas, algunas de las llamadas a la API tardan como 20 segundos, 30 segundos. Así que definitivamente tenemos que usar una API asíncrona, ¿verdad? No es adecuado usar una API síncrona que bloquee el hilo, pero creo que la industria aún no está reconociendo la importancia de las APIs asíncronas y también el entorno de programación profundo. Un buen ejemplo es que la API de Python del SDK de OpenAI es síncrona, lo cual es increíble desde nuestro punto de vista, ¿verdad?

2. Declarative Dataflow Programming in JavaScript

Short description:

La versión de JavaScript de OpenAPI es asíncrona, lo que permite un manejo más fácil de múltiples llamadas asíncronas. El cambio del flujo de control imperativo a la programación declarativa de flujo de datos mejora la eficiencia. Usar async y await simplifica la llamada a funciones API asíncronas. Promise.all se puede usar para ejecutar funciones independientes de manera concurrente. Sin embargo, para optimizar completamente la ejecución se requiere un enfoque de programación de flujo de datos.

Afortunadamente, la versión de JavaScript de OpenAPI es asíncrona, por lo que podemos aprovecharla, pero aún así lidiar con múltiples llamadas asíncronas es difícil. Y además, la aplicación está cambiando de un simple cliente-servidor a algo más distribuido, ¿verdad? A veces ejecutas toda la aplicación en el lado del cliente o toda la aplicación en el lado del servidor basado en algunos eventos externos o múltiples máquinas. Y lidiar con múltiples máquinas, esencialmente la computación distribuida, que no sabemos cómo escribir un programa de manera eficiente, ¿verdad? Por supuesto, usando JavaScript, podemos ejecutar el mismo código en el lado del cliente y del servidor. Pero nuevamente, coordinar la operación entre máquinas es complicado. Así que tenemos que realmente encontrar la manera correcta de programar. Y luego mi propuesta es que cambiemos de un flujo de control imperativo tradicional a la programación declarativa de flujo de datos. Así que esta es la típica aplicación tipo agente de IA. Llamamos a múltiples llamadas a API asíncronas.

3. Optimizing Asynchronous Programming with Dataflow

Short description:

Usar async y await para programar como si fuera sincrónico. Sin embargo, ejecutar todo secuencialmente es ineficiente. Promise.all puede ejecutar funciones independientes concurrentemente. Pero para optimizar aún más, la función D puede comenzar inmediatamente después de A y B. Manejar dependencias asíncronas complejas es complicado y difícil. Una solución es adoptar completamente la programación de flujo de datos usando JSON o YAML.

Y algunas de ellas son de un segundo, algunas de ellas son de 20 segundos. Así que este tipo de programación, usando async y await, con lo que estamos familiarizados, y nos encanta porque es mucho más fácil comparado con un mecanismo de llamada a función. Y podemos escribir el código como si fueran sincrónicos.

Pero el problema es que este enfoque, terminamos ejecutando todo secuencialmente, ¿verdad? Aunque las funciones A, B, C son independientes. Así que podríamos ejecutarlas concurrentemente. Este estilo de programación las ejecuta secuencialmente. Así que la cantidad total de tiempo requerido para ejecutar esta función, esa operación, es la suma de cada llamada a la API.

Así que para resolver ese problema, sabemos que podemos usar promise all para ejecutar las funciones A, B, C concurrentemente. Así que realmente reducimos la cantidad total de tiempo requerido. Pero nuevamente, esto no es óptimo aún porque las funciones D y E son independientes. Así que podemos añadir otra promise all para ejecutar D y E concurrentemente. Mucho, mucho mejor que todo secuencialmente, pero aún no es óptimo, ¿verdad? La función D realmente no necesita esperar a que C termine. Así que podríamos realmente comenzar D inmediatamente después de que A y B estén hechas, para que la cantidad total de tiempo se reduzca aún más.

Pero el asunto es, este es el quiz, ¿verdad? ¿Cómo escribir este código? Muy complejo. Esto es solo seis llamadas a funciones. Pero manejar este código de dependencia asíncrona se volvió realmente complicado, ¿verdad? Puedes combinar el promise all, async await, más la llamada a función. Podríamos escribir ese código. Pero ese tipo de código es realmente difícil de leer, difícil de escribir y difícil de mantener. Podemos fácilmente introducir algunos errores y un efecto secundario tan difícil. Creo que la única solución es ir completamente a la programación de flujo de datos, que describe las dependencias de cada llamada a función pero también declarativa. El significado declarativo es que no necesitamos inventar un nuevo lenguaje. Podemos usar ya sea JSON o YAML.

Así que aquí es cómo describimos este programa en Graphi. Así que el lado izquierdo es solo un código, ¿verdad? Simplemente define un gráfico, ¿verdad? Con un nodo seis de A a F, y describe, ¿verdad? Que el nodo A necesita llamar a la función A, el nodo B necesita llamar a la función B, y A, B, C son independientes. Pueden ejecutarse en cualquier momento. Y el nodo D, E, F tiene alguna entrada, ¿verdad? D tiene entrada de A y B, E tiene entrada de B y C. Así que el programa simplemente describirá fácilmente esas dependencias, ¿verdad? Los flujos de datos. Y luego el tiempo de ejecución, en este caso, el tiempo de ejecución de Graph AI averiguó cuándo, cómo ejecutar. Así que el programador no necesita decir explícitamente que D necesita volver a ejecutar R, S, Q, A y B, es solo flujo de datos. Luego vamos a la programación de IA real.

4. Building Conversational Graphs with Dataflow

Short description:

Cuando se llama a open in AI, se utiliza una pequeña función llamada open in AI agent para tomar el prompt de la entrada del usuario, llamar a la API de open in AI y devolver el resultado. Para manejar el flujo de datos cíclico, se introduce un concepto de bucle para ejecutar el gráfico varias veces. Para habilitar una conversación real, los mensajes del usuario y LLM se acumulan en un array y se devuelven a LLM. El código puede ser complejo, pero no demasiado complicado. Una demo muestra el gráfico ejecutándose en un navegador, esperando la entrada del usuario. Cuando se recibe la entrada, los datos fluyen y se ejecutan en consecuencia.

Por ejemplo, cuando queremos llamar a open in AI, construimos una pequeña función llamada open in AI agent, que toma el prompt de la entrada del usuario y luego llama a la API de open in AI y devuelve el resultado como una propiedad de texto. Así que simplemente tres nodos, obtienen la entrada del usuario, se la dan a LL, y luego muestran la salida.

Y esto es solo una pregunta y respuesta. Así que para convertirlo en un programa de chat, necesitamos tener algún tipo de bucle, pero el desafío es que el flujo de datos es cíclico. No se puede tener una flecha que regrese. Así que para resolver ese problema, se nos ocurrió la idea del concepto de un bucle dentro de un gráfico. Así que puedes especificar que este gráfico necesita ejecutarse tres veces, o a veces se ejecuta hasta que se cumple una cierta condición, al igual que el bucle while. Entonces podemos ejecutar este gráfico cíclico varias veces. Y esto es simplemente, solo ejecutamos el mismo código tres veces.

Así que no es un chat. Es simplemente obtener la entrada del usuario, luego mostrar el resultado de LLM. Así que para convertirlo en una conversación real, necesitamos acumular mensajes del usuario y LLM en un array, y luego devolverlo a LLM. Así que todo el código se ve así. Un poco complejo, pero no tan complejo. Para mostrarte cómo funciona, quiero mostrarte la demo. Así que el mismo gráfico ahora se está ejecutando en el navegador, ¿verdad? Como dije, el gráfico está implementado en PipeScript. Así que puede ejecutarse en el lado del servidor o del cliente, y esto se está ejecutando dentro del navegador. Y debido al gráfico, podemos obtener fácilmente algunos mensajes de esos gráficos para indicar el estado del gráfico.

Así que ahora mismo, está esperando, el nodo de entrada del usuario está esperando la entrada del usuario. Así que el verde indica que está activo. Así que voy a escribir qué es el dato. Luego presiono enviar, entonces verás que los datos realmente fluyen y se ejecutan. Bien. ¿Verdad? Así que cuando la entrada del usuario, en realidad, dos nodos, el nodo de verificación de entrada recibe la entrada del usuario y luego verifica si el usuario quiere terminar. Y en este caso, simplemente verifica si escribo atrás, y luego la bandera de continuar se convierte en falsa. Pero el valor predeterminado es continuar. Otro nodo, el nodo de mensaje del usuario, recibe la entrada del usuario, luego la añade a los mensajes, el array de mensajes, que originalmente está vacío, la añade y luego se la da a LLM. Así que LLM recibe solo un mensaje al principio, ejecuta, y luego genera la salida. La salida será mostrada por el nodo de salida, pero también este reductor recibió ese mensaje y luego lo añade a un array de mensajes.

5. Chat Application Inside Graphi

Short description:

El array punteado y la flecha indican un caso especial en el bucle, permitiendo que los datos fluyan de regreso al nodo fuente. El LLM explica las ventajas de la programación de datos, como el paralelismo, la resultabilidad y la escalabilidad. La conversación termina cuando la bandera de continuar se vuelve falsa en el punto de control.

Y este array punteado, la flecha indica una especie de caso especial solo permitido en el caso del bucle para que los datos regresen al nodo fuente. Voy a escribir uno más. Así que voy a decir, ¿cuál es el método? Y como estamos añadiendo los mensajes, sabe a qué se refiere con la programación de flujo de datos. Así que el LLM dice la ventaja de la programación de datos, como el paralelismo, la resultabilidad, la escalabilidad. Así que no hice una presentación, y luego simplemente añado al final, escribo adiós, luego el LLM me responde diciendo adiós, pero como el punto de control indica que quiero terminar la conversación, entonces esta bandera de continuar se vuelve falsa, por lo tanto, la ejecución del gráfico termina. Así es como la aplicación de chat dentro de Graphi.

6. Introduction to Graphi (Cont.)

Short description:

Graphi introduce nuevos conceptos para facilitar la escritura de programas complejos, como gráficos anidados, código reutilizable, map reduce y computación distribuida. Con Graphi, puedes ejecutar programas complejos en múltiples máquinas y acceder a bases de datos especiales desde servidores específicos. El proyecto Graphi es de código abierto.

Y Graphi, porque como dije que el gráfico típico la programación de flujo de datos, que porque el gráfico necesita ser cíclico, necesitábamos introducir algunos nuevos conceptos para facilitar la escritura de un programa complejo. Así que este es otro ejemplo, el primero mostramos el bucle, pero este es otro ejemplo, es un subgráfico. Así que en el grande, cuando comenzaste a escribir un gráfico grande, entonces se volvió complejo.

Así que a veces quieres crear una especie de gráfico anidado, para que podamos usar esa porción, al igual que una subrutina o función. Así que puedes tener un gráfico dentro de un gráfico, y desde el punto de vista externo, el gráfico exterior es desde el punto de vista, es como un nodo especial, que dentro ejecuta un subgráfico. Pero desde el padre ahora desde el punto de vista, simplemente recibe los datos de otro nodo en el lado del padre, ejecuta algunas operaciones de manera asincrónica, y luego devuelve la salida al padre. Así que esto permite el código reutilizable, también facilita la lectura del código.

Otro es el map reduce. Así que cuando estamos leyendo con un array de datos, como un benchmark, ¿verdad?, el benchmark de datos LLM tiene un gran conjunto de preguntas y respuestas. Y necesitamos lanzarlo a LLM para ver si responde correctamente. Y ejecutar ese código es nuevamente complejo. Si intentas hacerlo concurrentemente, así que hoy, muchas personas simplemente lo hacen de manera sincrónica, pero usando un gráfico, puedes simplemente dar un array de datos a este agente de mapa, lo llamamos el agente de mapa, el agente de mapa, reconoce ese array, y ejecuta el subgráfico en cada elemento.

Y luego, por supuesto, concurrentemente. Así que deberías tener cuatro elementos en la fila, luego el agente de mapa inicia cuatro operaciones paralelas concurrentemente. Y luego obtiene el resultado de cada ejecución, y luego lo empaqueta de nuevo en el array de resultados, y luego lo devuelve al padre. Así que estamos usando esto, y podemos ejecutar como el tipo de operación map reduce. Otra complejidad surge cuando el gráfico se vuelve grande y demasiado pesado para ejecutarse en una sola máquina. Podemos especificar realmente una cierta porción del gráfico, típicamente un subgráfico, para ser ejecutado en el servidor remoto. Nuevamente, todo es parte de la extensión del gráfico. Así que no necesitas preocuparte por cómo ejecutar remotamente. Simplemente necesitas especificar que este subconjunto del gráfico necesita ser ejecutado en esta URL, luego la extensión del gráfico lo resolverá y luego ejecutará. Y desde el punto de vista del padre, el punto de vista del gráfico del padre, es simplemente un nodo, ¿verdad?, que realiza la ejecución asincrónica.

Pero internamente, ese nodo envía el subgráfico al servidor remoto, el servidor remoto ejecuta concurrentemente, y devuelven el resultado a ese nodo, ese nodo, luego da el resultado de vuelta al nodo padre. Así es como funciona la computación distribuida dentro de un gráfico. Y como dije, porque el gráfico está implementado en pipes route, así que puedes ejecutar en el lado del cliente o del servidor o en cualquier lugar.

7. Executing Distributed Graphs with GraphI

Short description:

GraphI es un proyecto de código abierto disponible en GitHub y npm, con una licencia completamente MIT. Permite ejecutar gráficos distribuidos al dar un subgráfico a un servidor en nombre del servidor externo. Trabajamos activamente en mejorar GraphI y agregar nuevas capacidades a través de extensiones. Invitamos a otros a participar y ayudarnos en el desarrollo.

que como una base de datos especial necesita ser accedida solo desde un servidor particular. Así que en ese caso, damos un subgráfico a ese servidor para ejecutar en nombre del servidor externo, el cual no tiene acceso a la base de datos, ese servidor ejecuta ese gráfico, obtiene el resultado, y luego solo el resultado regresa al servidor padre.

Así es como ejecutamos gráficos distribuidos. Así que este es el GraphI, y esto es nuevo, pero lo hemos hecho de código abierto. Así que está disponible tanto en GitHub como también en node package manager. Y tiene una licencia completamente MIT. Así que cualquiera puede acceder a él, usarlo hoy. Estamos trabajando activamente para mejorar. De hecho, el motor está bien hecho, creo que muy pequeño. Y estamos agregando múltiples capacidades en extensiones, como un subgráfico o gráfico remoto o mapas, reducir, son todas extensiones.

Así que podemos agregar fácilmente las características al GraphI usando ese mecanismo. Así que estamos buscando que otras personas participen y nos ayuden. Necesitamos más mejoras en tutoriales y ejemplos, pero estamos muy abiertos.

Check out more articles and videos

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
SolidJS: ¿Por qué tanto Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: ¿Por qué tanto Suspense?
Top Content
Suspense is a mechanism for orchestrating asynchronous state changes in JavaScript frameworks. It ensures async consistency in UIs and helps avoid trust erosion and inconsistencies. Suspense boundaries are used to hoist data fetching and create consistency zones based on the user interface. They can handle loading states of multiple resources and control state loading in applications. Suspense can be used for transitions, providing a smoother user experience and allowing prioritization of important content.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)
Deja que la IA sea tu Documentación
JSNation 2024JSNation 2024
69 min
Deja que la IA sea tu Documentación
Workshop
Jesse Hall
Jesse Hall
Únete a nuestro masterclass dinámico para crear un portal de documentación impulsado por IA. Aprende a integrar ChatGPT de OpenAI con Next.js 14, Tailwind CSS y tecnología de vanguardia para ofrecer soluciones de código e resúmenes instantáneos. Esta sesión práctica te equipará con el conocimiento para revolucionar la forma en que los usuarios interactúan con la documentación, convirtiendo las búsquedas tediosas en descubrimientos eficientes e inteligentes.
Aspectos destacados:
- Experiencia práctica en la creación de un sitio de documentación impulsado por IA.- Comprensión de la integración de la IA en las experiencias de usuario.- Habilidades prácticas con las últimas tecnologías de desarrollo web.- Estrategias para implementar y mantener recursos de documentación inteligente.
Tabla de contenidos:- Introducción a la IA en la documentación- Configuración del entorno- Construcción de la estructura de documentación- Integración de ChatGPT para documentación interactiva