Una especificación de función completa está disponible para su inspección. aquí.
La implementación de Flutter de la barra de lenguaje natural se basa en Dardo LangChain, la versión Dart del ecosistema LangChain. Toda la ingeniería rápida ocurre en el lado del cliente. Resulta que tiene más sentido mantener juntas las pantallas, la lógica de navegación y las plantillas de funciones. De hecho, las plantillas de funciones están integradas en la estructura de navegación, ya que existe una relación uno a uno. A continuación se muestra el código para activar y navegar a la pantalla de tarjeta de crédito:
DocumentedGoRoute(
name: 'creditcard',
description: 'Show your credit card and maybe perform an action on it',
parameters: [
UIParameter(
name: 'limit',
description: 'New limit for the card',
type: 'integer',
),
UIParameter(
name: 'action',
description: 'Action to perform on the card',
enumeration: ['replace', 'cancel'],
),
],
pageBuilder: (context, state) {
return MaterialPage(
fullscreenDialog: true,
child: LangBarWrapper(
body: CreditCardScreen(
label: 'Credit Card',
action: ActionOnCard.fromString(
state.uri.queryParameters['action']),
limit:
int.tryParse(state.uri.queryParameters['limit'] ?? ''))));
}),
En la parte superior vemos que se trata de una ruta: un destino en el sistema de rutas de la aplicación, que se puede activar a través de un hipervínculo. La descripción es la parte que el LLM utilizará para hacer coincidir la pantalla con la intención del usuario. Los parámetros debajo (límite de tarjeta de crédito y acción a tomar) definen los campos de la pantalla en lenguaje natural, para que el LLM pueda extraerlos de la pregunta del usuario. Luego, el elemento pageBuilder define cómo se debe activar la pantalla, utilizando los parámetros de consulta del enlace profundo. Puedes reconocerlos en https://langbar-1d3b9.web.app/home: escriba: ‘límite de tarjeta de crédito a 10000’ en el NLB, y la barra de direcciones del navegador leerá: https://langbar-1d3b9.web.app/creditcard?limit=10000.
Se utilizó un agente LangChain, lo que hace que este enfoque sea independiente de GPT, por lo que también se puede aplicar utilizando otros LLM como Llama, Gemini, Falcon, etc. Además, facilita agregar asistencia basada en LLM.
La barra de lenguaje natural ofrece un panel de historial de interacciones plegable, para que el usuario pueda repetir fácilmente declaraciones anteriores. De esta manera, se conserva el historial de interacción, de manera similar a las interfaces de chat, pero en una forma compacta y plegable, lo que ahorra espacio en la pantalla y evita el desorden. Las declaraciones de idioma anteriores del usuario se muestran utilizando el idioma que el usuario ha utilizado. Las respuestas del sistema se incorporan como un hipervínculo en esa declaración del usuario, por lo que se puede hacer clic en ellas para reactivar nuevamente la pantalla correspondiente:
Cuando el LLM no puede determinar completamente la pantalla a activar, las respuestas del sistema se muestran explícitamente, en cuyo caso el panel de historial se expande automáticamente. Esto puede suceder cuando el usuario ha proporcionado muy poca información, cuando la solicitud del usuario está fuera del alcance de la aplicación o cuando se produce un error:
El panel de historial es un buen lugar para ofrecer atención al cliente y ayuda contextual en forma de chatbot. Al momento de escribir este artículo, hay una animada discusión y evolución de las técnicas RAG (Generación Aumentada de Recuperación) que permiten a los chatbots responder preguntas de los usuarios basándose en una gran cantidad de contenido de texto proporcionado por su propia organización. Además de eso, la barra de lenguaje natural es un buen punto de partida para imaginar qué más potencia y facilidad puedes darle a las aplicaciones que utilizan lenguaje natural. Por favor deja tus ideas en los comentarios. Estoy realmente curioso.
Además de su aplicación, su organización también tiene un sitio web con mucha información para sus usuarios. Quizás este sitio web ya tenga un chatbot. Quizás incluso tu aplicación ya tenga un chatbot. El panel del historial de interacciones es un buen lugar para tener también este tipo de conversaciones de atención al cliente.
En el contexto descrito anteriormente mantenemos un historial de interacción lingüística con nuestra aplicación. En el futuro, podremos agregar (invisiblemente) un rastro de interacción directa del usuario con la GUI a esta secuencia histórica. Luego se podría brindar ayuda contextual combinando el historial de interacción del usuario con RAG en la documentación de ayuda de la aplicación. Las preguntas de los usuarios se responderán más en el contexto del estado actual de la aplicación.
La propuesta actual es un MVP. Ofrece una plantilla estática para la interpretación de las solicitudes lingüísticas de un usuario en el contexto de una aplicación. Esta técnica abre un amplio espectro de mejoras futuras:
- Cuando los usuarios plantean una pregunta cuando están en una pantalla específica, es posible que podamos agregar dinámicamente plantillas (funciones) de interpretación más específicas al mensaje que dependen del estado de esa pantalla, como “¿Por qué el botón de enviar está atenuado/deshabilitado?” ‘.
- La llamada a funciones mediante una barra de lenguaje natural se puede utilizar como asistente para aplicaciones creativas, por ejemplo, para ejecutar procedimientos en selecciones como “hacer el mismo tamaño” o “convertirse en un componente reutilizable”. Microsoft Copolit 365 ya utiliza funciones similares. El enfoque adoptado en este artículo también puede permitir que su organización aproveche dichas funciones.
La interacción del lenguaje natural con cada aspecto de su sistema se convertirá rápidamente en un componente importante de cada interfaz de usuario. Cuando utilice llamadas a funciones, debe incluir las capacidades de su sistema en el mensaje, pero pronto llegarán al mercado métodos más económicos y potentes. Por ejemplo, OpenAI se ha abierto recientemente ajuste del modelo con llamadas a funcioneslo que le permite crear una versión de LLM con las capacidades de su sistema integradas. Incluso cuando esas capacidades son muy extensas, la carga en el mensaje sigue siendo limitada.
Los LLM se pueden utilizar como un maravilloso pegamento para interactuar con aplicaciones basadas en GUI en lenguaje natural a través de “llamadas a funciones”. Se introdujo una barra de lenguaje natural que permite a los usuarios escribir o expresar sus intenciones y el sistema responderá navegando a la pantalla correcta y completando previamente los valores correctos. La aplicación de muestra te permite sentir realmente cómo es eso y el código fuente disponible hace posible aplicar esto rápidamente a tu propia aplicación si usas Flutter. La barra de lenguaje natural no es solo para Flutter o aplicaciones móviles, sino que se puede aplicar a cualquier aplicación con una GUI. Su mayor punto fuerte es que abre todas las funcionalidades de la aplicación al usuario desde un único punto de acceso, sin que el usuario tenga que saber cómo hacer las cosas, dónde encontrarlas o incluso tener que conocer la jerga del idioma. aplicación. Desde la perspectiva del desarrollo de aplicaciones, puede ofrecer todo esto al usuario simplemente documentando el propósito de sus pantallas y los widgets de entrada en ellas.
Sígueme en LinkedIn
Agradecimientos especiales a David Miguel Lozano por ayudarme con Dardo LangChain
Algunos artículos interesantes: diálogo multimodal, blog de Google sobre GUI y LLM, interpretar la interacción GUI como lenguaje, Asistentes impulsados por LLM, Idioma y GUI, Chatbot y GUI
Todas las imágenes de este artículo, a menos que se indique lo contrario, son del autor.