LangSmith: facilitando la interacción con LLMs

LangSmith: facilitando la interacción con LLMs

Raúl Pérula-Martínez, Artificial Intelligence Senior Manager

Raúl Pérula-Martínez

Artificial Intelligence Senior Manager

3 de noviembre de 2023

La evolución de los modelos lingüísticos de gran tamaño (LLMs, por sus siglas en inglés) y cuyo significado puedes conocer a través de este artículo, continúa a toda velocidad y no hace mucho, entre toda la información compartida en redes, nos encontramos con LangSmith, una plataforma desarrollada por LangChain para crear y compartir prompts, construir aplicaciones de LLMs y ponerlas en producción.

LangSmith igue las directrices del framework de código abierto de la empresa que lo creó, pero actualmente está en versión beta privada. Para unirte a la lista de espera (waitlist), solo necesitas crear una cuenta con tu dirección de correo electrónico.

También puedes crear una organización en la que puedes invitar a varios usuarios y gestionar tus casos de uso. Eso es lo que hemos hecho en SNGULAR y ahora vamos a mostrarte las diferentes funcionalidades, ventajas y desventajas de esta plataforma. Crear y compartir prompts nunca ha sido tan fácil. ¡Allá vamos!

Se puede utilizar LangSmith desde la página web o puedes integrarlo en tu código, según se indica en la documentación. Aunque esta documentación no es muy intuitiva para el usuario, puede ayudarnos a comenzar a utilizar la plataforma.

Desde la barra lateral podemos acceder a las secciones más importantes en las que vamos a trabajar: nuestros proyectos, los conjuntos de datos que gestionamos y probamos, y el Hub, donde se alojan los prompts compartidos por la comunidad.

sidebar_1-2.png Figura. Barra lateral 1.

Además, al pie de la barra lateral podemos encontrar el área de gestión de organizaciones y cuentas. Desde allí, podemos configurar nuestras claves para las API con las que vamos a trabajar, que serán importantes al hacer llamadas a los modelos a través de la conexión con servicios de terceros.

sidebar_2-2.png Figura. Barra lateral 2.

PRINCIPALES FUNCIONALIDADES Y VENTAJAS

Desde la vista general de la página, podemos acceder a cualquiera de las secciones mencionadas anteriormente. La más relevante para la creación y compartición de prompts es el Hub (o comunidad). Sin embargo, veremos algunas particularidades de las secciones de proyectos y pruebas de conjuntos de datos, y considerarlas funciones avanzadas.

En cuanto a la creación de proyectos en LangSmith, es una tarea muy sencilla que permite subir un conjunto de datos de prueba para evaluar los prompts. El conjunto de datos puede tener tres formatos diferentes: formato clave-valor (el predeterminado), formato de chat (con entradas o inputs de rol de sistema y rol de usuario) y formato LLM (que mapea directamente las preguntas del usuario con las respuestas del asistente). Además, si quieres crear un conjunto de datos y probarlo desde la herramienta, LangSmith te proporciona el código para ejecutarlo y la posibilidad de seleccionar algunos parámetros o evaluadores para aplicarlos tu dataset.

evaluators_dataset.png Figura. Evaluadores de conjunto de datos.

El Hub, por otro lado, es un espacio para que los usuarios de LangSmith busquen, guarden, compartan y prueben sus propios prompts o los creadas por la comunidad. Es especialmente útil para hacer benchmarking (o comparación de rendimiento). La variedad de filtros (casos de uso, tipo, idioma, modelos, etc.) en la barra de búsqueda facilita al usuario encontrar prompts según sus intereses. Además, la similitud con un formato de repositorio lo hace especialmente atractivo.

Una de las características más destacadas es el Playground dentro de cada Chat Template (o plantilla), donde podemos probar prompts de otros usuarios. Es interesante que cada prompt incorpore un archivo Readme como documentación de cómo se usa, limitaciones u otros detalles relevantes.

De igual manera, podemos revisar nuestros prompts o crear uno nuevo haciendo clic en el botón “My prompts”. Por otro lado, tanto si hacemos un “Fork” (o bifurcación para hacer una nueva versión) de un prompt ya existente, como si hemos creado un prompt desde cero, una de las acciones que podemos llevar a cabo es hacer un “Commit” de la versión en la que estamos trabajando. De esta forma, se guardará para que quede registrada y pueda ser revisada por la comunidad o tu grupo de trabajo.

Además, podemos guardar versiones como ejemplos dentro de la plantilla de del prompt o, incluso más, compartirlas públicamente con la comunidad o en privado con nuestro grupo de trabajo.

history_commit-2.png Figura. Historial de commits.

Finalmente, podemos ver el Historial de un prompt para rastrear sus ejecuciones (tracing), ¡lo cual es genial! En las ejecuciones podemos ver la template de la que partíamos al editar el prompt, las variables utilizadas y los parámetros seleccionados para hacer la llamada al modelo y la salida. Y lo que es más, también podemos ver el consumo de tokens y la latencia de la llamada.

runs.png Figura. Ejecuciones.

Sin embargo, esta plataforma en versión beta todavía tiene algunas mejoras y carencias por delante que señalaremos (y otras que se descubrirán) en la siguiente sección.

CARENCIAS Y DESVENTAJAS

Como hemos visto, hay algunas características destacables en esta herramienta desarrollada por LangChain. Sin embargo, la versión beta tiene algunas limitaciones que debemos mencionar.

En primer lugar, aunque la conexión con servicios de terceros es una funcionalidad realmente potente, también está limitada por el hecho de que depende de los proveedores. De esta manera, solo se puede llamar a un modelo de los proveedores disponibles (OpenAI, Azure y Proxy) y únicamente si tienes las credenciales. Además, la versión del modelo es un limitador (si no tiene un límite muy elevado disponible para el consumo de tokens), así como el número de tokens permitidos para imprimir en la salida, lo que a veces obliga a segmentar la llamada. Esto puede causar la pérdida de contexto y, con ello, respuestas inconsistentes.

Es cierto que el modelo tiene memoria de contexto, pero este contexto debe crearse manualmente: mientras que en otros modelos tenemos una vista de chat, en este caso, su parecido a un formato de repositorio lo convierte en un proceso tedioso en el que el usuario tiene que copiar la respuesta de la IA y pegarla como una nueva entrada que encadenamos de nuevo a nuestro prompt (y tenemos que seleccionar la opción IA en las opciones de rol).

role_options-1.png Figura. Role options.

La característica de tracing es realmente poderosa, pero no podemos hacer un tracing de todo. Una de las carencias más señaladas de LangSmith es que no es posible rastrear los commits o cambios por usuario dentro de un grupo de trabajo, lo cual es engorroso para organizaciones que tienen varios miembros trabajando al mismo tiempo y en el mismo prompt. Se recomienda hacer un fork del prompt en estos casos, pero aún sería costoso identificar qué versión corresponde a cada usuario.

En cuanto a la disposición de los elementos, los parámetros no tienen un desplegable visible y, en nuestra opinión, el orden en el que se disponen los parámetros podría mejorarse.

Por último, pero no menos importante, la documentación es bastante breve y no muy intuitiva, lo que no ayuda a entender la plataforma. Las funcionalidades más complejas se van encontrando a medida que realizas pruebas y te topas con dificultades o limitaciones, y esta documentación sería muy mejorable para ayudar más al usuario.

CONCLUSIONES

Hemos tenido la oportunidad de cruzarnos con LangSmith, una aplicación muy interesante desarrollada por LangChain. La idea del formato de repositorio con el Hub o comunidad y la función de tracing o rastreo dan un paso hacia adelante en la creación, versión, publicación y estandarización del modelado de prompts. Además, la funcionalidad que conecta la plataforma con servicios de terceros es bastante potente, aunque pueda tener algunas carencias.

Aun así, somos conscientes de las limitaciones de esta versión beta de LangSmith y consideramos que ha sido una enriquecedora experiencia probarla para seguir explorando el mundo de la ingeniería de prompts.

Co-autores

Luca de Filippis

Computational Linguist & Prompt Specialist

https://www.linkedin.com/in/lucadefilippis/

Ana García Toro

Computational Linguist & Prompt Specialist

https://www.linkedin.com/in/ana-garcia-toro/

Virginia Cinquegrani

Computational Linguist & Prompt Specialist

https://www.linkedin.com/in/virginia-cinquegrani/

Raúl Pérula-Martínez, Artificial Intelligence Senior Manager

Raúl Pérula-Martínez

Artificial Intelligence Senior Manager

Raúl posee un doctorado en Inteligencia Artificial aplicada a la Interacción Humano-Robot. Actualmente se centra en la aplicación de tecnologías Gen AI en el Procesamiento del Lenguaje Natural (NLP) en SNGULAR. En los últimos años, ha estado gestionando los productos MeaningCloud y Stilus."


Nuestras últimas novedades

¿Te interesa saber cómo nos adaptamos constantemente a la nueva frontera digital?

Más allá de NVIDIA: gigantes tecnológicos innovan en hardware de IA para 2024
Más allá de NVIDIA: gigantes tecnológicos innovan en hardware de IA para 2024

Techbeat

12 de diciembre de 2023

Más allá de NVIDIA: gigantes tecnológicos innovan en hardware de IA para 2024

Hacia un futuro sostenible liderado por el sector tecnológico
Hacia un futuro sostenible liderado por el sector tecnológico

Insight

12 de julio de 2023

Hacia un futuro sostenible liderado por el sector tecnológico

Contract Testing & Development
Contract Testing & Development

Tech Blog

21 de junio de 2023

Contract Testing & Development

El potencial del 5G Entrevista a Daniel Manzano, Innovation Manager en Vodafone
El potencial del 5G Entrevista a Daniel Manzano, Innovation Manager en Vodafone

Entrevista

13 de junio de 2021

El potencial del 5G Entrevista a Daniel Manzano, Innovation Manager en Vodafone