jsonformer icon indicating copy to clipboard operation
jsonformer copied to clipboard

Add support for null and union types

Open posionus opened this issue 2 years ago • 3 comments

resolves #29, resolves #26

Example:

from jsonformer.format import highlight_values
from jsonformer.main import Jsonformer
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

print("Loading model and tokenizer...")
model_name = "databricks/dolly-v2-3b"
model = AutoModelForCausalLM.from_pretrained(model_name, use_cache=True, device_map="auto", offload_folder='offload', torch_dtype=torch.float32)
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True, use_cache=True)
print("Loaded model and tokenizer")

car = {
    "type": "object",
    "properties": {
        "make": {"type": "string"},
        "model": {"type": "string"},
        "year": {"type": "number"},
        "trim": {"type": ["string", "null"]},
    },
}

builder = Jsonformer(
    model=model,
    tokenizer=tokenizer,
    json_schema=car,
    debug=True,
    prompt='Make an example car json for Dodge Charger ',
)

print("Generating...")
output = builder()

highlight_values(output)

output:

{
  make: "Dodge",
  model: "Charger",
  year: 1991.0,
  trim: None
}

posionus avatar Jun 10 '23 09:06 posionus

This contribution looks great! Is there any news on this? Why wasn't it merged?

ivsanro1 avatar Oct 27 '23 19:10 ivsanro1

Works for me when I merged it in this branch, where I added probabilities too https://github.com/wassname/prob_jsonformer

wassname avatar May 10 '24 12:05 wassname

I'd like if this was merged into main as well.

kaiguy23 avatar Jun 13 '24 19:06 kaiguy23