Midda Copilot é um servidor API REST que expõe funcionalidades de codificação assistidas por IA. Utiliza a SDK do Groq para processar solicitações de código e retornar análises, correções, refatorações e testes gerados automaticamente.
Funcionalidades principais:
- 💬 Chat - Conversa em tempo real com streaming de respostas
- 📖 Explain - Explica código complexo
- 🔧 Fix - Identifica e corrige erros em código
- 🎨 Refactor - Melhora qualidade e legibilidade do código
- ✅ Generate Tests - Cria testes unitários automaticamente
- Desenvolvedores que precisam de assistência em codificação
- Equipes de desenvolvimento que usam Windsurf ou clientes HTTP
- Integrações que precisam de um backend de IA para processamento de código
O servidor roda como um serviço Node.js/Express que:
- Recebe requisições HTTP POST em rotas específicas (
/chat,/explain,/fix,/refactor,/generate-tests) - Envia a solicitação para a API Groq usando a chave de API fornecida
- Processa a resposta da IA e a retorna ao cliente
Streaming de respostas:
- Endpoint
/chatsuporta Server-Sent Events (SSE) para streaming em tempo real - Demais endpoints retornam respostas JSON padrão
- Node.js ≥ 16.x
- npm ou yarn
- Conexão com internet (para acessar API Groq)
express- Framework webcors- Suporte a Cross-Origin Resource Sharingbody-parser- Parsing de corpos de requisiçãogroq-sdk- SDK oficial do Groq
O que é: Token de autenticação para acessar a API Groq
Como obter:
- Acesse https://console.groq.com
- Faça login ou crie uma conta
- Navegue até "API Keys" no dashboard
- Clique em "Create New Secret Key"
- Copie a chave gerada (formato:
gsk_...)
Modelos disponíveis:
llama-3.3-70b-versatile(recomendado)llama-3.1-405b-reasoningmixtral-8x7b-32768gemma-2-9b-it
git clone <seu-repo>
cd midda-copilotnpm install
# ou
yarn install# Criar arquivo .env
cp .env.example .env # se existir, ou criar manualmente
# Editar .env e adicionar:
GROQ_API_KEY=gsk_sua_chave_aqui
PORT=3001 # opcional, padrão é 3001npm start
# ou modo desenvolvimento com nodemon
npm run devSaída esperada:
🤖 Midda Copilot running on port 3001
📡 API available at http://localhost:3001
Conversa com streaming de respostas em tempo real.
Request:
curl -X POST http://localhost:3001/chat \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Oi, como você está?"}
],
"model": "llama-3.3-70b-versatile",
"temperature": 0.7
}'Response (SSE):
data: {"content":"Olá! Estou funcionando bem."}
data: {"content":" Como posso ajudar?"}
data: [DONE]
Explica código fornecido.
Request:
curl -X POST http://localhost:3001/explain \
-H "Content-Type: application/json" \
-d '{
"code": "const sum = (a, b) => a + b;"
}'Response:
{
"explanation": "Este é uma função seta que soma dois números..."
}Corrige erros em código.
Request:
curl -X POST http://localhost:3001/fix \
-H "Content-Type: application/json" \
-d '{
"code": "const x = 10\nconst y = x * 2",
"error": "Missing semicolon"
}'Response:
{
"fixedCode": "const x = 10;\nconst y = x * 2;"
}Melhora a qualidade do código.
Request:
curl -X POST http://localhost:3001/refactor \
-H "Content-Type: application/json" \
-d '{
"code": "var x = 1; var y = 2; console.log(x + y);"
}'Response:
{
"refactoredCode": "const sum = (a, b) => a + b;\nconsole.log(sum(1, 2));"
}Gera testes automaticamente.
Request:
curl -X POST http://localhost:3001/generate-tests \
-H "Content-Type: application/json" \
-d '{
"code": "const add = (a, b) => a + b;"
}'Response:
{
"tests": "describe('add', () => {\n test('should sum two numbers', () => {\n expect(add(1, 2)).toBe(3);\n });\n});"
}Veja ../midda-windsurf-extension para usar Midda Copilot como backend da extensão VS Code/Windsurf.
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
GROQ_API_KEY |
Chave de API do Groq | - | ✅ Sim |
PORT |
Porta do servidor | 3001 |
❌ Não |
NODE_ENV |
Ambiente (development/production) | development |
❌ Não |
Solução: Verifique se a chave está definida em .env e o arquivo está sendo carregado corretamente.
Solução: A API Groq pode estar temporariamente indisponível. Tente novamente em alguns segundos.
Solução: Modelos maiores (como llama-3.3-70b-versatile) podem ser mais lentos. Considere usar modelos menores como gemma-2-9b-it.
midda-copilot/
├── index.js # Servidor principal
├── package.json # Dependências e scripts
├── .env.example # Modelo de variáveis de ambiente
├── .env # Variáveis de ambiente (local, não commitado)
└── README.md # Este arquivo
- Autenticação de requisições
- Rate limiting
- Logging avançado
- Suporte a múltiplos modelos
- Cache de respostas
- Métricas e analytics
- Fork o repositório
- Crie uma branch (
git checkout -b feature/minha-feature) - Commit suas mudanças (
git commit -m 'Add nova feature') - Push para a branch (
git push origin feature/minha-feature) - Abra um Pull Request
Proprietário - Midda Inc.
Para dúvidas ou problemas:
- 📧 Email: support@midda.com
- 🐛 Issues: GitHub Issues
- 💬 Discord: [Link do servidor]
Última atualização: Janeiro 2025