Downloads · 30 days
24
13% of all-time downloads
howellx/diegetic-v2-qwen2.5-1.5b-lora
diegetic-v2-qwen2.5-1.5b-lora is a text generation model from howellx. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
Model Name: diegetic-v2-qwen2.5-1.5b-lora Base Model: Qwen/Qwen2.5-1.5B Method: LoRA Fine-tuning License: Apache 2.0
Downloads · 30 days
24
13% of all-time downloads
All-time downloads
185
Public
Repo size
1 GB
Likes
1
Public
Click a slice to open those files.
.safetensors1 GB · 99%
From the Hugging Face model README
Model Name: diegetic-v2-qwen2.5-1.5b-lora
Base Model: Qwen/Qwen2.5-1.5B
Method: LoRA Fine-tuning
License: Apache 2.0
DIEGETIC (Dynamically-grounded Inference Engine for Generative Epistemic Tracking In Conversation) is a language model fine-tuned for epistemic reasoning—the ability to track what it knows, what it doesn't know, and the appropriate level of certainty for each claim.
Measured on a small internal test set of 20 hand-written scenarios. That's enough to check the output format and basic refusal behavior, not enough to support claims about general accuracy.
pip install transformers peft torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
import json
# Load model
model_path = "howellx/diegetic-v2-qwen2.5-1.5b-lora"
base_model_name = "Qwen/Qwen2.5-1.5B"
# Load tokenizer from base model
tokenizer = AutoTokenizer.from_pretrained(base_model_name)
# Add custom special tokens
special_tokens = {
"additional_special_tokens": [
"<OBS>", "</OBS>",
"<BELIEF>", "</BELIEF>",
"<MEM>", "</MEM>",
"<TASK>", "</TASK>",
"<OUTPUT_JSON>", "</OUTPUT_JSON>",
"<EPISTEMIC>",
"<REFUSE_DIEGETIC>"
]
}
tokenizer.add_special_tokens(special_tokens)
# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
base_model_name,
torch_dtype=torch.float16,
low_cpu_mem_usage=True
)
# Resize token embeddings
base_model.resize_token_embeddings(len(tokenizer))
# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, model_path, is_trainable=False)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
model.eval()
# Format prompt
prompt = """You are a helpful assistant that answers questions based solely on provided observations.
What you observed:
Sarah told you that the meeting was cancelled. You have not verified this independently.
Question: Is the meeting cancelled?
Please provide your response as JSON with the following structure:
{
"claims": ["list of claims you are making"],
"confidence": "high/medium/low/n/a",
"evidence": ["list of evidence from observations"],
"unknown": ["list of things you don't know"]
}
Response:"""
# Generate
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.3,
do_sample=True,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True)
# Parse JSON
json_start = response.find("{")
json_end = response.rfind("}") + 1
result = json.loads(response[json_start:json_end])
print(json.dumps(result, indent=2))
{
"claims": [
"Sarah said the meeting was cancelled"
],
"confidence": "low",
"evidence": [
"Sarah stated cancellation"
],
"unknown": [
"Meeting actual status"
]
}
Each category has only three to five scenarios, so treat these as a smoke test rather than a benchmark.
| Category | Tests | Pass Rate | Quality Score |
|---|---|---|---|
| Refusal (Unknowable) | 5 | 100% | 4.00/4.0 |
| Multi-step Reasoning | 3 | 100% | 4.00/4.0 |
| Partial Information | 3 | 100% | 4.00/4.0 |
| Source Attribution | 3 | 100% | 4.00/4.0 |
| Graduated Uncertainty | 3 | 100% | 4.00/4.0 |
| Direct Observation | 3 | 100% | 4.00/4.0 |
| OVERALL | 20 | 100% | 4.00/4.0 |
The model expects a specific prompt format:
You are a helpful assistant that answers questions based solely on provided observations.
What you observed:
[Your observations or context here]
Question: [Your question here]
Please provide your response as JSON with the following structure:
{
"claims": ["list of claims you are making"],
"confidence": "high/medium/low/n/a",
"evidence": ["list of evidence from observations"],
"unknown": ["list of things you don't know"]
}
Response:
high: Direct observation, verified factsmedium: Reasonable inference, needs verificationlow: Uncertain, conflicting info, second-handn/a: Unknowable, insufficient informationThis model is designed to improve epistemic reasoning in AI systems by:
The training dataset consists of 20,000 synthetic examples across 7 categories:
If you use this model in your research, please cite:
@misc{diegetic2026,
title={DIEGETIC: Epistemic Reasoning Language Model},
author={Howell, Justin},
year={2026},
url={https://huggingface.co/howellx/diegetic-v2-qwen2.5-1.5b-lora},
note={Research release}
}
This model is released under the Apache 2.0 License.
The base model (Qwen/Qwen2.5-1.5B) is also under Apache 2.0 License.
Model Status: Experimental research release. No longer under active development. Last Updated: October 10, 2026 Test Coverage: 20-scenario internal test set