Domando los Modelos de Lenguaje a través de TypeScript

Rate this content
Bookmark

Probablemente hayas jugado con bots como ChatGPT y los hayas utilizado para brainstorming. Tal vez hayas notado que obtener respuestas en la estructura o formato correcto ha sido un desafío. Como personas, eso está bien, pero los programas son mucho más quisquillosos. Hemos estado experimentando con el uso de TypeScript en sí mismo como una forma de guiar y validar las respuestas de los modelos de lenguaje.

This talk has been presented at TypeScript Congress 2023, check out the latest edition of this JavaScript Conference.

FAQ

Daniel Rosenwasser es el gerente de programa en el equipo de TypeScript en Microsoft.

TypeChat es una biblioteca desarrollada por el equipo de TypeScript en Microsoft para facilitar la implementación de modelos de lenguaje en aplicaciones, permitiendo respuestas estructuradas en formato JSON que se alinean con tipos definidos.

TypeChat permite guiar a los modelos de lenguaje para que produzcan datos en un formato específico utilizando TypeScript, facilitando que las aplicaciones analicen y utilicen esta información de manera eficiente.

Utilizar JSON permite que las respuestas de los modelos de lenguaje sean fácilmente analizables y manejables por las aplicaciones, evitando la complejidad de analizar lenguaje natural.

Uno de los principales desafíos es obtener respuestas en un formato específico y consistente, dado que los modelos de lenguaje son no deterministas y pueden generar respuestas en formatos variables.

TypeChat utiliza los tipos definidos en TypeScript para validar las respuestas del modelo de lenguaje, asegurando que coincidan con el formato esperado y sean correctas.

Más información sobre TypeChat se puede encontrar en su repositorio de GitHub, donde los usuarios pueden acceder a ejemplos, discusiones y documentación adicional.

Daniel Rosenwasser
Daniel Rosenwasser
26 min
21 Sep, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
TypeChat es una biblioteca de código abierto que utiliza tipos de TypeScript para guiar y validar las respuestas de los modelos de lenguaje. Permite la creación de respuestas complejas y proporciona una forma de corregir errores en el modelo. Los programas de TypeChat permiten un mejor flujo de datos y la capacidad de referirse a pasos individuales. El ejemplo de matemáticas demuestra el uso de un traductor de programas y técnicas de metaprogramación para la seguridad de tipos. Los modelos de lenguaje entrenados tanto en código como en prosa funcionan bien en este contexto.

1. Introducción a TypeChat

Short description:

Hola a todos, mi nombre es Daniel Rosenwasser y soy el gerente de programa en el equipo de TypeScript en Microsoft. Hoy quiero hablarles sobre TypeChat, otra cosa en la que he estado trabajando recientemente con otros miembros de mi equipo. En los últimos meses, probablemente hayan visto mucho sobre inteligencia artificial y modelos de lenguaje grandes. Estos modelos de lenguaje son muy poderosos y es posible que hayan tenido la idea de intentar incorporar la inteligencia de uno de estos modelos de lenguaje en su aplicación, tal vez para agregar una interfaz de lenguaje natural de alguna manera.

Hola a todos, mi nombre es Daniel Rosenwasser y soy el gerente de programa en el equipo de TypeScript en Microsoft. Hoy quiero hablarles sobre TypeChat, otra cosa en la que he estado trabajando recientemente con otros miembros de mi equipo. Entonces, en los últimos meses, probablemente hayan visto mucho sobre inteligencia artificial y modelos de lenguaje grandes. Estos modelos de lenguaje son muy poderosos y probablemente hayan tenido la oportunidad de usarlos en forma de algo como ChatGBT o un programa de chat similar donde pueden hacerle preguntas al modelo, y este puede darles respuestas, pueden iterar a través de ideas y es una excelente manera de iterar creativamente a través de conceptos y demás. Eso funciona muy bien para las personas, pero estos modelos de lenguaje son muy poderosos y es posible que hayan tenido la idea de intentar incorporar la inteligencia de uno de estos modelos de lenguaje en su aplicación, tal vez para agregar una interfaz de lenguaje natural de alguna manera. Entonces, como ejemplo, supongamos que tenemos alguna aplicación que debe ayudarnos a planificar planes para un día, planes para el fin de semana, tal vez específicos de una ubicación. No parece impracticable dado el hecho de que estos modelos han sido entrenados con tanta data en el mundo, por lo que podrían saber mucho sobre Seattle u otra ciudad.

