If you're building applications with OpenAI, Gemini, or LangChain agents, you already know the pain: Large Language Models are unreliable.
You ask for a JSON response. You set up a strict parser like Pydantic or Marshmallow. But then:
- The LLM cuts off mid-sentence because it hit the token limit.
- The output has a missing closing bracket
}. - The LLM outputs Python-style single quotes (
'id') orTrueinstead of standard double quotes andtrue.
And just like that, your production API crashes. 💥
🛑 The Problem: "Rigid Validation" vs "Runtime Resilience"
Pydantic is fantastic for validation, but it is designed to fail. If something is slightly off, it raises a ValidationError and terminates the flow.
To prevent crashes, developers write endless, messy try/except wrappers and heuristic cleanup codes.
That is why I built higi—a self-healing structural middleware layer that sits directly between raw, volatile LLM strings and your strict business logic.
✨ How higi Works
With a single decorator, @shield, you define:
- A Blueprint (the target types).
- A Fallback (the safe default state if data is completely unrecoverable).
When a malformed string enters your function, higi heals it before it reaches your core logic.
from higi import shield
# 1. Define schema
blueprint = {
"status_code": int,
"message": str,
"is_active": bool
}
# 2. Define safe fallback
fallback = {
"status_code": 500,
"message": "Fallback operational state",
"is_active": False
}
@shield(blueprint=blueprint, fallback=fallback)
def process_data(clean_data):
# Guaranteed to never receive malformed keys or wrong types!
print(f"Executing with: {clean_data}")
🧠 The Self-Healing Pipeline
If an LLM returns this truncated string:
"{'status_code': '200', 'message': 'LLM output got cut off mid-se
Here is what higi does in microseconds:
- Format Normalization: Standardizes single quotes to double quotes.
-
Boolean Correction: Normalizes Python
Trueto JSONtrue. -
LIFO Stack Completion: Detects that a quote
", and a brace{are left open. It automatically closes them in correct reverse order:{"status_code": 200, "message": "LLM output got cut off mid-se"}. -
Type Coercion: Casts the string
"200"into an integer200.
⚡ Performance: Is It Slow?
Resilience shouldn't compromise performance. I ran benchmarks using Python's timeit over 50,000 iterations. Here are the results:
-
Overhead for direct Dict payloads:
0.56 μsper call. -
Overhead for Clean JSON string parsing:
9.26 μsper call. -
Overhead for Truncated JSON String Healing + Coercion:
15.14 μsper call.
To put this in perspective, an LLM call takes 1,000,000 μs (1 second). Running higi adds a negligible 0.0015% latency overhead to your app, but gives you 100% resilience.
🚀 Get Started
Help build the self-healing Python runtime engine!
- GitHub Repo: https://github.com/Sai8555/higi---module
-
PyPI:
pip install higi
If you find it useful, leave a ⭐ on GitHub! Let's make production crashes a thing of the past.
Top comments (0)