Chatbot que funciona como asistente para la consulta sobre la documentación de la plataforma Detectron2. El chatbot utiliza el modelo de llm DeepSeek-R1-Distill-Qwen-1.5B. Además, utiliza el framework de LangChain para implementar la estructura del proyecto que se muestra debajo.
- Implementación de DeepSeek-R1-Distill-Qwen-1.5B como chatbot.
- Base de datos vectorial para brindar información al chatbot.
- Record Manager para registrar qué ingresó a la base de datos vectorial.
- Indexación de vectores de tipo
fullpara eliminar la información que ya no se utiliza en la documentación cargada. - langgraph para la estructura de la aplicación.
- Acceso al historial de mensajes de la sesion. Pasado cierto humbral de tokens se genera resumen de los mensajes más antiguos en el historial.
- El retriever utiliza Maximal Marginal Relevance (MMR) para ajustar la diversidad en los documentos del contexto obtenido para cada pregunta.
- Interfaz visual con
Streamlit.
CODE_ASSISTANT/
│-- chroma_langchain_db/ # Contiene la documentacion de Detectron2 en forma de vectores
│-- DeepSeek-R1-Distill-Qwen-1.5B/ # Contiene los pesos del LLM
│-- images/
│-- src/
│ │-- config/ # Configuraciones necesarias para el proyecto
│ │ │-- env.py # Carga de las variables de entorno
│ │-- services/ # Servicios utilizados
│ │ │-- deepseekService.py # Funciones relacionadas con Deepseek
│ │-- utils/ # Funciones de utilidad
│ │ │-- textExtractor.py # Funciones relacionadas con la extracción de la documentación
│ │-- app.py # Flujo principal de la aplicación
│ │-- deepseekServer.py # Arranca el servidor con el modelo de Deepseek
│-- .env # Variables de entorno
│-- .env_example # Descripción de las variables de entorno
│-- .gitignore # Archivos a ser ignorados en el repositorio
│-- README.md # Documentación del proyecto
│-- record_manager_cache.sql # Contiene el registro de qué vectores ingresaron a la base de datos vectorial- Sistema Ubuntu 22.04
- Entorno virtual conda con python = 3.12
Instalar en el entorno virtual las siguientes librerías
- Instalar SGLang:
pip install uv
uv pip install "sglang[all]>=0.4.4.post3" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python- Instalar Langchain-Openai:
pip install langchain-openai- Instalar Dotenv:
conda install conda-forge::python-dotenv- Instalar langchain-community y beautifulsoup4:
pip install langchain-community beautifulsoup4- Instalar langchain-chroma
pip install langchain-chroma- Instalar langgraph
pip install langgraph- Instalar langmem
pip install langmem- Instalar streamlit
pip install streamlit-
Clonar el repositorio del proyecto
-
Dentro de la carpeta del proyecto clonar el repositorio con los pesos del modelo de deepseek:
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B- Crear dentro de la carpeta del proyecto el archivo
.env. Después, colocar las keys requeridas en el archivo.envteniendo como referencia el archivo.env_example.
Con el entorno virtual creado previamente
python src/deepseekServer.pyEl servidor con el modelo de deepseek se ejecutará y estará listo para recibir mensajes del usuario.
En otra terminal
python -m streamlit run src/app.pySe abrirá en el navegador la interfaz visual del chatbot con el cual se podrá interactuar.
- Detectron2: https://ai.meta.com/tools/detectron2/
- SGL: https://docs.sglang.ai/backend/send_request.html
- Guia para usar Deepseek V3 con SGLang: https://github.com/sgl-project/sglang/tree/main/benchmark/deepseek_v3
- Guia de uso Deepseek V3: https://github.com/deepseek-ai/DeepSeek-V3/tree/main
- Pesos del modelo DeepSeek-R1-Distill-Qwen-1.5B: https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
- Variaciones del modelo DeepSeek-R1: https://huggingface.co/deepseek-ai/DeepSeek-R1
- Github DeepSeek-R1: https://github.com/deepseek-ai/DeepSeek-R1
- LangChain: https://www.langchain.com/langchain
- LangGraph: https://langchain-ai.github.io/langgraph/concepts/why-langgraph/
- LangMem: https://langchain-ai.github.io/langmem/
- Streamlit: https://streamlit.io/
