Text Generation
GGUF
llama.cpp
agent
agentic
tool-use
function-calling
react
local-government
agenda-parser
conversational
Instructions to use build-small-hackathon/agenda-parser-lite with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use build-small-hackathon/agenda-parser-lite with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf build-small-hackathon/agenda-parser-lite:Q8_0 # Run inference directly in the terminal: llama cli -hf build-small-hackathon/agenda-parser-lite:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf build-small-hackathon/agenda-parser-lite:Q8_0 # Run inference directly in the terminal: llama cli -hf build-small-hackathon/agenda-parser-lite:Q8_0
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf build-small-hackathon/agenda-parser-lite:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf build-small-hackathon/agenda-parser-lite:Q8_0
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf build-small-hackathon/agenda-parser-lite:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf build-small-hackathon/agenda-parser-lite:Q8_0
Use Docker
docker model run hf.co/build-small-hackathon/agenda-parser-lite:Q8_0
- LM Studio
- Jan
- vLLM
How to use build-small-hackathon/agenda-parser-lite with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "build-small-hackathon/agenda-parser-lite" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "build-small-hackathon/agenda-parser-lite", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/build-small-hackathon/agenda-parser-lite:Q8_0
- Ollama
How to use build-small-hackathon/agenda-parser-lite with Ollama:
ollama run hf.co/build-small-hackathon/agenda-parser-lite:Q8_0
- Unsloth Studio
How to use build-small-hackathon/agenda-parser-lite with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for build-small-hackathon/agenda-parser-lite to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for build-small-hackathon/agenda-parser-lite to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for build-small-hackathon/agenda-parser-lite to start chatting
- Pi
How to use build-small-hackathon/agenda-parser-lite with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf build-small-hackathon/agenda-parser-lite:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "build-small-hackathon/agenda-parser-lite:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use build-small-hackathon/agenda-parser-lite with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf build-small-hackathon/agenda-parser-lite:Q8_0
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default build-small-hackathon/agenda-parser-lite:Q8_0
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use build-small-hackathon/agenda-parser-lite with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf build-small-hackathon/agenda-parser-lite:Q8_0
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "build-small-hackathon/agenda-parser-lite:Q8_0" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use build-small-hackathon/agenda-parser-lite with Docker Model Runner:
docker model run hf.co/build-small-hackathon/agenda-parser-lite:Q8_0
- Lemonade
How to use build-small-hackathon/agenda-parser-lite with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull build-small-hackathon/agenda-parser-lite:Q8_0
Run and chat with the model
lemonade run user.agenda-parser-lite-Q8_0
List all available models
lemonade list
Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: gemma
|
| 3 |
+
base_model: google/gemma-4-E4B-it
|
| 4 |
+
datasets:
|
| 5 |
+
- build-small-hackathon/agenda-parser-tool-traces
|
| 6 |
+
library_name: gguf
|
| 7 |
+
pipeline_tag: text-generation
|
| 8 |
+
tags:
|
| 9 |
+
- gguf
|
| 10 |
+
- llama.cpp
|
| 11 |
+
- agent
|
| 12 |
+
- agentic
|
| 13 |
+
- tool-use
|
| 14 |
+
- function-calling
|
| 15 |
+
- react
|
| 16 |
+
- local-government
|
| 17 |
+
- agenda-parser
|
| 18 |
+
---
|
| 19 |
+
|
| 20 |
+
# agenda-parser-lite
|
| 21 |
+
|
| 22 |
+
**A Gemma 4 E4B fine-tune that drives the [Agenda Parser](https://huggingface.co/rdubwiley) agents' tool-calling loop** β quantized to **Q8_0** GGUF for [llama.cpp](https://github.com/ggml-org/llama.cpp).
|
| 23 |
+
|
| 24 |
+
This is the **lite** member of a three-model family (~4B (effective) params) fine-tuned to follow a strict ReAct *single-JSON-action* protocol over public-meeting agenda packets and local-government legal questions. It is **not** a general chat assistant.
|
| 25 |
+
|
| 26 |
+
| | |
|
| 27 |
+
|---|---|
|
| 28 |
+
| **Base model** | [`google/gemma-4-E4B-it`](https://huggingface.co/google/gemma-4-E4B-it) (~4B (effective)) |
|
| 29 |
+
| **Method** | LoRA SFT β merged β Q8_0 GGUF |
|
| 30 |
+
| **Training data** | [`build-small-hackathon/agenda-parser-tool-traces`](https://huggingface.co/datasets/build-small-hackathon/agenda-parser-tool-traces) (`filtered` config) |
|
| 31 |
+
| **LoRA adapter** | [`build-small-hackathon/agenda-parser-lite-lora`](https://huggingface.co/build-small-hackathon/agenda-parser-lite-lora) |
|
| 32 |
+
| **License** | [Gemma Terms of Use](https://ai.google.dev/gemma/terms) |
|
| 33 |
+
|
| 34 |
+
## What it does β the agent protocol
|
| 35 |
+
|
| 36 |
+
The model is trained to act as a ReAct agent that calls one tool at a time. Each step it must emit **a single JSON object and nothing else**:
|
| 37 |
+
|
| 38 |
+
```json
|
| 39 |
+
{"thought": "<one short sentence>", "tool": "<tool name>", "args": { ... }}
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
It reads the tool's result, then emits the next action, until it calls `final_answer`. It is trained on **two toolkits**:
|
| 43 |
+
|
| 44 |
+
- **Agenda packet research** β `list_agenda_items`, `get_item_text`, `search_packet` (semantic), `find_text` (exact), `summarize`, `report`, `final_answer`. Answers questions about an uploaded agenda packet (what an item approves, costs, dates, which items mention X, briefings).
|
| 45 |
+
- **Cornell LII legal research** (scoped to **local-government** law) β `search_regulations`, `resolve_cfr`/`resolve_usc`, `mcl_find`/`mcl_search`/`mcl_text`/`mcl_outline`/`mcl_lookup`, etc. Answers questions on Open Meetings Act, FOIA, municipal budgeting/taxation, zoning, ethics, and the Michigan statutes governing local governments β citing CFR/USC and reading Michigan MCL text.
|
| 46 |
+
|
| 47 |
+
## How it was trained
|
| 48 |
+
|
| 49 |
+
1. **Teacher traces.** Two strong teacher models β **Kimi k2.6** and **DeepSeek 4 pro** (via [OpenCode Go](https://opencode.ai)) β drove the *real* agent loop over 11 public agenda packets and a set of local-government legal questions. Tools executed live, so every observation is grounded.
|
| 50 |
+
2. **Judge filtering.** Each completed trace's final answer was scored for **faithfulness** against the text the agent actually retrieved (fast OpenCode-Go judge); only high-faithfulness traces were kept. One accepted agent step = one training example.
|
| 51 |
+
3. **SFT.** LoRA on the base's attention projections (q/k/v/o), 3 epochs over **974 examples** (held-out packet excluded β see Evaluation), full-sequence loss (the Gemma chat template lacks `{% generation %}` markers for assistant-only loss), bf16 + gradient checkpointing, then **merged** and converted to GGUF.
|
| 52 |
+
|
| 53 |
+
| hyperparameter | value |
|
| 54 |
+
|---|---|
|
| 55 |
+
| LoRA rank / Ξ± / dropout | 32 / 64 / 0.05 |
|
| 56 |
+
| target modules | attention + MLP `q,k,v,o,gate,up,down_proj` (auto-detected real `nn.Linear`) |
|
| 57 |
+
| epochs | 3 |
|
| 58 |
+
| learning rate | 2e-4 (cosine, 3% warmup) |
|
| 59 |
+
| batch Γ grad-accum | 2 Γ 8 |
|
| 60 |
+
| max sequence length | 4096 |
|
| 61 |
+
| precision / GPU | bf16 / A100-80GB |
|
| 62 |
+
| final in-training token accuracy | ~0.99 |
|
| 63 |
+
|
| 64 |
+
The full training/generation pipeline (trace capture, judge, LoRA, merge, GGUF) is reproducible from the dataset card.
|
| 65 |
+
|
| 66 |
+
## Training data & provenance
|
| 67 |
+
|
| 68 |
+
Built from [`build-small-hackathon/agenda-parser-tool-traces`](https://huggingface.co/datasets/build-small-hackathon/agenda-parser-tool-traces): per-step `{system, user, assistant}` chat examples whose `system` message is the deployed agent's exact tool catalog + protocol. The source agenda packets are published in that dataset's [`source_packets/`](https://huggingface.co/datasets/build-small-hackathon/agenda-parser-tool-traces/tree/main/source_packets) folder; each trace row links to its source by `meta.unit_id`. Distilled from third-party teacher models (their terms may apply to generated text); source PDFs are public meeting records.
|
| 69 |
+
|
| 70 |
+
## Sibling models
|
| 71 |
+
|
| 72 |
+
| model | base | quant | this card |
|
| 73 |
+
|---|---|---|:---:|
|
| 74 |
+
| [`agenda-parser-lite`](https://huggingface.co/build-small-hackathon/agenda-parser-lite) | Gemma 4 E4B | Q8_0 | β
|
|
| 75 |
+
| [`agenda-parser-medium`](https://huggingface.co/build-small-hackathon/agenda-parser-medium) | Gemma 4 26B-A4B (MoE) | Q4_K_M | |
|
| 76 |
+
| [`agenda-parser-high`](https://huggingface.co/build-small-hackathon/agenda-parser-high) | Gemma 4 26B-A4B (MoE) | Q8_0 | |
|
| 77 |
+
|
| 78 |
+
(`lite` = fast/small; `medium` = balanced; `high` = best quality. `medium`/`high` share the 26B-A4B base, fine-tuned independently and shipped at different quants.)
|
| 79 |
+
|
| 80 |
+
## Evaluation
|
| 81 |
+
|
| 82 |
+
One agenda packet (`oakland-1570`) and a held-out task seed are **excluded from training** and reserved for a base-vs-fine-tuned A/B benchmark (objective protocol metrics β valid-JSON-action rate, clean-`final_answer` rate, tool-error rate β plus an LLM-judge of answer faithfulness, absolute and pairwise). See the project repo's `sft/eval.py`.
|
| 83 |
+
|
| 84 |
+
## Run
|
| 85 |
+
|
| 86 |
+
```bash
|
| 87 |
+
huggingface-cli download build-small-hackathon/agenda-parser-lite agenda-parser-lite-Q8_0.gguf
|
| 88 |
+
# --jinja loads the embedded chat/tool template
|
| 89 |
+
llama-server -m agenda-parser-lite-Q8_0.gguf --jinja
|
| 90 |
+
```
|
| 91 |
+
|
| 92 |
+
The model expects the agent's system prompt (tool catalog + protocol) and replies with one JSON action per turn.
|
| 93 |
+
|
| 94 |
+
## Intended use & limitations
|
| 95 |
+
|
| 96 |
+
- **Intended:** the in-process llama.cpp backend for the Agenda Parser agents over uploaded agenda PDFs and local-government legal lookups.
|
| 97 |
+
- **Out of scope:** general-purpose chat; non-tool-calling use; legal/financial advice. Always verify answers against the cited source packet / statute.
|
| 98 |
+
- Inherits the [Gemma Terms of Use](https://ai.google.dev/gemma/terms) and use restrictions.
|