Skip to main content

Reliable, structured, production-safe LLM outputs with schema validation and auto-repair

Project description

PromptGuard

Never parse LLM output again.

LLMs are probabilistic. Software is deterministic.

PromptGuard bridges the gap.

PromptGuard is a production-grade reliability layer that turns Large Language Models into safe, structured, testable software components.

If your application depends on LLM outputs — agents, workflows, background jobs, voice systems, document parsing — then PromptGuard prevents the failures that eventually break every LLM app in production.


Why PromptGuard Exists

Every LLM developer eventually runs into this:

json.loads(llm_output)  # crashes in prod

Because LLMs:

  • return invalid JSON
  • hallucinate fields
  • change output formats
  • break silently after model updates
  • fail one out of every N requests

These failures cause:

  • background job crashes
  • broken agents
  • corrupted pipelines
  • silent data loss
  • 2am production incidents

PromptGuard eliminates this entire class of problems.


What PromptGuard Guarantees

  • Schema-valid outputs — always
  • Automatic repair when models misbehave
  • Deterministic structured data
  • Prompt regression testing
  • Provider-agnostic execution

No regex. No fragile parsing. No silent failures.


Installation

pip install llm-promptguard

# With provider-specific dependencies
pip install llm-promptguard[openai]
pip install llm-promptguard[anthropic]
pip install llm-promptguard[google]
pip install llm-promptguard[all]

Quick Start

from promptguard import llm_call
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

result = llm_call(
    model="gpt-4o",
    prompt="John is 30 years old",
    schema=Person
)

print(result.data)
# Person(name='John', age=30)

If the model returns invalid output, PromptGuard automatically:

  1. detects the schema violation
  2. explains the error
  3. re-prompts the model
  4. repairs the output
  5. returns guaranteed valid data

Real-World Examples

Resume & Document Parsing

class Resume(BaseModel):
    name: str
    skills: list[str]
    years_experience: int

resume = llm_call(
    prompt=resume_text,
    model="gpt-4o",
    schema=Resume
)
  • No missing fields
  • No malformed JSON
  • No broken pipelines

Email Triage Automation

class EmailIntent(BaseModel):
    intent: str
    urgency: int
    requires_reply: bool

intent = llm_call(
    prompt=email_body,
    model="gpt-4o",
    schema=EmailIntent
)

Safe to run in background workers. Safe to store in databases. Safe to trigger workflows.


AI Agents (Tool Calling)

class ToolArgs(BaseModel):
    action: str
    resource_id: str

args = llm_call(
    prompt=agent_prompt,
    model="gpt-4o",
    schema=ToolArgs
)

run_tool(**args.data.model_dump())

PromptGuard prevents agents from:

  • hallucinating arguments
  • calling tools incorrectly
  • freezing execution chains

Voice Agents & Call Automation

Speech → LLM → Action

If structure breaks, the call fails.

PromptGuard ensures voice systems always receive valid commands.


Background Jobs & Queues

@worker.task
async def process_document(text):
    result = await allm_call(
        prompt=text,
        model="gpt-4o",
        schema=Extraction
    )
    save(result.data)

No retries. No poison messages. No corrupted jobs.


LangChain Integration

PromptGuard works seamlessly with LangChain.

from langchain.tools import Tool
from promptguard import llm_call
from pydantic import BaseModel

class SearchArgs(BaseModel):
    query: str

search_tool = Tool(
    name="search",
    func=lambda q: search_api(q),
    description="Search the web"
)

args = llm_call(
    prompt="Search for Tesla earnings",
    model="gpt-4o",
    schema=SearchArgs
)

search_tool.run(args.data.query)

PromptGuard becomes the type-safe boundary between agents and tools.


Prompt Regression Testing

promptguard test
  • detects prompt drift
  • catches model behavior changes
  • prevents silent regressions

LLM prompts finally become testable.


The Demo

class Order(BaseModel):
    product: str
    quantity: int
    price: float

order = llm_call(
    prompt="Buy two iPhones for $999 each",
    model="gpt-4o",
    schema=Order
)

print(order.data)
# Order(product='iPhone', quantity=2, price=999.0)

No parsing. No retries. No crashes.

Just software-safe AI.


Mental Model

Without PromptGuard:

LLM → text → hope → bugs

With PromptGuard:

LLM → contract → software

When You Should Use PromptGuard

If your application:

  • runs LLMs in production
  • executes workflows or agents
  • parses model output
  • stores results in databases
  • depends on structure

Then PromptGuard is not optional.


CLI Commands

promptguard init           # Initialize in a project
promptguard run prompt.yaml  # Run a prompt from YAML
promptguard test           # Run regression tests
promptguard history        # Show version history
promptguard diff <hash>    # Compare versions
promptguard stats          # Show statistics

Supported Providers

Provider Model Examples
OpenAI gpt-4o, gpt-4o-mini, gpt-4-turbo
Anthropic claude-3-opus, claude-3-sonnet, claude-3-haiku
Google gemini-1.5-pro, gemini-1.5-flash
Local Ollama, LM Studio, vLLM (OpenAI-compatible)

Testing with real LLM Calls

  • export OPENAI_API_KEY=sk-...
  • ./scripts/test_all.sh

License

Apache 2.0


PromptGuard — because production AI must be dependable.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_promptguard-0.1.0.tar.gz (55.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_promptguard-0.1.0-py3-none-any.whl (53.5 kB view details)

Uploaded Python 3

File details

Details for the file llm_promptguard-0.1.0.tar.gz.

File metadata

  • Download URL: llm_promptguard-0.1.0.tar.gz
  • Upload date:
  • Size: 55.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for llm_promptguard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 491ac250b46d0db115e018879e6a6d78b89a6fcde22b62fa310b60a0abf9efea
MD5 2c99acbbc8a0c5cd2e3f071b03a211be
BLAKE2b-256 abd24cd326d8fc20a1ddf9bc8161fab718b91a931131c275d10478d7772782d4

See more details on using hashes here.

File details

Details for the file llm_promptguard-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llm_promptguard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15e27dc53d05f9b83a9f270615bd62e33ce6dcb54a7f00a7c403314be95e556c
MD5 23a040b79bae1e007a133c347b92cbac
BLAKE2b-256 6be9618d24a9f6cba693d0d6c9fd3a4c8e4e3b03b38c82020a134b46e90a050a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page