agutierrezmorag / unap-chatbot

Desarrollo de chatbot consciente de documentos y reglamentos pertinentes a la universidad Arturo Prat y la carrera de Ingenieria Civil en Computacion e Informatica.
https://unap-chatbot.streamlit.app/
0 stars 0 forks source link

Evaluacion de respuestas #12

Closed agutierrezmorag closed 7 months ago

agutierrezmorag commented 8 months ago

Descripción

En la ultima reunión se discutió la idea de evaluar las respuestas generadas por el chatbot mediante la comparación de estas respuestas con el reglamento. Si bien con anterioridad se menciono una idea similar, en vez de comparar la similitud entre textos, seria mas adecuado comparar el significado en si de estos textos.

Objetivo

Implementar alguna forma de comparar respuestas y documentos fuente que utilizo el chatbot para generar la respuesta. Esta implementación habrá que hacerla en su propio repositorio, pero llevar registro de eso en este, por conveniencia.

Una opción seria utilizar los modelos disponibles en HuggingFace para realizar y evaluar la comparación.

agutierrezmorag commented 8 months ago

Se me ocurrió que, como ya estamos mostrando los datos en un dataframe aqui, seria conveniente poder seleccionar una fila de la tabla, automáticamente realizar la comparación por detrás y mostrar el resultado de la evaluación al lado. Para esto habría que ir llevando registro de los documentos fuente (serian 5, según lo tenemos definido en el vectorstore) que utilizo el chatbot en la generación de la respuesta en nuestra base de datos.

@Gualterguaguita Tu podrías encargarte de que se guarden los docs en la base de datos y yo implemento la comparación en la otra pagina. También estaría bueno si pudieras ademas guardar la pregunta que reformula la ia pero no se si seria posible hacer eso, según lo que he estado viendo.

agutierrezmorag commented 8 months ago

@Gualterguaguita en el ultimo commit pude implementar el streaming de las respuestas. Funciona bien, excepto cuando se hace mas de una pregunta porque se hace el streaming de la respuesta formateada. Intente sacarlo pero no me resulto, si puedes echarle un vistazo y ver si tu puedes.

ej. primera pregunta imagen

segunda pregunta imagen

se arregla al presionar r (recargar la pagina), ya que la pregunta formateada no es parte de full_response imagen

Para hacer el streaming se tuvo que crear una nueva clase, esta en callbacks.py.

agutierrezmorag commented 7 months ago

@Gualterguaguita Ya lo pude resolver. También me di cuenta que el chain que usamos ConverstionalRetrievalChain fue deprecado en la v0.1 de Langchain, así que lo cambie por los Runnables, por lo que el código igual se redujo harto pero es un poco mas dificil de leer si. También hoy nos aceptaron en la beta cerrada de LangSmith, ya lo agregue al proyecto.

imagen

Cuando termine de hacer los cambios hago el push al repo.

Gualterguaguita commented 7 months ago

ooo buenardo