Skip to content

Eco-nexion/Econexion-chat-IA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Econexion Chat IA

Backend de chat con inteligencia artificial para Econexion, usando FastAPI y Gemini 1.5 Flash.

🚀 Setup

1. Crear entorno virtual

python -m venv venv

# Windows
.\venv\Scripts\activate

# Linux/Mac
source venv/bin/activate

2. Instalar dependencias

pip install -r requirements.txt

3. Configurar Gemini API Key

  1. Ve a Google AI Studio
  2. Crea una API Key
  3. Copia .env.example a .env:
cp .env.example .env
  1. Pega tu API Key en .env:
GEMINI_API_KEY=tu_api_key_aqui

4. Ejecutar servidor

python main.py

O con uvicorn directamente:

uvicorn main:app --reload --host 0.0.0.0 --port 8000

📡 Endpoints

Health Check

GET /

Respuesta:

{"status": "ok", "service": "Econexion Chat IA", "version": "1.0.0"}

Chat

POST /chat
Content-Type: application/json

{
  "message": "¿Cuántas ofertas pendientes tengo?",
  "userData": {
    "id": "...",
    "username": "...",
    "enterpriseName": "...",
    "email": "...",
    "rol": "SELLER",
    "publications": [...],
    "offers": [...]
  }
}

Sugerencias

POST /chat/suggestions

Devuelve sugerencias de preguntas basadas en los datos del usuario.

🧪 Ejemplos de Prueba

Ejemplo 1: Chat básico (copia y pega en Swagger o Postman)

{
  "message": "Dame un resumen de mi actividad",
  "userData": {
    "id": "fe8490b5-0a56-4644-aca2-1b503d417c1c",
    "enterpriseName": "JuanSAS",
    "username": "Juancho Roi",
    "nit": "123456789-0",
    "email": "juanpablocamargo91@gmail.com",
    "rol": "SELLER",
    "publications": [
      {
        "id": "afe2ed15-2027-4124-ac09-6923de9483ce",
        "title": "PET thunder",
        "material": "Plasticos PET",
        "quantity": 1234,
        "price": 123000,
        "location": "Bogotá",
        "description": "Material PET de alta calidad",
        "offers": [
          {
            "id": "a3ed9343-fd12-4c40-8650-4a70c21fe61b",
            "amount": 12222,
            "message": "Me interesa tu material",
            "date": "2025-12-05T10:29:56.428565",
            "status": "PENDING",
            "conversation": null
          }
        ]
      },
      {
        "id": "78ae1ad2-2eb0-4445-93ac-0e1499e3a8b1",
        "title": "Cartón corrugado industrial",
        "material": "Cartón",
        "quantity": 1000,
        "price": 800,
        "location": "Medellín, Antioquia",
        "description": "Cajas de cartón en excelente estado",
        "offers": []
      }
    ],
    "offers": [
      {
        "id": "daba3a61-8d00-4604-bb8d-baf9ed00ecb8",
        "amount": 17777777,
        "message": "Oferta por material disponible",
        "date": "2025-12-05T10:21:22.351042",
        "status": "PENDING",
        "conversation": null
      }
    ]
  }
}

Ejemplo 2: Preguntar por ofertas pendientes

{
  "message": "¿Cuántas ofertas pendientes tengo y cuál es la mejor?",
  "userData": {
    "id": "user-123",
    "enterpriseName": "EcoRecicla SAS",
    "username": "Carlos López",
    "nit": "900123456-1",
    "email": "carlos@ecorecicla.com",
    "rol": "SELLER",
    "publications": [
      {
        "id": "pub-1",
        "title": "Aluminio de latas",
        "material": "Aluminio",
        "quantity": 500,
        "price": 2500,
        "location": "Cali",
        "description": "Latas de aluminio compactadas",
        "offers": [
          {
            "id": "offer-1",
            "amount": 2000,
            "message": "Ofrezco 2000 por kg",
            "date": "2025-12-04T15:00:00",
            "status": "PENDING",
            "conversation": null
          },
          {
            "id": "offer-2",
            "amount": 2300,
            "message": "Puedo pagar 2300",
            "date": "2025-12-05T09:00:00",
            "status": "PENDING",
            "conversation": null
          }
        ]
      }
    ],
    "offers": []
  }
}

Ejemplo 3: Usuario sin publicaciones

{
  "message": "¿Qué puedo hacer en la plataforma?",
  "userData": {
    "id": "nuevo-user",
    "enterpriseName": "Mi Primera Empresa",
    "username": "Usuario Nuevo",
    "nit": null,
    "email": "nuevo@email.com",
    "rol": "BUYER",
    "publications": [],
    "offers": []
  }
}

Probar con cURL

curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"Hola, dame un resumen","userData":{"id":"1","enterpriseName":"Test","username":"Test User","email":"test@test.com","rol":"SELLER","publications":[],"offers":[]}}'

📚 Documentación API

Con el servidor corriendo, visita:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages