Evalúe y supervise los experimentos con su aplicación LLM

El flujo de trabajo de TruLens consta de cinco pasos:

  1. Cree su aplicación LLM (es decir, con LangChain y ChatGPT o cualquier otro LLM)
  2. Conecte su aplicación LLM a TrueLens y comience a registrar los registros o interacciones entre sus usuarios y su aplicación. Todos los registros se almacenan en sqlite db.
  3. Agregue funciones de comentarios para registrar y evaluar la calidad de su aplicación LLM (opcional)
  4. Explore registros y resultados de evaluación en el panel de TruLens basado en streamlit
  5. Iterar y seleccionar la mejor cadena LLM (versión)
  • El siguiente ejemplo crea una aplicación LLM simple usando LangChain, ChatGPT y un LLM alternativo de HuggingFace.
  • TruLens ofrece la integración de funciones de retroalimentación para evaluar la calidad de nuestra aplicación LLM.
  • En este ejemplo, también usamos HuggingFace para verificar si la respuesta está en el mismo idioma que la pregunta y para detectar cualquier toxicidad en la respuesta. Sin embargo, este paso es opcional y también es posible escribir sus propias funciones de retroalimentación.

Antes de que podamos comenzar a crear nuestra aplicación LLM, debemos cumplir con los siguientes requisitos.

Instalando paquetes

Ejecute el siguiente comando para instalar los paquetes necesarios:

pip install trulens-eval langchain -q

Tenga en cuenta: Yo tenía una versión antigua de langchain ya está instalado pero recibió algunos errores al usarlo en combinación con TruLens. Por lo tanto, instalé la (última) versión 0.0.201 .

También te puede interesarLimpieza de texto: eliminar palabras vacías del texto con Spark NLP

Obtener claves API

La clave OpenAI se puede crear en este enlace y luego haciendo clic en el
+ Create new secret key botón.

tenga en cuenta: Si prefiere no gastar dinero, puede omitir este paso y utilizar únicamente el LLM alternativo de HuggingFaceHub.

Para HuggingFace, el token de acceso se puede crear en la configuración de usuario en tokens de acceso.

Comenzamos a crear nuestra aplicación LLM de ejemplo configurando nuestras claves API como variables de entorno.

También te puede interesarAudioFusion: avance en la comprensión y generación del hablaAudioFusion: avance en la comprensión y generación del habla
import os
os.environ["OPENAI_API_KEY"] = "<ADD KEY HERE>"
os.environ["HUGGINGFACE_API_KEY"] = "<ADD KEY HERE>"
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "<ADD KEY HERE>"

La clave API y el token para Hugging Face son los mismos. La diferencia es que el HUGGINGFACE_API_KEY es utilizado por TrueLens para aprovechar las funciones de retroalimentación de Hugging Face, mientras que el HUGGINGFACEHUB_API_TOKEN luego es utilizado por HuggingFaceHubconseguir un Generación de texto a texto modelo como alternativa a ChatOpenAI.

Después de eso, podemos crear nuestra aplicación de ejemplo escribiendo el siguiente código

# imports from LangChain to build app
from langchain import PromptTemplate
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (ChatPromptTemplate,
HumanMessagePromptTemplate)
from langchain import HuggingFaceHub

# create LLM chain
full_prompt = HumanMessagePromptTemplate(
prompt=PromptTemplate(
template="You are a tourist guide and gourmet to provide" \
"helpful information about the following question: {prompt}"\
"Name at least 2 restaurants and the dishes they are famous for.",
input_variables=["prompt"],
)
)
chat_prompt_template = ChatPromptTemplate.from_messages([full_prompt])

# You can choose between gpt-3.5-turbo and google/flan-t5-xxl
google = HuggingFaceHub(repo_id="google/flan-t5-xxl",
model_kwargs={"temperature":0.9})

También te puede interesarBibliotecas principales para preprocesamiento de texto

