|
|
--- |
|
|
language: |
|
|
- pt |
|
|
tags: |
|
|
- gguf |
|
|
- llama.cpp |
|
|
- unsloth |
|
|
- text-classification |
|
|
- intent-detection |
|
|
- gemma-3 |
|
|
- delivery |
|
|
base_model: google/gemma-3-270m-it |
|
|
license: gemma |
|
|
datasets: |
|
|
- RiosWesley/rango-router-BR |
|
|
inference: |
|
|
parameters: |
|
|
temperature: 0.6 |
|
|
top_p: 0.95 |
|
|
top_k: 64 |
|
|
--- |
|
|
|
|
|
# Rango Router BR - Gemma 3 270M (GGUF) |
|
|
|
|
|
**Rango Router BR** é um modelo *Tiny LLM* (baseado no Gemma 3 270M) finetunado para atuar como um classificador de intenções (router) extremamente rápido e leve para sistemas de atendimento de delivery no Brasil. |
|
|
|
|
|
Este modelo foi treinado e convertido para o formato GGUF usando [Unsloth](https://github.com/unslothai/unsloth). |
|
|
|
|
|
## Funcionalidade |
|
|
|
|
|
O modelo lê a mensagem do usuário (que pode conter gírias, abreviações e linguagem informal brasileira) e classifica a intenção em um formato JSON. |
|
|
|
|
|
### Intenções Suportadas (Output): |
|
|
O modelo retorna um JSON com uma das três chaves: |
|
|
|
|
|
1. **`INFO_FLOW`**: O usuário quer informações (cardápio, horário, endereço, pix). |
|
|
2. **`ORDER_FLOW`**: O usuário quer fazer, alterar ou confirmar um pedido. |
|
|
3. **`HUMAN_HANDOFF`**: O usuário está irritado, teve problemas ou pediu um humano. |
|
|
|
|
|
## Configurações de Inferência Recomendadas |
|
|
|
|
|
Para garantir a melhor consistência no formato JSON e precisão na classificação, recomendamos os seguintes parâmetros: |
|
|
|
|
|
| Parâmetro | Valor | Motivo | |
|
|
| :--- | :--- | :--- | |
|
|
| **Temperature** | `0.6` | Equilíbrio ideal para este modelo de 270M não "alucinar" o JSON, mas entender variações linguísticas. | |
|
|
| **Top P** | `0.95` | Nucleus sampling padrão para evitar respostas de baixa probabilidade. | |
|
|
| **Top K** | `64` | Limita o vocabulário de escolha, ajudando a manter o foco nas tags JSON. | |
|
|
|
|
|
## Como rodar |
|
|
|
|
|
### 1. Ollama (Recomendado) |
|
|
|
|
|
Crie um arquivo chamado `Modelfile` com o seguinte conteúdo (as configurações já estão incluídas): |
|
|
|
|
|
```dockerfile |
|
|
FROM ./gemma-3-270m-it.Q8_0.gguf |
|
|
|
|
|
# Template de chat padrão do Gemma 3 |
|
|
TEMPLATE "<start_of_turn>user\n{{ .Prompt }}<end_of_turn>\n<start_of_turn>model\n" |
|
|
|
|
|
# Parâmetros recomendados para o Router |
|
|
PARAMETER temperature 0.6 |
|
|
PARAMETER top_p 0.95 |
|
|
PARAMETER top_k 64 |
|
|
PARAMETER stop "<end_of_turn>" |
|
|
``` |
|
|
|
|
|
Depois crie e rode o modelo: |
|
|
```bash |
|
|
ollama create rango-router -f Modelfile |
|
|
ollama run rango-router "Manda o cardápio aí chefia" |
|
|
``` |
|
|
|
|
|
### 2. Llama.cpp (CLI) |
|
|
|
|
|
Ao rodar via linha de comando, passe as flags correspondentes: |
|
|
|
|
|
```bash |
|
|
llama-cli --hf RiosWesley/gemma-3-270m-router-br-gguf \ |
|
|
--temp 0.6 \ |
|
|
--top-p 0.95 \ |
|
|
--top-k 64 \ |
|
|
-p "<start_of_turn>user\nO motoboy sumiu, cadê meu lanche?<end_of_turn>\n<start_of_turn>model" |
|
|
``` |
|
|
|
|
|
### 3. Python (Llama-cpp-python) |
|
|
|
|
|
```python |
|
|
from llama_cpp import Llama |
|
|
|
|
|
llm = Llama( |
|
|
model_path="./gemma-3-270m-it.Q8_0.gguf", |
|
|
n_ctx=2048 |
|
|
) |
|
|
|
|
|
output = llm( |
|
|
"<start_of_turn>user\nQuero pedir uma pizza meia a meia\n<end_of_turn>\n<start_of_turn>model", |
|
|
max_tokens=128, |
|
|
temperature=0.6, |
|
|
top_p=0.95, |
|
|
top_k=64, |
|
|
stop=["<end_of_turn>"] |
|
|
) |
|
|
|
|
|
print(output['choices'][0]['text']) |
|
|
``` |
|
|
|
|
|
## Arquivos Disponíveis |
|
|
|
|
|
* `gemma-3-270m-it.Q8_0.gguf`: Versão quantizada em 8-bit (Recomendada). |
|
|
|
|
|
## Dados de Treinamento |
|
|
|
|
|
O modelo foi treinado no dataset **[RiosWesley/rango-router-BR](https://huggingface.co/datasets/RiosWesley/rango-router-BR)**, contendo frases coloquiais do português brasileiro focadas em contextos de alimentação e restaurantes. |
|
|
|
|
|
--- |
|
|
*Model finetuned using [Unsloth](https://github.com/unslothai/unsloth).* |
|
|
``` |