Skip to content

gmasson/ColabLLM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ColabLLM

License: MIT Python 3.8+ Version 0.2

Transforme o Google Colab em um servidor de API de IA privado, compativel com OpenAI.

Script all-in-one que orquestra Ollama + FastAPI + Cloudflare Tunnel numa instancia gratuita do Google Colab (GPU T4). Resultado: uma API publica via HTTPS, protegida por Bearer Token, pronta para qualquer cliente OpenAI-compativel.

Inicio Rapido

  1. Abra o Google Colab e ative a T4 GPU em Tempo de Execucao > Alterar tipo de ambiente de execucao
  2. Cole o conteudo de colabllm.py na celula do notebook
  3. Altere a senha no inicio do script:
    API_SECRET_KEY = "sua-senha-super-segura"
  4. Execute e aguarde (~10 min para instalar dependencias e baixar modelos)
  5. Copie a URL publica exibida no final:
    https://SUA_URL_GERADA.trycloudflare.com/v1
    

Configuracao

Variaveis editaveis no inicio do colabllm.py:

Variavel Padrao Descricao
API_SECRET_KEY "sua-senha-super-segura" Senha de acesso (Bearer Token)
MODELS_TO_DOWNLOAD gemma2:9b, qwen2.5:7b, deepseek-llm:7b Modelos baixados no boot
DEFAULT_TEMPERATURE 0.7 Criatividade (0.0-1.0)
DEFAULT_TOP_P 0.9 Nucleus sampling (0.1-1.0)
DEFAULT_REPEAT_PENALTY 1.05 Penalidade de repeticao
RATE_LIMIT_PER_MINUTE 30 Limite de requisicoes por IP

Endpoints

Metodo Endpoint Auth Descricao
GET /health Nao Health check publico
GET /v1/models Sim Lista modelos disponiveis
GET /v1/stats Sim Estatisticas do servidor
POST /v1/chat/completions Sim Chat completions (compativel OpenAI)
POST /v1/models/{model}/repair Sim Re-baixa modelo corrompido

Exemplos de Uso

Substitua SUA_URL pela URL do Colab e SUA_SENHA pela chave configurada.

cURL

curl https://SUA_URL.trycloudflare.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer SUA_SENHA" \
  -d '{
    "model": "gemma2:9b",
    "messages": [
      { "role": "user", "content": "Quem descobriu o Brasil?" }
    ]
  }'

Python (OpenAI SDK)

# pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://SUA_URL.trycloudflare.com/v1",
    api_key="SUA_SENHA"
)

response = client.chat.completions.create(
    model="gemma2:9b",
    messages=[{"role": "user", "content": "Explique Python em 3 linhas."}]
)

print(response.choices[0].message.content)

Com streaming:

stream = client.chat.completions.create(
    model="gemma2:9b",
    messages=[{"role": "user", "content": "Conte uma historia curta."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

JavaScript / Node.js

// npm install openai
const OpenAI = require("openai");

const client = new OpenAI({
  baseURL: "https://SUA_URL.trycloudflare.com/v1",
  apiKey: "SUA_SENHA"
});

async function main() {
  const completion = await client.chat.completions.create({
    model: "gemma2:9b",
    messages: [{ role: "user", content: "Explique recursao em uma frase." }]
  });
  console.log(completion.choices[0].message.content);
}

main();

Fetch API (Frontend)

const response = await fetch("https://SUA_URL.trycloudflare.com/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer SUA_SENHA"
  },
  body: JSON.stringify({
    model: "gemma2:9b",
    messages: [{ role: "user", content: "Ola mundo!" }]
  })
});

const data = await response.json();
console.log(data.choices[0].message.content);

Modelos Disponiveis

O catalogo completo esta em MODELS_CONFIG no colabllm.py. Edite MODELS_TO_DOWNLOAD para escolher quais baixar.

Generalistas

Modelo Tamanho Descricao
llama3.1:8b 4.9 GB Meta Llama 3.1 - Padrao da industria, solido em PT-BR
qwen2.5:7b 4.7 GB Qwen 2.5 - Raciocinio logico superior, PT-BR natural
gemma2:9b 5.4 GB Google Gemma 2 - Criativo, inteligente, menos alucinacoes

Codigo e Logica

Modelo Tamanho Descricao
qwen2.5-coder:7b 4.7 GB Qwen Coder - Melhor assistente de programacao leve
deepseek-llm:7b 4.0 GB DeepSeek LLM - Matematica e logica pesada
yi-coder:9b 5.0 GB Yi-Coder - Bom balanco tamanho/performance
deepseek-coder-v2:16b 8.9 GB DeepSeek V2 Lite - MoE, consome muita VRAM
codellama:13b 7.4 GB CodeLlama - Modelo maior para arquitetura de software

Criativos e Multilinguais

Modelo Tamanho Descricao
hermes3:8b 4.7 GB Hermes 3 - Versao destravada do Llama 3.1, RPG e escrita
aya:8b 4.8 GB Cohere Aya - Especialista em 23 idiomas

Performance

Modelo Tamanho Descricao
solar:10.7b 6.1 GB Solar - O maior que cabe confortavelmente, corporativo
mistral:7b 4.4 GB Mistral v0.3 - Rapido, janela de contexto eficiente
llama3.2:3b 2.0 GB Llama 3.2 - Ultra leve, respostas instantaneas
phi3.5:3.8b 2.2 GB Microsoft Phi 3.5 - Compacto com bom raciocinio
nemotron-mini:4b 2.7 GB NVIDIA Nemotron - Otimizado para densidade de conhecimento

Limitacoes

  • Cold Boot: Trocar de modelo demora 10-20s na primeira requisicao (swap de VRAM)
  • Sessao temporaria: Colab desconecta apos ~90 min de inatividade. Mantenha a aba aberta
  • URL dinamica: A URL trycloudflare.com muda a cada reinicializacao do script
  • Rate limit: 30 requisicoes/minuto por IP (configuravel)

Contribuir

Leia o CONTRIBUTING.md para diretrizes. Resumo:

  1. Fork o projeto
  2. Crie sua branch (git checkout -b feature/NovaFeature)
  3. Commit (git commit -m 'Add NovaFeature')
  4. Push (git push origin feature/NovaFeature)
  5. Abra um Pull Request

Suporte

Licenca

MIT - Livre para uso pessoal e comercial.

About

Transforme o Google Colab em um servidor de API de IA privado, compativel com OpenAI.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors