Image-Text-to-Text
GGUF
English
Portuguese
ollama
llama.cpp
local-ai
on-device
low-vram
small-model
tiny-llm
vision
multimodal
thinking
reasoning
tool-calling
code
coding-assistant
typescript
javascript
qwen
qwen3.5
iq3_xxs
imatrix
conversational
Eval Results (legacy)
Instructions to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF 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 sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF 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 sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS # Run inference directly in the terminal: llama cli -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS # Run inference directly in the terminal: llama cli -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS # Run inference directly in the terminal: ./build/bin/llama cli -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Use Docker
docker model run hf.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
- Llama new
- LM Studio
- Jan
- vLLM
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
- Ollama
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with Ollama:
ollama run hf.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
- Unsloth Desktop
- Pi
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with Docker Model Runner:
docker model run hf.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
- Lemonade
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Run and chat with the model
lemonade run user.Sagui-4B-Vision-Thinking-Code-GGUF-IQ3_XXS
List all available models
lemonade list
- Hermes Agent
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
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 sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS
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 "sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF:IQ3_XXS" \ --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"
Download scripts/run_demos.py from sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF: direct link, hf CLI and curl.
- Browser
- Download file 3.46 kB
-
https://huggingface.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF/resolve/main/scripts/run_demos.py
- Command line
-
hf download hf://sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF/scripts/run_demos.py
-
curl -L -o run_demos.py https://huggingface.co/sysrobson/Sagui-4B-Vision-Thinking-Code-GGUF/resolve/main/scripts/run_demos.py
3.46 kB
| """Run every README demo against a local Ollama model and save the raw responses. | |
| Usage: python scripts/run_demos.py [model] (default: sagui-4b) | |
| Writes examples/transcripts.json with the unedited output and Ollama's timing counters. | |
| Standard library only. | |
| """ | |
| import base64 | |
| import json | |
| import sys | |
| import time | |
| import urllib.request | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| MODEL = sys.argv[1] if len(sys.argv) > 1 else "sagui-4b" | |
| URL = "http://localhost:11434/api/chat" | |
| WEATHER_TOOL = { | |
| "type": "function", | |
| "function": { | |
| "name": "get_weather", | |
| "description": "Get the current weather for a city", | |
| "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}, | |
| }, | |
| } | |
| def image(name): | |
| return base64.b64encode((ROOT / "examples" / name).read_bytes()).decode() | |
| def chat(**body): | |
| req = urllib.request.Request(URL, json.dumps({"model": MODEL, "stream": False, **body}).encode(), | |
| {"Content-Type": "application/json"}) | |
| with urllib.request.urlopen(req, timeout=900) as resp: | |
| return json.load(resp) | |
| def record(results, name, **body): | |
| started = time.time() | |
| data = chat(**body) | |
| msg = data["message"] | |
| results.append({ | |
| "demo": name, | |
| "think": body["think"], | |
| "prompt": body["messages"][-1].get("content"), | |
| "thinking": msg.get("thinking") or "", | |
| "content": msg.get("content") or "", | |
| "tool_calls": msg.get("tool_calls"), | |
| "tokens": data.get("eval_count"), | |
| "tokens_per_second": round(data.get("eval_count", 0) / (data.get("eval_duration", 1) / 1e9), 1), | |
| "seconds": round(time.time() - started, 1), | |
| }) | |
| print(f"{name}: {results[-1]['tokens']} tokens, {results[-1]['tokens_per_second']} tok/s") | |
| return msg | |
| def main(): | |
| results = [] | |
| record(results, "vision-fix-ts-error", think=False, messages=[{ | |
| "role": "user", | |
| "content": "This is a screenshot from my editor. Explain the error in one sentence, then give the corrected line 4.", | |
| "images": [image("ts-error.png")], | |
| }]) | |
| record(results, "vision-ui-to-code", think=True, messages=[{ | |
| "role": "user", | |
| "content": "Recreate this screen as a single React + TypeScript component with inline styles. Code only.", | |
| "images": [image("signup-ui.png")], | |
| }]) | |
| record(results, "code-typescript", think=False, messages=[{ | |
| "role": "user", | |
| "content": "Write a TypeScript function groupBy<T, K extends PropertyKey>(items: T[], key: (item: T) => K): Record<K, T[]>. Code only.", | |
| }]) | |
| record(results, "thinking-logic", think=True, messages=[{ | |
| "role": "user", | |
| "content": "A train leaves at 14:35 and arrives at 17:10. How long is the trip in minutes?", | |
| }]) | |
| ask = {"role": "user", "content": "What's the weather in Lisbon? Use the tool."} | |
| call = record(results, "tool-call", think=False, tools=[WEATHER_TOOL], messages=[ask]) | |
| if call.get("tool_calls"): | |
| record(results, "tool-result", think=False, tools=[WEATHER_TOOL], messages=[ | |
| ask, call, {"role": "tool", "tool_name": "get_weather", "content": '{"temp_c": 21, "sky": "sunny"}'}, | |
| ]) | |
| out = ROOT / "examples" / "transcripts.json" | |
| out.write_text(json.dumps({"model": MODEL, "results": results}, ensure_ascii=False, indent=1), encoding="utf-8") | |
| if __name__ == "__main__": | |
| main() | |