Coder Social home page Coder Social logo

json-schema-logits-processor's Introduction

JSON Schema Logits Processor

The JSON Schema Logits Processor is a Python tool that uses PyTorch and the Transformers library to process logits based on a given JSON Schema. The tool is designed to process sequences of tokens and determine which tokens would be valid next according to a given schema.

Features

Uses JsonSchemaLogitsProcessor, a class that inherits from LogitsProcessor in the Transformers library. Utilizes a tokenizer from the Transformers library. Decodes input sequences and determines the next valid tokens based on the JSON schema. Includes a method for validating partial JSON against a given schema.

Usage

The main class in this tool is JsonSchemaLogitsProcessor. An instance of this class can be created with a JsonSchema object and a PreTrainedTokenizer object.

from json_schema_logits_processor.schema import JsonSchema
from transformers import PreTrainedTokenizer
from json_schema_logits_processor.json_schema_logits_processor import JsonSchemaLogitsProcessor
from json_schema_logits_processor.schema import parse_schema_from_string

schema = parse_schema_from_string(
    '{"type": "object", "properties": {"a": {"type": "string"}}}'
)

# Assuming `schema` is a JsonSchema object and `tokenizer` is a PreTrainedTokenizer object
processor = JsonSchemaLogitsProcessor(schema, tokenizer)

Usage in transformers models:

output = model.generate(*inputs, logits_processor=[logits_processor])

The processor decodes the input sequence and determines the next valid tokens based on the JSON schema. The returned tensor contains the scores for the valid tokens and a very low score for invalid tokens.

Dependencies

  • PyTorch
  • Transformers

Disclaimer

Please note that this project is a work in progress and the functionality may change over time.

For more information, please review the source code or contact the author. Contributions and suggestions are welcome!

Contact Evan Richards

  • Github: @evanrichards

License

mit

json-schema-logits-processor's People

Contributors

evanrichards avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.