Hola Sajal!
Descripción general
Este proyecto está diseñado para mostrar una aplicación de chatbot integral que aprovecha el modelo GPT-4 de OpenAI, junto con las últimas capacidades de Langchain, incluidos Langchain Expression Language y LangGraph, integrado con una interfaz Gradio para una fácil interacción.
Está encapsulado en un contenedor Docker para facilitar la implementación y la escalabilidad.
Empezando
Construyendo el contenedor Docker
- Clona el repositorio en tu máquina local:
git clone <repository-link>
cd <repository-name>
- Cree la imagen de Docker a partir del Dockerfile proporcionado en el proyecto:
docker build -t hello-sajal-app .
Este comando crea una imagen de Docker llamada hello-sajal-app según las instrucciones del Dockerfile.
- Ejecutando la aplicación
Después de crear la imagen, puede ejecutar la aplicación usando el siguiente comando:
docker run -p 7860:7860 gradio-openai-app
Este comando ejecuta el contenedor y asigna el puerto 7860 del contenedor al puerto 7860 de su host, lo que le permite acceder a la aplicación Gradio a través de su navegador web.
- Acceso a la aplicación Una vez que el contenedor Docker se esté ejecutando, abra un navegador web y navegue hasta http://localhost:7860 para interactuar con la aplicación Gradio.
Bajo el capó
Tanto el contenedor acoplable como la aplicación gradio siguen el flujo:
- src/ingest_data.py: extracción e ingesta de datos en una base de datos vectorial ChromaDB, que persiste como en el disco.
- src/app.py: Inicialización de la aplicación gradio, impulsada por langchain para la orquestación.
Directorios y archivos
- Datos:
- source.md: fuente de información sobre Sajal Sharma en formato de rebajas.
- chroma_db: directorio persistente para chromadb.
- origen:
- app.py: punto de entrada para la aplicación, código para la aplicación gradio.
- graph.py: código para el gráfico de orquestación langgraph.
- ingest_data.py: código para extracción, transformación e ingesta de datos.
- retriever.py: código para búsqueda sobre el índice vectorial ChromaDb.
- chains/*.py: cadenas langchain personalizadas y listas para usar para funcionalidades LLM específicas.
Componentes
- ChromaDB para indexar y buscar documentos fragmentados.
- Langchain para ingeniería de flujo.
- Modelos OpenAI para ejecutar convocatorias LLM.
- Gradio para interfaz de chat básica.
- Langsmith por su pronta localización.
Características y arquitectura de la aplicación GenAI
La aplicación utiliza en gran medida langchain para indicaciones, cadenas, herramientas, llamadas a funciones LLM e ingeniería de flujo, lo que demuestra algunos de los casos de uso avanzados.
Arquitectura de alto nivel:
Cada mensaje entrante del usuario pasa por módulos de reconocimiento de intenciones, RAG, RAG correctivo y cadena de conversaciones pequeñas.
El siguiente diagrama representa el flujo de cada mensaje de usuario entrante a la aplicación de chat: