Skip to content

luisforni/ai-code-generator

Repository files navigation

AI Code Generator

Generador de código con inteligencia artificial que soporta múltiples proveedores de modelos de lenguaje: Anthropic Claude, OpenAI, Groq y modelos locales mediante Ollama. Permite generar, explicar y mejorar código automáticamente a partir de una descripción en lenguaje natural.

Características

  • Multi-proveedor: Anthropic Claude, OpenAI, Groq y Ollama (modelos locales gratuitos)
  • Streaming en tiempo real: los tokens se muestran a medida que el modelo los genera
  • 10 lenguajes: Python, TypeScript, JavaScript, Go, Rust, Java, C#, SQL, Bash, YAML
  • Explicación automática: segunda llamada al modelo que explica el código generado en lenguaje claro
  • Auto-mejora: tercera llamada que reescribe el código agregando manejo de errores, type hints, logging y buenas prácticas
  • Descubrimiento de modelos Ollama: detecta automáticamente los modelos instalados localmente
  • Copiar y descargar: el código generado se puede copiar al portapapeles o descargar como archivo

Stack tecnológico

Capa Tecnología
Frontend React 18, Vite, TypeScript, Tailwind CSS
Backend FastAPI, Python 3.12, SSE-Starlette
Proveedores anthropic, openai, groq, httpx (Ollama)
Deploy Docker Compose

Estructura de repositorios

El proyecto está organizado como un repositorio principal con dos submódulos de Git:

ai-code-generator/           ← repo principal
├── backend/                 ← submódulo → ai-code-generator-backend
├── frontend/                ← submódulo → ai-code-generator-frontend
├── docker-compose.yml
├── README.md
└── ARCHITECTURE.md

Inicio rápido

Opción A — Docker Compose (recomendado)

1. Clonar con submódulos:

git clone --recurse-submodules https://github.com/luisforni/ai-code-generator.git
cd ai-code-generator

2. Configurar variables de entorno:

cp backend/.env.example backend/.env

Editar backend/.env y agregar las API keys que se quieran usar:

ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GROQ_API_KEY=gsk_...

3. Levantar:

docker compose up --build

Abrir en el browser: http://localhost:3000

Con Ollama (modelos locales, sin costo):

docker compose --profile local up --build
docker exec -it ai-code-generator-ollama-1 ollama pull codellama:7b

Opción B — Modo desarrollo

Backend (terminal 1):

cd backend
python -m venv .venv

# Windows
.venv\Scripts\activate

# Linux / Mac
source .venv/bin/activate

pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --reload

Frontend (terminal 2):

cd frontend
npm install
npm run dev

Abrir en el browser: http://localhost:5173

Variables de entorno

Variable Descripción Default
ANTHROPIC_API_KEY API key de Anthropic
OPENAI_API_KEY API key de OpenAI
GROQ_API_KEY API key de Groq
OLLAMA_BASE_URL URL base del servidor Ollama http://localhost:11434
ALLOWED_ORIGINS Orígenes permitidos para CORS http://localhost:5173,...

Se puede dejar en blanco cualquier provider que no se desee usar. Los demás funcionarán normalmente.

Referencia de la API

Método Endpoint Descripción
GET /health Estado del servidor y providers disponibles
GET /providers Lista de providers con sus modelos
GET /ollama/models Actualiza la lista de modelos Ollama locales
POST /generate Genera código con streaming SSE

POST /generate

Body:

{
  "prompt": "API REST para autenticación de usuarios con JWT",
  "model": "anthropic/claude-sonnet-4-6",
  "task": "generate",
  "language": "python",
  "context": ""
}

Campos:

Campo Tipo Valores posibles
prompt string Descripción en lenguaje natural de lo que se quiere generar
model string Formato proveedor/modelo, ej: anthropic/claude-sonnet-4-6, ollama/codellama:7b
task string generate, explain, improve
language string python, typescript, javascript, go, rust, java, csharp, sql, bash, yaml
context string Código previo (requerido para las tareas explain e improve)

Respuesta (Server-Sent Events):

data: {"content": "fragmento de texto", "done": false}
data: {"content": "otro fragmento",     "done": false}
data: {"content": "",                   "done": true}

En caso de error:

data: {"error": "mensaje de error", "done": true}

Comandos útiles

Acción Comando
Levantar (primera vez) docker compose up --build
Levantar (siguientes veces) docker compose up
Bajar todo docker compose down
Ver logs en tiempo real docker compose logs -f
Ver logs solo del backend docker compose logs -f backend
Levantar con Ollama docker compose --profile local up --build
Actualizar submódulos git submodule update --remote

Documentación adicional

  • ARCHITECTURE.md — Arquitectura detallada, flujo de código y descripción de cada archivo, clase y función

About

AI-powered code generator supporting multiple LLM providers (Anthropic Claude, OpenAI, Groq, and local models via Ollama). Generate, explain, and improve code from natural language prompts.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors