API de chatbot desarrollada con FastAPI + LangChain, con soporte para múltiples proveedores de modelos LLM como:
- OpenAI
- Ollama (modelos locales)
El proyecto incluye:
- Backend API REST
- Frontend web simple en HTML
- Arquitectura modular
- Integración con LangChain
- Selección dinámica del proveedor de IA mediante variables de entorno
- Python 3.11+
- FastAPI
- Uvicorn
- LangChain
- OpenAI API
- Ollama
- python-dotenv
ChatBot-API-Multi/
│
├── app/
│ ├── models/
│ │ └── schemas.py
│ │
│ ├── routes/
│ │ └── chat.py
│ │
│ └── services/
│ ├── chat_service.py
│ └── model_factory.py
│
├── static/
│ └── index.html
│
├── main.py
├── requirements.txt
└── README.mdgit clone <URL_DEL_REPOSITORIO>
cd ChatBot-API-MultiLinux / macOS:
python -m venv venv
source venv/bin/activateWindows:
python -m venv venv
venv\Scripts\activatepip install -r requirements.txtCrear un archivo .env en la raíz del proyecto.
Ejemplo de configuración para usar OpenAI:
# LLM_PROVIDER=ollama
# OPENAI_MODEL=llama3:8b
LLM_PROVIDER=openai
OPENAI_MODEL=gpt-4.1
OPENAI_API_KEY=TU_KEY_DE_OPENAIImportante: la variable correcta debería ser
LLM_PROVIDER, salvo que el código del proyecto esté leyendo explícitamenteLM_PROVIDER.
LLM_PROVIDER=openai
OPENAI_MODEL=gpt-4.1
OPENAI_API_KEY=tu_api_keyLLM_PROVIDER=ollama
OPENAI_MODEL=llama3:8bAsegurarse de tener Ollama instalado y ejecutándose:
ollama serveDescargar el modelo:
ollama pull llama3:8buvicorn main:app --reloadServidor disponible en:
http://127.0.0.1:8000
La aplicación incluye una interfaz HTML simple.
Abrir en el navegador:
http://127.0.0.1:8000
Envía un mensaje al chatbot.
{
"message": "Hola, ¿cómo estás?"
}{
"response": "Hola, estoy funcionando correctamente."
}Se encarga de seleccionar dinámicamente el proveedor del modelo:
- OpenAI
- Ollama
Esto permite cambiar entre APIs remotas y modelos locales sin modificar el resto del código.
Contiene la lógica principal del chatbot:
- Construcción del prompt
- Ejecución de LangChain
- Procesamiento de respuestas
Define los modelos Pydantic:
- ChatRequest
- ChatResponse
- Arquitectura modular
- Fácil extensión
- Compatible con modelos locales
- Compatible con OpenAI
- API REST moderna
- Frontend integrado
- Uso de LangChain Expression Language (LCEL)
curl -X POST "http://127.0.0.1:8000/chat" \
-H "Content-Type: application/json" \
-d '{
"message": "Explica qué es FastAPI"
}'- Memoria conversacional
- Streaming de respuestas
- Historial de chats
- Autenticación JWT
- Soporte multimodal
- Integración con bases de datos
- Dockerización
- WebSockets
- RAG con embeddings
fastapi
uvicorn
python-dotenv
langchain
langchain-openai
langchain-ollamaProyecto de uso educativo y demostrativo.
Marcelo Ventura
Backend Developer | PHP/Laravel | Python | FastAPI | DevOps | IA