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.
- Abra o Google Colab e ative a T4 GPU em
Tempo de Execucao > Alterar tipo de ambiente de execucao - Cole o conteudo de
colabllm.pyna celula do notebook - Altere a senha no inicio do script:
API_SECRET_KEY = "sua-senha-super-segura"
- Execute e aguarde (~10 min para instalar dependencias e baixar modelos)
- Copie a URL publica exibida no final:
https://SUA_URL_GERADA.trycloudflare.com/v1
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 |
| 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 |
Substitua SUA_URL pela URL do Colab e SUA_SENHA pela chave configurada.
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?" }
]
}'# 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="")// 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();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);O catalogo completo esta em MODELS_CONFIG no colabllm.py. Edite MODELS_TO_DOWNLOAD para escolher quais baixar.
| 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 |
| 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 |
| 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 |
| 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 |
- 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.commuda a cada reinicializacao do script - Rate limit: 30 requisicoes/minuto por IP (configuravel)
Leia o CONTRIBUTING.md para diretrizes. Resumo:
- Fork o projeto
- Crie sua branch (
git checkout -b feature/NovaFeature) - Commit (
git commit -m 'Add NovaFeature') - Push (
git push origin feature/NovaFeature) - Abra um Pull Request
- Issues para bugs e solicitacoes
- Discussions para duvidas gerais
MIT - Livre para uso pessoal e comercial.