chat = ChatOpenAI(model_name='gpt-3.5-turbo', temperature=0.9)

# Provide here as a parameter value for llm the model you'd like to use
chain = LLMChain(llm=google, prompt=chat_prompt_template)

Primero, creamos un adecuado Plantilla de solicitud donde brindamos información contextual adicional sobre el rol del agente (también conocido como modelo) y nuestras expectativas (como los restaurantes y los platos por los que son famosos).

Entonces podemos cualquiera ir con un Generación de texto a texto modelo de HuggingFaceHub o con el clásico ChatOpenAI modelo.

También te puede interesarPintura, píxeles y plagio: el auge de la IA generativa y el futuro incierto del arte

Tenga en cuenta: Respuesta a preguntas los modelos aún no son compatibles con LangChain. Es por eso que estamos usando modelos Text2Text Generation. Puede encontrar una descripción general de los posibles modelos aquí.

Definir funciones de retroalimentación

Como se mencionó, crearemos dos funciones de retroalimentación: una para verificar si el idioma de la respuesta coincide con el de la pregunta y otra para detectar toxicidad.

from trulens_eval import Feedback, Huggingface, Query

# Initialize HuggingFace-based feedback function collection class:
hugs = Huggingface()
# Define a language match feedback function using HuggingFace.
f_lang_match = Feedback(hugs.language_match).on(
text1=Query.RecordInput, text2=Query.RecordOutput
)
# Check if model's answer is toxic
f_toxity = Feedback(hugs.not_toxic).on(text=Query.RecordOutput)

Envuelva la aplicación LLM con TruLens

Para registrar y evaluar cada interacción con nuestra cadena creada o aplicación LLM, debemos envolverla dentro de un objeto TruChain.

from trulens_eval import TruChain

truchain = TruChain(
chain,
app_id='TestApp-ABC',
feedbacks=[f_lang_match, f_toxity]
)

A por defecto.sqlite El archivo ahora debería haberse creado en el directorio del archivo de Python que contiene este código.

Empezar a interactuar

Para interactuar ahora con la aplicación LLM, podemos ejecutar el siguiente comando

truchain("Where can I find the best tapas in Barcelona?")

tenga en cuenta: En caso de que reciba el siguiente mensaje de error App raised an exception <empty message> compruebe si sus claves/tokens de API funcionan y están configurados correctamente.

Obtendrá las respuestas del modelo o de la aplicación, así como la notificación de que el registro y los comentarios se han almacenado en el archivo sqlite.

Para explorar sus registros ahora, puede iniciar el panel de TruLens ejecutando el siguiente fragmento de código:

from trulens_eval import Tru
tru = Tru()
tru.start_dashboard()

Tenga en cuenta: Enfrenté un error de toml/decodificador cuando ejecuté el .start_dashboard() método. La solución fue quitar elconfig.toml archivo. Puede encontrar más información aquí.

Puede detener el tablero en cualquier momento ejecutando el tru.stop_dashboard() método.

Ahora puede abrir el tablero haciendo clic en la URL local.

Figura 1. Clasificación de aplicaciones (imagen del autor).

La tabla de clasificación de aplicaciones proporciona una descripción general de sus aplicaciones LLM. En nuestro ejemplo, puede ver la cantidad de registros existentes, los costos y tokens generados, así como información de nuestras dos funciones de retroalimentación: not_toxic y language_match.

Podemos obtener información más detallada (figura 2) haciendo clic en el Select App botón.

Figura 2. Información detallada sobre los experimentos registrados con nuestra aplicación LLM (imagen del autor).

Esta vista también nos muestra la costos generados por registro (si está utilizando ChatGPT).

Si seleccionamos una fila, podemos acceder a metadatos adicionales sobre nuestra aplicación. La Figura 3 muestra un extracto de los metadatos disponibles.

Figura 3. Extracto de la vista de metadatos de la aplicación.

Scroll al inicio