Skip to main content

automatically reduces token usage by replacing field names with short identifiers (e.g., a, b, c, …), while preserving full descriptions and reversibility.

Project description

🚀 Add MinifiedPydanticOutputParser to Optimize Token Usage in LLM Outputs

This PR introduces a new class: MinifiedPydanticOutputParser, a drop-in replacement for PydanticOutputParser that automatically reduces token usage by replacing field names with short identifiers (e.g., a, b, c, …), while preserving full descriptions and reversibility.

✨ What It Does

  • Transforms a given Pydantic schema by replacing verbose field names with shorter aliases.
  • Retains all Field(..., description=...) information — essential for prompt construction and LLM understanding.
  • Accepts minified JSON outputs from the LLM and reconstructs the original schema transparently.
  • Supports nested models and list fields recursively.
  • Compatible with strict=True mode used with with_structured_output.

✅ Benefits

  • Reduces prompt and completion token count, leading to faster LLM response times and lower inference costs.
  • Maintains clarity in the LLM's understanding of the field semantics thanks to preserved descriptions.
  • No code change required downstream — consumers receive the original schema post-parsing.

📉 Performance Impact

In personal benchmarks, this optimization led to a ~30% reduction in LLM response time, due to:

  • Fewer tokens needing generation
  • Reduced I/O and parsing overhead

💸 This also translates to lower API costs, especially in high-throughput or large-output scenarios.

Examples

  • See Gemini example
  • [see OpenAI OutputParser example] (examples/openai_output_parser.md)
  • [see OpenAI structured_output strict example] (examples/openai_strict.md)

🧪 What it does

Given:

class User(BaseModel):
    first_name: str = Field(..., description="The user's first name")
    last_name: str = Field(..., description="The user's last name")

The model is transformed into:

class MinifiedUser(BaseModel):
    a: str = Field(..., description="The user's first name")
    b: str = Field(..., description="The user's last name")

Then seamlessly restored to the original User class after parsing the LLM output.

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

langchain_pydantic_minifier-0.1.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

langchain_pydantic_minifier-0.1.3-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file langchain_pydantic_minifier-0.1.3.tar.gz.

File metadata

  • Download URL: langchain_pydantic_minifier-0.1.3.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.9.21 Darwin/24.5.0

File hashes

Hashes for langchain_pydantic_minifier-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ae558d96b2b3435545e9a86f8cfc2d50180b29d50c38fb8dbc0f54235ff663cd
MD5 bdea9ad73f5d24ebdf93bb5ea35d6b3e
BLAKE2b-256 ee08150a4da1d33c38b2f8f9991281ef85b4c038353f0c42cd601d7f5ec36c37

See more details on using hashes here.

File details

Details for the file langchain_pydantic_minifier-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_pydantic_minifier-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6b773fc09a77be7303812446f9dcca07d8dc5b121d7ab08817689f0b9a4c00cd
MD5 ddffcf51ff65369676823614fbbbc03f
BLAKE2b-256 38189e04a5cba4177d0e81cfc1af722b5f57eee1dc8b2869b3c4844c89f6e59f

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