BlazerRhino / app.py
Davizig12jojo's picture
Upload 4 files
fa1e16c verified
Raw
History Blame Contribute Delete
2.95 kB
# ==============================================================================
# API DO BLAZERRHINO 3B: FASTAPI + LLAMA.CPP (DOCKER)
# ==============================================================================
# Autor: Davi Rediske / BlazerIA Team (2026)
# Este script baixa seu modelo GGUF automaticamente e cria uma rota de chat
# ultra rápida para integrar com o seu site ou Worker.
# ==============================================================================
import os
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from huggingface_hub import hf_hub_download
from llama_cpp import Llama
app = FastAPI(title="BlazerRhino 3B API - Docker")
# Ativa o CORS para que seu site BlazerIA faça chamadas para esta API sem bloqueios
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Configurações do seu repositório onde está o arquivo GGUF compilado do BlazerRhino
REPO_ID = "Davizig10jojo/BlazerRhino-3B-GGUF"
ARQUIVO_GGUF = "BlazerRhino-3B-Instruct.Q4_K_M.gguf"
print("📥 Baixando arquivo GGUF do Hugging Face Hub...")
try:
caminho_modelo = hf_hub_download(repo_id=REPO_ID, filename=ARQUIVO_GGUF)
print(f"✅ Modelo carregado com sucesso em: {caminho_modelo}")
except Exception as e:
print(f"⚠️ Erro ao carregar arquivo personalizado ({e}). Tentando nome original...")
# Fallback caso o nome padrão do Unsloth seja mantido no repositório
caminho_modelo = hf_hub_download(repo_id=REPO_ID, filename="Qwen2.5-3B-Instruct.Q4_K_M.gguf")
print("🧠 Carregando o modelo na CPU gratuita do Space (16GB RAM)...")
# Otimizado para usar os 2 núcleos de processamento da CPU básica sem travar o servidor
llm = Llama(
model_path=caminho_modelo,
n_ctx=2048, # Contexto confortável para conversas e estudos
n_threads=2, # Usa os 2 núcleos da CPU grátis do Space no limite máximo
n_batch=512,
)
print("🚀 BlazerRhino 3B está online e pronto para receber requisições!")
class ChatRequest(BaseModel):
prompt: str
temperature: float = 0.7
max_tokens: int = 1024
@app.get("/")
def home():
return {
"status": "online",
"model": "BlazerRhino-3B-GGUF",
"bypass": "Docker ativo via README.md Exploit!",
"author": "Davi Rediske / BlazerIA"
}
@app.post("/v1/chat")
async def chat(request: ChatRequest):
try:
# Executa a geração do texto na CPU básica do Space
resposta = llm(
request.prompt,
max_tokens=request.max_tokens,
temperature=request.temperature,
stop=["<|im_end|>"],
)
texto_resposta = resposta["choices"][0]["text"]
return {"response": texto_resposta}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))