2. Uso de tipos de TypeScript para guiar modelos de lenguaje

Short description:

En esta aplicación, quieres obtener datos de modelos de lenguaje. Sin embargo, los modelos de lenguaje a menudo producen datos que no son fáciles de analizar. Puedes hacer que los modelos de lenguaje respondan en JSON, pero no siempre coincidirá con el formato esperado. Los tipos de TypeScript pueden guiar al modelo de lenguaje y proporcionar el formato deseado. Sin embargo, el modelo de lenguaje aún puede producir respuestas que no se ajusten exactamente. Se necesita validación para hacer que la IA intente nuevamente.

estás tratando de buscar ideas para. En esta aplicación, tal vez solo queremos poder hacerle una pregunta, esa es nuestra intención de usuario, y luego obtener un conjunto de resultados con un par de lugares y cada una de sus descripciones también. Entonces eso parece estar bien, pero ¿cómo harías para que uno de estos modelos de lenguaje produzca data que puedas usar en esta aplicación? Lo que puedes haber notado al intentar hacer algo así es que terminas tratando de mimar a la IA para que la dé en un formato específico, y incluso una vez que está en ese formato, genera un lenguaje natural que no siempre será fácil de analizar. Por ejemplo, aquí hay una solicitud y una respuesta que tomó un par de intentos para obtener algo razonable, ¿verdad? Una de las cosas que puedes notar es que termino tratando de darle un poco de orientación sobre cómo espero que sea la respuesta, ¿verdad? Esto no es tan malo, ¿verdad? Pero principalmente porque ha dado una respuesta regular en un formato específico. Y así me ha dado un formato de elementos de lista. Cada uno de ellos está numerado. Y luego entre el lugar y la descripción, tengo dos puntos. Ahora, ¿la IA siempre va a volver con ese esquema o formato? No necesariamente. Muchos de estos modelos de lenguaje son no deterministas. Entonces realmente no puedes contar con este formato. Pero incluso si pudieras contar con ese formato, no siempre puedes confiar en que el data se pueda analizar de manera uniforme, ¿verdad? Por ejemplo, en este caso, tengo una lista y todo está en este formato. ¿Qué tal si intentamos dividir por los dos puntos, ¿verdad? Podrías intentar decir, déjame intentar quitar cada uno de los números y luego dividir por los dos puntos. Pero ¿qué pasa si uno de los elementos de tu lista tiene dos puntos dentro del título o algo así, ¿verdad? Básicamente estás tratando de analizar lenguaje natural en este punto, ¿verdad? Y ahora tienes un error, y ahora tienes que averiguar cómo ser resistente a eso. Y así esto termina siendo un poco impráctico para la mayoría de las personas, ¿verdad? Es muy difícil analizar lenguaje natural. Pero muchos de ustedes probablemente también se dieron cuenta de que pueden hacer que los modelos de lenguaje respondan en forma de JSON. Y eso es genial, ¿verdad? Ahora realmente tienes algo que tu aplicación puede analizar fácilmente con JSON.parse o lo que sea, y obtener los datos que necesitas y trabajar a partir de eso. Pero eso realmente solo funciona para ejemplos simples, ¿verdad? Aquí pude decir, aquí hay un ejemplo del JSON que quiero obtener, ¿verdad? Tengo un lugar y una descripción, un lugar y una descripción. Y la IA es bastante buena para entender eso. Pero no nos dice acerca de propiedades opcionales, tal vez el caso en el que tienes tres tipos diferentes de objetos que esperas que estén en una posición específica, cosas así. Y así, solo dar ejemplos sería impráctico porque te meterías en estas explosiones combinatorias de todos los tipos de cosas que realmente querrías proporcionar. Los ejemplos no son suficientes. Lo que necesitas es algo un poco más. Y resulta que hay un formato que funciona bastante bien, en su mayor parte, en nuestra experiencia. Y es algo con lo que todos ustedes están familiarizados aquí en esta conferencia de TypeScript, que son los tipos. Los tipos de TypeScript son en realidad un gran formato para describir el formato exacto que queremos de un modelo de lenguaje y todas las formas en las que esperamos. Entonces, los tipos son realmente buenos para guiar al modelo de lenguaje hacia lo que queremos, ¿verdad? Y en realidad puedes tomar los tipos en una aplicación, como el texto real de los tipos en tu programa, tomar una intención de usuario y crear una solicitud que puedes enviar a un servicio de IA, a un modelo de lenguaje. Y eso te proporcionará JSON, Dirías, dame una respuesta en forma de JSON, aquí está el tipo al que debes cumplir cuando proporciones esa respuesta. Y así, ahora puedes guiar al modelo de lenguaje.

Pero como dije, el modelo de lenguaje no siempre va a regresar con una respuesta que sea exactamente como esperamos, ¿verdad? Tal vez regrese con JSON, pero no es del formato precisamente, ¿verdad? Siempre podemos decir, oye, no me diste el JSON correcto, inténtalo de nuevo. Pero necesitas algo más que empuje a una IA para que puedas decir

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

Los tipos más útiles de React
React Day Berlin 2023React Day Berlin 2023
21 min
Los tipos más útiles de React
Top Content
Today's Talk focuses on React's best types and JSX. It covers the types of JSX and React components, including React.fc and React.reactnode. The discussion also explores JSX intrinsic elements and react.component props, highlighting their differences and use cases. The Talk concludes with insights on using React.componentType and passing components, as well as utilizing the react.element ref type for external libraries like React-Select.
TypeScript y React: Secretos de un matrimonio feliz
React Advanced 2022React Advanced 2022
21 min
TypeScript y React: Secretos de un matrimonio feliz
Top Content
React and TypeScript have a strong relationship, with TypeScript offering benefits like better type checking and contract enforcement. Failing early and failing hard is important in software development to catch errors and debug effectively. TypeScript provides early detection of errors and ensures data accuracy in components and hooks. It offers superior type safety but can become complex as the codebase grows. Using union types in props can resolve errors and address dependencies. Dynamic communication and type contracts can be achieved through generics. Understanding React's built-in types and hooks like useState and useRef is crucial for leveraging their functionality.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Consejos y Trucos Profundos de TypeScript
Node Congress 2024Node Congress 2024
83 min
Consejos y Trucos Profundos de TypeScript
Top Content
Featured Workshop
Josh Goldberg
Josh Goldberg
TypeScript tiene un sistema de tipos poderoso con todo tipo de características sofisticadas para representar estados de JavaScript salvajes y extravagantes. Pero la sintaxis para hacerlo no siempre es sencilla, y los mensajes de error no siempre son precisos al decirte qué está mal. Vamos a profundizar en cómo funcionan muchas de las características más poderosas de TypeScript, qué tipos de problemas del mundo real resuelven, y cómo dominar el sistema de tipos para que puedas escribir código TypeScript verdaderamente excelente.
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.
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
React Advanced 2022React Advanced 2022
148 min
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
¿Eres un desarrollador de React tratando de obtener los máximos beneficios de TypeScript? Entonces esta es la masterclass para ti.En esta masterclass interactiva, comenzaremos desde lo básico y examinaremos los pros y contras de las diferentes formas en que puedes declarar componentes de React usando TypeScript. Después de eso, pasaremos a conceptos más avanzados donde iremos más allá de la configuración estricta de TypeScript. Aprenderás cuándo usar tipos como any, unknown y never. Exploraremos el uso de predicados de tipo, guardias y comprobación exhaustiva. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapa de tipo nuevo. Y comenzaremos a programar en el sistema de tipos de TypeScript usando tipos condicionales e inferencia de tipos.
AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)