48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# JSON Schema Limitations Reference
|
|
|
|
## Supported Features
|
|
|
|
- ✅ All basic types (object, array, string, integer, number, boolean, null)
|
|
- ✅ `enum` (primitives only)
|
|
- ✅ `const`, `anyOf`, `allOf`
|
|
- ✅ `$ref`, `$def`, `definitions` (local)
|
|
- ✅ `required`, `additionalProperties: false`
|
|
- ✅ String formats: date-time, time, date, email, uri, uuid, ipv4, ipv6
|
|
- ✅ `minItems: 0` or `minItems: 1` for arrays
|
|
|
|
## NOT Supported
|
|
|
|
- ❌ Recursive schemas
|
|
- ❌ Numerical constraints (minimum, maximum, multipleOf)
|
|
- ❌ String constraints (minLength, maxLength, pattern with complex regex)
|
|
- ❌ Array constraints (beyond minItems 0/1)
|
|
- ❌ External `$ref`
|
|
- ❌ Complex types in enums
|
|
|
|
## SDK Transformation
|
|
|
|
Python and TypeScript SDKs automatically remove unsupported constraints and add them to descriptions.
|
|
|
|
## Success Criteria
|
|
|
|
- [ ] Schema designed with all required fields
|
|
- [ ] JSON Schema limitations respected
|
|
- [ ] SDK helper integrated (Pydantic/Zod)
|
|
- [ ] Beta header included in requests
|
|
- [ ] Error handling for refusals and token limits
|
|
- [ ] Tested with representative examples
|
|
- [ ] Edge cases covered (missing fields, invalid data)
|
|
- [ ] Production optimization considered (caching, tokens)
|
|
- [ ] Monitoring in place (latency, costs)
|
|
- [ ] Documentation provided
|
|
|
|
## Important Reminders
|
|
|
|
1. **Use SDK helpers** - `client.beta.messages.parse()` auto-validates
|
|
2. **Respect limitations** - No recursive schemas, no min/max constraints
|
|
3. **Add descriptions** - Helps Claude understand what to extract
|
|
4. **Handle refusals** - Don't retry safety refusals
|
|
5. **Monitor performance** - Watch for cache misses and high latency
|
|
6. **Set `additionalProperties: false`** - Required for all objects
|
|
7. **Test thoroughly** - Edge cases often reveal schema issues
|