Usa inteligencia artificial basada en GPT-3.5-Turbo para hacerle pregunta a los candidatos presidenciales.
Herramientas utilizadas
- Langchain / OpenAI
- Milvus (vector store)
- FastAPI
Se necesita python >=3.9
. Para instalar las dependencias, crear un entorno virtual y ejecutar pip install -r requirements.txt
No olvidarse de crear un archivo .env
en el directorio root y agregar el token de OpenAI en la variable de entorno OPENAI_API_KEY
en la forma OPENAI_API_KEY=<token>
Se generaron embeddings de las transcripciones usando OpenAI y Milvus como base de datos de vectores.
Para correr Milvus localmente ver el repositorio db.
Se ha implementado un semantic cache, vectorizando las preguntas y guardando los embeddings en una colleccion en Milvus. De esta forma, para preguntas con significado semantico similar, no se llamara al LLM y se usara la respuesta cacheada, mejorando los tiempos de respuesta y optimizando costos de llamadas a la API de OpenAI.
Langchain actualmente no soporta semantic caching usando Milvus, por lo que en este proyecto hemos creado una nueva clase MilvusSemanticCache
que implementa la interfas BaseCache
de Langchain.
Pasos para correr el servidor localmente:
-
Vea el repositorio preguntale-al-candidato/db para correr la base de datos Milvus.
-
Generar un entorno virtual
pip install virtualenv
virtualenv env
- Activar el entorno virtual
source env/bin/activate // En Unix (Linux y MacOS)
env/Scripts/activate.bat // En Windows (CMD)
env/Scripts/Activate.ps1 // En WIndows (Powershell)
- Instalar las dependencias
pip install --upgrade pip
pip install --requirement requirements.txt
- (Opcional) Ingesta de transcripciones.
Si la base de datos levantada en el paso 1
fue creada desde un backup en S3 OMITA este paso.
cd ingestion
mkdir -p processed_transcriptions
python save_embedings.py
- Correr el servidor ejecutando:
uvicorn main:app --reload
Los endpoints de la api empiezan con /api/
y estarán disponibles en http://localhost:8000
- Correr el frontend
Una vez que el backend esta listo, a partir del repositorio preguntale-al-candidato/frontend podrá correr el frontend y acceder a la interfaz gráfica.