Instructions to use gohumanize/gohumanize-open-humanizer with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use gohumanize/gohumanize-open-humanizer with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="gohumanize/gohumanize-open-humanizer") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("gohumanize/gohumanize-open-humanizer") model = AutoModelForCausalLM.from_pretrained("gohumanize/gohumanize-open-humanizer", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use gohumanize/gohumanize-open-humanizer 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 gohumanize/gohumanize-open-humanizer:Q4_K_M # Run inference directly in the terminal: llama cli -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf gohumanize/gohumanize-open-humanizer:Q4_K_M # Run inference directly in the terminal: llama cli -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
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 gohumanize/gohumanize-open-humanizer:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
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 gohumanize/gohumanize-open-humanizer:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
Use Docker
docker model run hf.co/gohumanize/gohumanize-open-humanizer:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use gohumanize/gohumanize-open-humanizer with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "gohumanize/gohumanize-open-humanizer" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gohumanize/gohumanize-open-humanizer", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/gohumanize/gohumanize-open-humanizer:Q4_K_M
- SGLang
How to use gohumanize/gohumanize-open-humanizer with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "gohumanize/gohumanize-open-humanizer" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gohumanize/gohumanize-open-humanizer", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "gohumanize/gohumanize-open-humanizer" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gohumanize/gohumanize-open-humanizer", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use gohumanize/gohumanize-open-humanizer with Ollama:
ollama run hf.co/gohumanize/gohumanize-open-humanizer:Q4_K_M
- Unsloth Desktop
- Pi
How to use gohumanize/gohumanize-open-humanizer with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
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": "gohumanize/gohumanize-open-humanizer:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use gohumanize/gohumanize-open-humanizer with Docker Model Runner:
docker model run hf.co/gohumanize/gohumanize-open-humanizer:Q4_K_M
- Lemonade
How to use gohumanize/gohumanize-open-humanizer with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull gohumanize/gohumanize-open-humanizer:Q4_K_M
Run and chat with the model
lemonade run user.gohumanize-open-humanizer-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use gohumanize/gohumanize-open-humanizer with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
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 gohumanize/gohumanize-open-humanizer:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use gohumanize/gohumanize-open-humanizer with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gohumanize/gohumanize-open-humanizer:Q4_K_M
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 "gohumanize/gohumanize-open-humanizer:Q4_K_M" \ --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"
GoHumanize Open Humanizer
A small open model that rewrites AI-styled English prose into more natural human writing. It is a QLoRA fine-tune of Qwen3-4B on 2,000 pairs of (AI-styled passage, human original) built from public-domain books (Project Gutenberg).
The Open Humanizer is a public research and educational model created to demonstrate the general approach used to develop AI text humanization systems. It is separate from the production models used by GoHumanize.ai, but it reflects many of the same high-level principles: careful dataset preparation, transformation of source text into training pairs, model fine-tuning, evaluation and iterative improvement. It is not intended to reproduce the architecture, data, configuration or performance of the production systems, and it makes no claim about AI detectors.
Everything about the project (dataset, code, evaluation, write-up): https://gohumanize.ai/research
Use
Chat format, thinking disabled. The system prompt below is the one used in training.
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
repo = "gohumanize/gohumanize-open-humanizer"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype=torch.bfloat16, device_map="auto")
SYSTEM = ("Rewrite the following text so that it reads as if a person wrote it: varied sentence "
"length, concrete wording, natural rhythm, no filler transitions. Keep the meaning, the "
"facts and the order of ideas. Return only the rewritten text.")
messages = [{"role": "system", "content": SYSTEM},
{"role": "user", "content": "It is worth noting that the committee ultimately reached a consensus."}]
ids = tok.apply_chat_template(messages, add_generation_prompt=True, enable_thinking=False, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=600, temperature=0.7, top_p=0.9, do_sample=True)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
Also available: a GGUF build in gguf/ for Ollama / LM Studio / llama.cpp, an
MCP server (npx gohumanize-open-humanizer-mcp), a Python client
(pip install gohumanize-open-humanizer) and a browser demo at
https://gohumanize.ai/research.
Training
| Base model | Qwen/Qwen3-4B (Apache-2.0) |
| Method | QLoRA with Unsloth: 4-bit base, LoRA rank 16, alpha 32, all attention and MLP projections |
| Data | 2,000 train / 200 test pairs, see the dataset card |
| Loss | on the assistant (human target) tokens only |
| Epochs, LR, batch | 2 epochs (250 steps), 2e-4 cosine, effective batch 16, max 1,024 tokens |
| Hardware | 1x NVIDIA A10G (24 GB) on Modal, 21.7 minutes |
| Tracking | Weights & Biases run |
| Final losses | train 1.30, eval 1.39 (3.17 before training) |
The LoRA adapter is in lora/; the main files are the merged 16-bit weights.
Evaluation
Base Qwen3-4B vs this model on the 200 held-out pairs, against the human original.
| Measure (200 held-out pairs) | AI-styled input | Base Qwen3-4B | Open Humanizer | Human target |
|---|---|---|---|---|
| BERTScore F1 vs human (higher = closer meaning) | 0.914 | 0.900 | 0.921 | |
| ROUGE-L vs human (higher = closer wording) | 0.493 | 0.424 | 0.540 | |
| Names/capitalised tokens kept (recall) | 0.587 | 0.594 | 0.623 | |
| Length ratio vs human | 1.027 | 0.830 | 0.928 | 1.000 |
| Contractions per 100 words | 0.279 | 0.772 | 0.044 | 0.118 |
| Transition words per 100 words | 0.757 | 0.023 | 0.106 | 0.143 |
| Stock LLM phrases per text | 0.19 | 0.01 | 0.00 | 0.00 |
| Average sentence length (words) | 21.6 | 15.2 | 22.5 | 28.1 |
These measure how far the output moves from AI-styled prose towards the human target. They are not detector scores.
Limitations
- The human targets are pre-1929 prose, so the model leans towards a literary, slightly old-fashioned register.
- Trained on 80 to 300 word passages; rewrite long documents paragraph by paragraph.
- English only. Can drop or alter details on inputs unlike its training data; check facts in the output.
- Educational demo; no claims about AI detectors.
Links
- Project page: https://gohumanize.ai/research
- Model weights, LoRA adapter and GGUF builds (Hugging Face): https://huggingface.co/gohumanize/gohumanize-open-humanizer
- Dataset (Hugging Face, CC-BY 4.0): https://huggingface.co/datasets/gohumanize/gohumanize-open-humanizer-dataset
- Code, pipeline and write-up (GitHub): https://github.com/GoHumanize-ai/gohumanize-open-humanizer
- Paper: https://github.com/GoHumanize-ai/gohumanize-open-humanizer/blob/main/docs/paper.md
- Archived release with DOI (Zenodo): https://doi.org/10.5281/zenodo.22843083
- Python client and CLI (PyPI): https://pypi.org/project/gohumanize-open-humanizer/
- MCP server (npm): https://www.npmjs.com/package/gohumanize-open-humanizer-mcp, source: https://github.com/GoHumanize-ai/gohumanize-open-humanizer-mcp
- Training run (Weights & Biases): https://wandb.ai/gohumanize/gohumanize-open-humanizer/runs/95wi8tdg
Licence and citation
Apache-2.0. Cite as:
GoHumanize team (2026). GoHumanize Open Humanizer: an open text-humanization model, dataset and pipeline built from public-domain data. Version 0.1.0. Zenodo. https://doi.org/10.5281/zenodo.22843083
- Downloads last month
- -