Skip to content

marvenarg/ChatBot-API-Multi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatBot API Multi

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

Tecnologías utilizadas

  • Python 3.11+
  • FastAPI
  • Uvicorn
  • LangChain
  • OpenAI API
  • Ollama
  • python-dotenv

Estructura del proyecto

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.md

Instalación

1) Clonar el repositorio

git clone <URL_DEL_REPOSITORIO>
cd ChatBot-API-Multi

2) Crear entorno virtual

Linux / macOS:

python -m venv venv
source venv/bin/activate

Windows:

python -m venv venv
venv\Scripts\activate

3) Instalar dependencias

pip install -r requirements.txt

Configuración

Crear 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_OPENAI

Importante: la variable correcta debería ser LLM_PROVIDER, salvo que el código del proyecto esté leyendo explícitamente LM_PROVIDER.


Opción 1: OpenAI

LLM_PROVIDER=openai
OPENAI_MODEL=gpt-4.1
OPENAI_API_KEY=tu_api_key

Opción 2: Ollama (modelo local)

LLM_PROVIDER=ollama
OPENAI_MODEL=llama3:8b

Asegurarse de tener Ollama instalado y ejecutándose:

ollama serve

Descargar el modelo:

ollama pull llama3:8b

Ejecutar el proyecto

uvicorn main:app --reload

Servidor disponible en:

http://127.0.0.1:8000

Frontend Web

La aplicación incluye una interfaz HTML simple.

Abrir en el navegador:

http://127.0.0.1:8000

Endpoint principal

POST /chat

Envía un mensaje al chatbot.

Request

{
  "message": "Hola, ¿cómo estás?"
}

Response

{
  "response": "Hola, estoy funcionando correctamente."
}

Arquitectura

model_factory.py

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.


chat_service.py

Contiene la lógica principal del chatbot:

  • Construcción del prompt
  • Ejecución de LangChain
  • Procesamiento de respuestas

schemas.py

Define los modelos Pydantic:

  • ChatRequest
  • ChatResponse

Características

  • Arquitectura modular
  • Fácil extensión
  • Compatible con modelos locales
  • Compatible con OpenAI
  • API REST moderna
  • Frontend integrado
  • Uso de LangChain Expression Language (LCEL)

Ejemplo con cURL

curl -X POST "http://127.0.0.1:8000/chat" \
-H "Content-Type: application/json" \
-d '{
  "message": "Explica qué es FastAPI"
}'

Posibles mejoras futuras

  • 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

Dependencias principales

fastapi
uvicorn
python-dotenv
langchain
langchain-openai
langchain-ollama

Licencia

Proyecto de uso educativo y demostrativo.


Autor

Marcelo Ventura

Backend Developer | PHP/Laravel | Python | FastAPI | DevOps | IA

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors