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.
- 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
| 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 |
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
1. Clonar con submódulos:
git clone --recurse-submodules https://github.com/luisforni/ai-code-generator.git
cd ai-code-generator2. Configurar variables de entorno:
cp backend/.env.example backend/.envEditar 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 --buildAbrir 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:7bBackend (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 --reloadFrontend (terminal 2):
cd frontend
npm install
npm run devAbrir en el browser: http://localhost:5173
| 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.
| 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 |
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}
| 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 |
- ARCHITECTURE.md — Arquitectura detallada, flujo de código y descripción de cada archivo, clase y función