[HN Gopher] Tosijs-schema is a super lightweight schema-first LL...
___________________________________________________________________
Tosijs-schema is a super lightweight schema-first LLM-native JSON
schema library
Author : podperson
Score : 39 points
Date : 2025-11-23 13:43 UTC (9 hours ago)
(HTM) web link (www.npmjs.com)
(TXT) w3m dump (www.npmjs.com)
| podperson wrote:
| I wrote this library this weekend after realizing that Zod was
| really not designed for the use-cases I want JSON schemas for: 1)
| defining response formats for LLMs and 2) as a single source of
| truth for data structures.
| 7thpower wrote:
| What led you to that conclusion?
| nerdponx wrote:
| And what makes this different? What makes it LLM-native?
| podperson wrote:
| It generates schemas that are strict by default while Zod
| requires you to set everything manually.
|
| This is actually discussed in the linked article (READ ME
| file).
| halayli wrote:
| That's not true based on zod docs.
| https://zod.dev/api?id=objects
|
| most of the claims you're making against zod is
| inaccurate. the readme feels like false claims by ai.
| podperson wrote:
| It seems to be true to me. And aside from the API stuff
| (because I am far from an expert user of Zod) all of this
| has been carefully verified.
| dsabanin wrote:
| Zod's validation errors are awful, the json schema it
| generates for LLM is ugly and and often confusing, the types
| structures Zod creates are often unintelligible in the and
| there's even no good way to pretty print a schema when you're
| debugging. Things are even worse if you're stuck with zod/v3
| sesm wrote:
| What's wrong with Zod validation errors?
| light_hue_1 wrote:
| None of this makes a lot of sense. Validation errors are
| largely irrelevant for LLMs and they can understand them
| just fine. The type structure looks good for LLMs. You can
| definitely pretty print a schema at runtime.
|
| This all seems pretty uninformed.
| podperson wrote:
| 1. Zoe's documentation, such as it is 2. Code examples
| taveras wrote:
| Happy to see more tools in the data schema space.
|
| Will you support Standard Schema (https://standardschema.dev)?
| How does this compare to typebox
| (https://github.com/sinclairzx81/typebox)?
| _heimdall wrote:
| Had you considered using something like XML as the transport
| format rather than JSON? If the UX is similar to zod it wouldn't
| matter what the underlying data format is, and XML is meant to
| support schemas unlike JSON.
| podperson wrote:
| JSON Schema is a schema built on JSON and it's already being
| used. Using XML would mean converting the XML into JSON schema
| to define the response from the LLM.
|
| That said, JSON is "language neutral" but also super convenient
| for JavaScript developers and typically more convenient for
| most people than XML.
| yeasku wrote:
| LLMs are not people.
|
| We want a format for LLMs or for people?
| podperson wrote:
| JSON schema is very human readable.
| drowsspa wrote:
| As a person myself, I very much prefer JSON
| _heimdall wrote:
| Maybe I missed a detail here, sorry if that's the case!
|
| Why would we need to concert XML, which already supports
| schemas and is well understood by LLMs, back to JSON schema?
| verdverm wrote:
| Because most of the world uses JSON and has rich tooling
| for JSONSchemas, notable many LLM providers allow
| JSONSchemas to be part of the request when trying to get
| structured output
| bbminner wrote:
| While llms accept json schemas for constrained decoding, they
| might not respect all of the constraints.
| yunohn wrote:
| > It checks a fixed sample of items (roughly 1%) regardless of
| size
|
| > This provides O(1) performance
|
| Wouldn't 1% of N still imply O(N) performance?
| podperson wrote:
| N is increasing. O(1) means constant (actually capped). We
| never check more than 100 items.
| SkiFire13 wrote:
| Then it's not 1%, because if you have 100k items and you
| check at most 100 you have checked at most 0.1% of items.
| kevmo314 wrote:
| > For large arrays (>97 items) and large dictionaries
|
| How did we end up in a world where 97 items is considered large?
| vages wrote:
| Mind your off-by-1s: 97 items is not large, 98 is.
___________________________________________________________________
(page generated 2025-11-23 23:01 UTC)