From 2dc8f882a29c3d99fa7dcd4de023c5ef9776d33c Mon Sep 17 00:00:00 2001 From: rahulgs12 Date: Mon, 1 May 2023 14:22:41 -0400 Subject: [PATCH] update --- .gitignore | 4 +- example.ipynb | 217 +++++++++++++ img/cover.png | Bin 0 -> 61069 bytes img/cover2.png | Bin 0 -> 43418 bytes img/cover3.png | Bin 0 -> 82487 bytes .../__pycache__/example.cpython-310.pyc | Bin 0 -> 914 bytes jsonformer/__pycache__/format.cpython-310.pyc | Bin 0 -> 978 bytes .../logits_processors.cpython-310.pyc | Bin 0 -> 2507 bytes jsonformer/__pycache__/main.cpython-310.pyc | Bin 0 -> 5606 bytes jsonformer/example.py | 47 +++ jsonformer/format.py | 24 ++ {jsonllm => jsonformer}/logits_processors.py | 17 +- jsonformer/main.py | 192 ++++++++++++ jsonllm/main.py | 173 ----------- jsonllm/test.py | 27 -- play.ipynb | 291 ------------------ poetry.lock | 32 +- poetry.toml | 2 + pyproject.toml | 9 +- readme.md | 75 ++++- t.ipynb | 258 ---------------- 21 files changed, 601 insertions(+), 767 deletions(-) create mode 100644 example.ipynb create mode 100644 img/cover.png create mode 100644 img/cover2.png create mode 100644 img/cover3.png create mode 100644 jsonformer/__pycache__/example.cpython-310.pyc create mode 100644 jsonformer/__pycache__/format.cpython-310.pyc create mode 100644 jsonformer/__pycache__/logits_processors.cpython-310.pyc create mode 100644 jsonformer/__pycache__/main.cpython-310.pyc create mode 100644 jsonformer/example.py create mode 100644 jsonformer/format.py rename {jsonllm => jsonformer}/logits_processors.py (81%) create mode 100644 jsonformer/main.py delete mode 100644 jsonllm/main.py delete mode 100644 jsonllm/test.py delete mode 100644 play.ipynb create mode 100644 poetry.toml delete mode 100644 t.ipynb diff --git a/.gitignore b/.gitignore index 3104065..197d512 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -jsonllm/__pycache__ \ No newline at end of file +jsonllm/__pycache__ +.venv +workspace.ipynb diff --git a/example.ipynb b/example.ipynb new file mode 100644 index 0000000..8a5919d --- /dev/null +++ b/example.ipynb @@ -0,0 +1,217 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ubuntu/jsonllm/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading model and tokenizer...\n", + "Loaded model and tokenizer\n" + ] + } + ], + "source": [ + "from transformers import AutoModelForCausalLM, AutoTokenizer\n", + "\n", + "print(\"Loading model and tokenizer...\")\n", + "model_name = \"databricks/dolly-v2-12b\"\n", + "model = AutoModelForCausalLM.from_pretrained(model_name, use_cache=True)\n", + "tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True, use_cache=True)\n", + "print(\"Loaded model and tokenizer\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating...\n", + "{\n", + " temperature: \u001b[32m2.2225\u001b[0m,\n", + " humidity: \u001b[32m1.0\u001b[0m,\n", + " wind_speed: {\n", + " value: \u001b[32m0.0\u001b[0m,\n", + " unit: \u001b[32m\"value\"\u001b[0m\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "from jsonformer.format import highlight_values\n", + "from jsonformer.main import Jsonformer\n", + "\n", + "weather_schema = {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"temperature\": {\"type\": \"number\"},\n", + " \"humidity\": {\n", + " \"type\": \"number\",\n", + " },\n", + " \"wind_speed\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"value\": {\"type\": \"number\"},\n", + " \"unit\": {\"type\": \"string\"},\n", + " },\n", + " },\n", + " },\n", + "}\n", + "\n", + "builder = Jsonformer(\n", + " model=model,\n", + " tokenizer=tokenizer,\n", + " json_schema=weather_schema,\n", + " prompt=\"generate the weather\",\n", + ")\n", + "\n", + "print(\"Generating...\")\n", + "output = builder()\n", + "\n", + "highlight_values(output)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating...\n", + "{\n", + " make: \u001b[32m\"Ford\"\u001b[0m,\n", + " model: \u001b[32m\"Mustang\"\u001b[0m,\n", + " year: \u001b[32m10.0\u001b[0m,\n", + " colors: [\n", + " \u001b[32m\"red\"\u001b[0m,\n", + " \u001b[32m\"white\"\u001b[0m,\n", + " \u001b[32m\"blue\"\u001b[0m,\n", + " \u001b[32m\"black\"\u001b[0m,\n", + " \u001b[32m\"yellow\"\u001b[0m,\n", + " \u001b[32m\"orange\"\u001b[0m,\n", + " \u001b[32m\"green\"\u001b[0m,\n", + " \u001b[32m\"pink\"\u001b[0m,\n", + " \u001b[32m\"purple\"\u001b[0m,\n", + " \u001b[32m\"violet\"\u001b[0m\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "car = {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"make\": {\"type\": \"string\"},\n", + " \"model\": {\"type\": \"string\"},\n", + " \"year\": {\"type\": \"number\"},\n", + " \"colors\": {\n", + " \"type\": \"array\",\n", + " \"items\": {\"type\": \"string\"},\n", + " }\n", + " },\n", + "}\n", + "\n", + "builder = Jsonformer(\n", + " model=model,\n", + " tokenizer=tokenizer,\n", + " json_schema=car,\n", + " prompt=\"generate an example car\",\n", + ")\n", + "\n", + "print(\"Generating...\")\n", + "output = builder()\n", + "\n", + "highlight_values(output)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " temperature: \u001b[32m24\u001b[0m,\n", + " humidity: \u001b[32m48.0\u001b[0m,\n", + " wind_speed: {\n", + " value: \u001b[32m12\u001b[0m,\n", + " unit: \u001b[32m\"mph\"\u001b[0m\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "test = {\n", + " \"temperature\": 24,\n", + " \"humidity\": 48.0,\n", + " \"wind_speed\": {\n", + " \"value\": 12,\n", + " \"unit\": \"mph\"\n", + " }\n", + "}\n", + "\n", + "highlight_values(test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.11" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/img/cover.png b/img/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..415250c55f0632cf971e7ee1f1ea22dda065ab01 GIT binary patch literal 61069 zcmeFZbySqm*ET#fNC=XG2#83BNDd*LlG2^RNXHBkLr5zvCEX?qyC=tJ>U1&`>yq__pgVw7~tmI=bXLI-uuM0uM?}QtxA52@fH98AXisY(gy(W zdI11jA7Vo6liuF}XV@Pko@%B(001fVpKlyMRt^L9A&!r}ssaEuac>9v2fmZMmOKDZ zpGbObO8@{IK2TSZH+Y4!pG(w9J9PQWIzTUrc#5WuoyRVbe1AB`q)2Zv=5dyZo%%D8 zNu|eG)^|j=t)K5Rhzy(Pid=A+*wOdhqLbt1nF^Ho4ISn#Pf zSO#(ToM+i$T4g%<0?bm7)RnG4&3sv?Lo_qwk9E$DnR|3Oin;wJB4c0;C%R4d$200H zO>xL<=?L)|xfAwa9ohmN`@*JmHuBp?+xRk={YC|~xdntMaCw38s#87Ho+;dEHrT58 zWWi)plZS{bD1qT||Mi~tia+Yp$7FU6@^0`n`lrG!{~q+*?)D6Txq3uS1`{4(@VJeU z!+F6Q9^^+FVVXcQar|vSacp+wwYF|TQgz$S#p2#fqfG(FyzawUe?L;7X&ZZj!~^k{ zGZhw+p%BEx>P+QxMYQ7kUD;Q2B=vWnym;o?CHVb@k*sV^-Tv40Wo5#M&kL6PmX&qW zx?cO~D)h*b890aSiSaPEKJ21?-#WG=9 znsZ^ER`R2L77nMm=e!viDX}tiLR)f^rqaO^VfeGXAo$x#5iGJzW@CXpQF^LLs^m&; zvGn{N6H$o^-YuIHl8uqX#A|Z)ifw$`LwY4))NE39Y{PCz^MwP>?kj>`P^SzI#!{c=vvCCxDM9P<(?rtY6=;1%-Ufd7-N6sSdO!9k@(Mg& zhrPc%MP>If1`YT8WP;MQ*1iU6Q9V-wV?&@Y+e?FAG3*IKf_FNdDFFmVI0_BJEoVqN zM&h+$%04gFkXHgC4@P-p;+0MNp%a5KgbNE7QJ|6yP0vO+q(X<6eMdsS-0dP_ZMJc+`Vc9>L5ilyr5YxDpBWH#}g| zWU`O5T#*9d5gZIyLo;h^QZQj8{*YLzKnZ;Mk~_KNtbQMFikNgV@yIK9wMjJpkPaeC zVp_%lldg*kEu(MF0d%(_vYSNW(><2XH#&!`dhS29?T-kUPdL%V)s)}AR6ql+wMP6z#7yYXHsl-V8V4pla7TR=4A z`nll^ObrG*vj>s5*dGg?xR-mh_Srh;9q-d&q@$^32|-MIr@#7-F3ukOZ%ZMF zTHVO`+S(N4?;o6~O%v`lXu98BxKXy=hkQAVUV}2td1zz@o2(2>&0b8l=CvP0E)r=z zZ_(SV1oKoKIokK=Ec-469AaQ&Rn=+(ayU5(fQ>M9Gx3RwWRL>MOG`5M&S-mWnFCmYlw2zDg{FSg z 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 Oa`p0!pUW<}-TOCUs@2f| literal 0 HcmV?d00001 diff --git a/img/cover2.png b/img/cover2.png new file mode 100644 index 0000000000000000000000000000000000000000..74206749ad18b854c9b43dde15df2bdf8c45e262 GIT binary patch literal 43418 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

DU1|95l6ys16gt+$ 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 literal 0 HcmV?d00001 diff --git a/img/cover3.png b/img/cover3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec303e5d1f4089aaabfbe9bcc55ff349e9e57b4c GIT binary patch literal 82487 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%0Dha%{A?TgX{csT_~R>E6A)g5K;T%ka1{1P|qxS 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

HZ{_-g;1!zhehMJKeQ&4b&5}r&igbQ%N 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 literal 0 HcmV?d00001 diff --git a/jsonformer/__pycache__/example.cpython-310.pyc b/jsonformer/__pycache__/example.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6467cd160c05360bfa4a0297b4d08711dfda6cd6 GIT binary patch literal 914 zcmZuv&2H2%5RRRn&1V0h2*CmEb&4ox!3=^7-Q{gDiV~=weKv8p)I;uTBtCVe5#84q|gfVgw{I;))YsD0QsTN@42nGJUpsIpmBwGw)1ixprqIij_3vptG!ILhx?xE}ah`JpY;b~n=A{Ni%5o68<3PF& zq_wb_6z;VOYf5XrdwS%OPW^s8OA7@vyRf;jGe=HJ)z~eY8GPfalrSyVb^I0^S_$t6 wep&6K>Uv!=Bym84hz6A2IUAAS7WYkb8;=6gcX>j6N*;D}6UPyul#=-F56wjgo&W#< literal 0 HcmV?d00001 diff --git a/jsonformer/__pycache__/format.cpython-310.pyc b/jsonformer/__pycache__/format.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df49d654fdd3ba688de134187280a8a80eabad11 GIT binary patch literal 978 zcmZuwOKTKC5U%c?*_WFKL}L^a7jFZSy?BxkJmee^J*|diGu=rhnMdsI4Q8DMVFN1S z&07eVV}6jAzUH)lVJ=!V6Co_ArK+pCtG@5s>6vV9t_5g+#A|si0IsRHZ5)eN=w=0j z1j%AZSdTG~T#7U3ap}ENNLqal|Kr!N&*H4E4*#1<$$Jl+BdM zRy9L%OC17re8Jv(rH&f?nH%2PEbkqBHCv|%*u0 z#$dT^<{%d)r1jVAOt83Ju+P)KXa(y`>0(FxWyjIA36;u%jYs@>%du9$-cRWg3bs?Q zXFY#kE0qQ<*NRM(8aqfs?nJhG*sDdURH^MPM5Z4PjP0vfCA85fE5vewf`2lIhYDe_{nHh53tELkZK4y^ zFUhZ<2)YMZqPoM~VQPonLzAU(oRsTcrcp$fmVsSAKGmzJz(+S73@z4Ri}+h(%j_Ae zs%5M&=WSd^!9lct5To0Eslu#p#926q&F1=yihx(ItzJXifN6Tm%UnO9>?sDfIEzN# vgrP9c+Dp2F$#x)mO{;WLen#cJQUsSC_z#j}uKWcY_$z$nlnWPbsI+`KTSO!1fvd6y4GR}8(b$7xQ)vMax2%2V z78nOg++yv@0iv+B=Vopiy=;0>qSbP`sgr0+8`r#^u0^^1x@R(sTDS5v%c5lMs)=%K zqF$#@nW7t*WZ74FXkD^#`(B zR}CC%%DvVZ4Og{!_LBz!fn6;>K4L91x*ypnP5K^|jvBp_>s55yf*JEM3)xt};!yYm z@3e(Mf|;qpAOq6sc<^*)pBXB|-ybimr$fCkS{)_%Xko*qNgNN0=O8shZ5HApM`32t zzP2_sc0T*wRl_h!qC5;KBbI6w@H*dm>-m2*f8_0IQId`FFjCe9wx1e}r_uSyocuis zNWJ*IZ}2i^8*GD*x#Dvuzw#c6ZEx)D3MKcr@;9ZKp>j{m2y-zf54p#7{nBfW?I1}T z0lY7gw+aX#9m5fSxy{{--Hfu(X2^Fh4vP|4$L9}d{aU+Hq|OCO_fw^v-%pV+=fyg4 zzRgXP;gQ8rUZz``8g`i}GSe`wQtnel(o55zc_gymi{mh)VpwvW^{2Vy)81Jwg%mGI zX}Pb{=7x&UZcwbGH`HP1>R~uc)hMR-W*FWX_2P2H6!`L@BsWd^yq~A0zwYYS(`0Q~ zCn&FLT#M6QemIb;X&Re3xK13Lj%w)i#)qM9Pr+2#EEiG=@mPA|A0ek773+O0ooL4l ze;3ooB;ufuC@4g%mY`6kL_zqU! zgHr)`!6vsi;a4sF4%a_FxsLrcfVRFV%nE!PhcTI|O~hOwfbUkufHP-zS_Olf9VfCJ zz??1_66QsL?1*ak`);3bdDLjiL$~OEorn1W|9iW!4a)4YJ(e{<9kwY}7@{Ksx7fZg zufVOd&s`<5DuNE~3n%6;JKmotb%D{^;+jtMcbQpwpTbl9#Qk$@YvDO1Ii~vjVw?h@ zc4_{2w;_}ipMBxk4PnB(M~1#-E|Mwm_7rrNFh||Y!yG(8bNu}Oj`-10L}0CTZyh&4 z9NGLx23kjotVjrfHdkBId3YDUxaxd353Q@)yk~NIFUr@Q2Tq$=gmghK%XFgJeyIqB zBEOA=ZYlC1w8K@4=upLHf0a1;Cc3=<6F?MZMb#6JPfPJ=+HV!M>7C}{NmGjZ^3Sca zFRRE2f)H5fVkkhff)@e^!8~U_LupH$CB>w<0l>e_bLj34Z{U(CJ%3^YUQnc(dpXU* ziwHtA7>Gs8fVe@Y6hQ*3gYFFeQz(Md47xo7Lo~fzBiP~;>@GKA%zqJg5UEHFwC+QA z;b!{)567c@UZ(XJ9j?Aeb?c)>OLR$FV#XP^b@}<3DK&HgtH+z$(!7eThH&Bh0coQ1 zO)pu~ZSNUzFRS($c^9fka`_3mrSe_iRIztZBk8@UK1WJkF_Z)I2AQ*D=(*MOH@Hi NkeOvw-tuN&{};0AIbr|+ literal 0 HcmV?d00001 diff --git a/jsonformer/__pycache__/main.cpython-310.pyc b/jsonformer/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f935095146a50b5674cb107bf5d0ff999dca6491 GIT binary patch literal 5606 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 bool: decoded = self.tokenizer.decode(input_ids[0], skip_special_tokens=True) - if ".." in decoded: - print("Stopping because of ..") - return True - - if decoded.strip().count(".") > 1: - print("Stopping because of multiple .") + if decoded.count(".") > 1: return True if ( - decoded.strip().count(".") == 1 + decoded.count(".") == 1 and len(decoded.strip().split(".")[1]) > self.precision ): return True @@ -36,7 +27,9 @@ class NumberStoppingCriteria(StoppingCriteria): class OutputNumbersTokens(LogitsWarper): def __init__(self, tokenizer: PreTrainedTokenizer, prompt: str): - self.whitelist_tokens = [tokenizer.eos_token_id] + self.whitelist_tokens = [ + # tokenizer.eos_token_id + ] self.tokenized_prompt = tokenizer(prompt, return_tensors="pt") for token_str, token_id in tokenizer.get_vocab().items(): diff --git a/jsonformer/main.py b/jsonformer/main.py new file mode 100644 index 0000000..2bfd3f6 --- /dev/null +++ b/jsonformer/main.py @@ -0,0 +1,192 @@ +from typing import List, Union, Dict, Any + +from jsonformer.logits_processors import NumberStoppingCriteria, OutputNumbersTokens +from transformers import PreTrainedModel, PreTrainedTokenizer +import json + +GENERATION_MARKER = "|GENERATION|" + + +class Jsonformer: + value: Dict[str, Any] = {} + + def __init__( + self, + model: PreTrainedModel, + tokenizer: PreTrainedTokenizer, + json_schema: Dict[str, Any], + prompt: str, + debug: bool = False, + max_array_length: int = 10, + ): + self.model = model + self.tokenizer = tokenizer + self.json_schema = json_schema + self.prompt = prompt + + self.number_logit_processor = OutputNumbersTokens(self.tokenizer, self.prompt) + self.number_stop_criteria = NumberStoppingCriteria(self.tokenizer, 3) + + self.generation_marker = "|GENERATION|" + self.debug_on = debug + self.max_array_length = max_array_length + + def debug(self, *args, **kwargs): + if self.debug_on: + print(*args, **kwargs) + + def generate_number(self) -> float: + prompt = self.get_prompt() + self.debug("[generate_number] prompt", prompt) + response = self.model.generate( + self.tokenizer.encode(prompt, return_tensors="pt"), + max_new_tokens=6, + num_return_sequences=1, + logits_processor=[self.number_logit_processor], + stopping_criteria=[self.number_stop_criteria], + temperature=1.2, + pad_token_id=self.tokenizer.eos_token_id, + ) + response = self.tokenizer.decode(response[0], skip_special_tokens=True) + self.debug("[generate_number] response", response) + response = response[len(prompt) :] + response = response.strip().rstrip(".") + + try: + return float(response) + except ValueError: + print("ValueError") + return + + def generate_boolean(self) -> bool: + prompt = self.get_prompt() + self.debug("[generate_boolean] prompt", prompt) + + input_tensor = self.tokenizer.encode(prompt, return_tensors="pt") + output = self.model.forward(input_tensor) + logits = output.logits[0, -1] + + true_token_id = self.tokenizer.convert_tokens_to_ids("true") + false_token_id = self.tokenizer.convert_tokens_to_ids("false") + + true_logits = logits[true_token_id] + false_logits = logits[false_token_id] + + if true_logits > false_logits: + return True + elif false_logits > true_logits: + return False + else: + print("Failed to generate a valid boolean value") + return None + + def generate_string(self) -> str: + prompt = self.get_prompt() + self.debug("[generate_string] prompt", prompt) + response = self.model.generate( + self.tokenizer.encode(prompt, return_tensors="pt"), + max_new_tokens=8, + num_return_sequences=1, + temperature=1.3, + pad_token_id=self.tokenizer.eos_token_id, + ) + response = self.tokenizer.decode(response[0], skip_special_tokens=True) + + response = response[len(prompt) :].strip() + + self.debug("[generate_string] response", response) + split = response.split('"') + assert len(split) >= 2 + return split[1] + + def generate_object( + self, properties: Dict[str, Any], obj: Dict[str, Any] + ) -> Dict[str, Any]: + # self.debug("[generate_object] properties", properties) + for key, schema in properties.items(): + obj[key] = self.generate_value(schema, obj, key) + return obj + + def generate_value( + self, + schema: Dict[str, Any], + obj: Union[Dict[str, Any], List[Any]], + key: str | None = None, + ) -> Any: + schema_type = schema["type"] + if schema_type == "number": + obj[key if key else -1] = self.generation_marker + return self.generate_number() + elif schema_type == "boolean": + obj[key if key else -1] = self.generation_marker + return self.generate_boolean() + elif schema_type == "string": + obj[key if key else -1] = self.generation_marker + return self.generate_string() + elif schema_type == "array": + new_array = [] + obj[key] = new_array + return self.generate_array(schema["items"], new_array) + elif schema_type == "object": + new_obj = {} + obj[key if key else -1] = new_obj + return self.generate_object(schema["properties"], new_obj) + else: + raise ValueError(f"Unsupported schema type: {schema_type}") + + def generate_array(self, item_schema: Dict[str, Any], obj: Dict[str, Any]) -> list: + for i in range(self.max_array_length): + element = self.generate_value(item_schema, obj) + obj[-1] = element + + obj.append(self.generation_marker) + input_prompt = self.get_prompt() + obj.pop() + input_tensor = self.tokenizer.encode(input_prompt, return_tensors="pt") + output = self.model.forward(input_tensor) + logits = output.logits[0, -1] + + close_bracket_token_id = self.tokenizer.convert_tokens_to_ids("]") + comma_token_id = self.tokenizer.convert_tokens_to_ids(", ") + self.debug( + "[generate_array] token_ids", close_bracket_token_id, comma_token_id + ) + close_bracket_logits = logits[close_bracket_token_id] + comma_logits = logits[comma_token_id] + + self.debug( + "[generate_array] close_bracket_logits", + close_bracket_logits, + "comma_logits", + comma_logits, + ) + + if close_bracket_logits > comma_logits: + break + + return obj + + def get_prompt(self): + template = """{prompt}\nOutput result in the following JSON schema format:\n{schema}\nResult: {progress}""" + progress = json.dumps(self.value) + gen_marker_index = progress.find(f'"{self.generation_marker}"') + if gen_marker_index != -1: + progress = progress[:gen_marker_index] + else: + print("Failed to find generation marker") + + prompt = template.format( + prompt=self.prompt, + schema=json.dumps(self.json_schema), + progress=progress, + ) + + return prompt + + def __call__(self) -> Dict[str, Any]: + self.value = {} + + generated_data = self.generate_object( + self.json_schema["properties"], self.value + ) + return generated_data diff --git a/jsonllm/main.py b/jsonllm/main.py deleted file mode 100644 index 8aeedcf..0000000 --- a/jsonllm/main.py +++ /dev/null @@ -1,173 +0,0 @@ -import json -import random -from jsonllm.logits_processors import NumberStoppingCriteria, OutputNumbersTokens -from transformers import ( - PreTrainedTokenizer, - PreTrainedModel, - AutoModelForCausalLM, - AutoTokenizer, -) -from typing import Any, Dict - - -class JSONLLM: - value: Dict[str, Any] = {} - - def __init__( - self, - model: PreTrainedModel, - tokenizer: PreTrainedTokenizer, - json_schema: Dict[str, Any], - prompt: str, - ): - self.model = model - self.tokenizer = tokenizer - self.json_schema = json_schema - self.prompt = prompt - - self.number_logit_processor = OutputNumbersTokens(self.tokenizer, self.prompt) - self.number_stop_criteria = NumberStoppingCriteria(self.tokenizer) - - # def generate( - # self, text: str, max_length: int = 100, forced_bos_token_id: list | None = None - # ) -> str: - # # print prompt in red - # print("generate") - # print("\033[91m {}\033[00m".format(text)) - # input_ids = self.tokenizer.encode(text, return_tensors="pt") - # output = self.model.generate( - # input_ids, - # max_length=max_length, - # num_return_sequences=1, - # forced_bos_token_id=forced_bos_token_id, - # ) - # decoded_output = self.tokenizer.decode(output[0], skip_special_tokens=True) - # return decoded_output.strip() - - def generate_number(self, suffix="") -> float: - print("generate_number", suffix) - prompt = self.get_prompt() + suffix - - # print prompt in red - # number = model.generate( - # tokenizer.encode(prompt, return_tensors="pt"), - # max_new_tokens=5, - # num_return_sequences=1, - # logits_processor=[a], - # stopping_criteria=[NumberStoppingCriteria(tokenizer)], - # ) - - print("\033[91m {}\033[00m".format(prompt)) - response = self.model.generate( - self.tokenizer.encode(prompt, return_tensors="pt"), - max_new_tokens=5, - num_return_sequences=1, - logits_processor=[self.number_logit_processor], - stopping_criteria=[self.number_stop_criteria], - ) - - response = self.tokenizer.decode(response[0], skip_special_tokens=True) - - print("\033[94m {}\033[00m".format(response)) - try: - return float(response) - except ValueError: - print("ValueError") - return - - def generate_boolean(self, suffix="") -> bool: - prompt = self.get_prompt() - true_token_id = self.tokenizer.encode("true", add_special_tokens=False)[0] - false_token_id = self.tokenizer.encode("false", add_special_tokens=False)[0] - - response = self.generate( - prompt, forced_bos_token_id=[true_token_id, false_token_id] - ).lower() - - if response == "true": - return True - else: - return False - - def generate_array( - self, item_schema: Dict[str, Any], obj: Dict[str, Any], suffix="" - ) -> list: - array_length = random.randint(0, 5) - return [self.generate_value(item_schema, obj) for _ in range(array_length)] - - # add stopping criteria with " - def generate_string(self) -> str: - prompt = self.get_prompt() - response = self.generate(prompt) - return response - - def generate_object( - self, properties: Dict[str, Any], obj: Dict[str, Any], suffix="" - ) -> Dict[str, Any]: - print("generate_object", properties) - - for key, schema in properties.items(): - value = self.generate_value(schema, obj, suffix=f'"{key}": ') - - obj[key] = value - return obj - - def generate_value(self, schema: Dict[str, Any], obj: Dict[str, Any], suffix=""): - schema_type = schema["type"] - if schema_type == "number": - return self.generate_number(suffix=suffix) - elif schema_type == "boolean": - return self.generate_boolean(suffix=suffix) - elif schema_type == "array": - return self.generate_array(schema["items"], obj, suffix=suffix) - elif schema_type == "object": - return self.generate_object(schema["properties"], obj, suffix=suffix) - else: - raise ValueError(f"Unsupported schema type: {schema_type}") - - def get_prompt(self): - template = """{prompt}\nMake sure to output in the following format:\n{schema}\n {progress}""" - progress = json.dumps(self.value) - - progress = progress.rstrip("}").rstrip("]").rstrip(",") - - prompt = template.format( - prompt=self.prompt, - schema=json.dumps(self.json_schema), - progress=progress, - ) - - return prompt - - def __call__(self) -> Dict[str, Any]: - self.value = {} - generated_data = self.generate_object( - self.json_schema["properties"], self.value - ) - return generated_data - - -model_name = "EleutherAI/gpt-neo-1.3B" -model = AutoModelForCausalLM.from_pretrained( - model_name, -) -tokenizer = AutoTokenizer.from_pretrained(model_name) - -weather_schema = { - "type": "object", - "properties": { - "temperature": {"type": "number"}, - # "humidity": {"type": "number"}, - }, -} - - -jsonllm = JSONLLM( - model=model, - tokenizer=tokenizer, - json_schema=weather_schema, - prompt="Generate a weather object", -) - -output = jsonllm() -print(output) diff --git a/jsonllm/test.py b/jsonllm/test.py deleted file mode 100644 index 29d85b6..0000000 --- a/jsonllm/test.py +++ /dev/null @@ -1,27 +0,0 @@ -from jsonschema import validate - -simple_weather_schema = { - "type": "object", - "properties": { - "humidity": {"type": "number"}, - "temperatureC": { - "type": "object", - "properties": { - "value": {"type": "number"}, - "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, - }, - "required": ["value", "unit"], - }, - }, - "required": ["humidity", "temperature"], -} - -validate( - { - "humidity": 0.9, - "temperature": { - "value": 37, - }, - }, - simple_weather_schema, -) diff --git a/play.ipynb b/play.ipynb deleted file mode 100644 index 68ccac1..0000000 --- a/play.ipynb +++ /dev/null @@ -1,291 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 332, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "from transformers import (\n", - " AutoModelForCausalLM,\n", - " AutoTokenizer,\n", - ")\n", - "\n", - "\n", - "model_name = \"EleutherAI/gpt-neo-1.3B\"\n", - "model = AutoModelForCausalLM.from_pretrained(\n", - " model_name,\n", - ")\n", - "tokenizer = AutoTokenizer.from_pretrained(model_name)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 333, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[2579, 292, 7568]])\n", - " 28\n" - ] - } - ], - "source": [ - "to_tokenize = \" 28asdf\"\n", - "input_ids = tokenizer.encode(to_tokenize, return_tensors=\"pt\")\n", - "print(input_ids)\n", - "\n", - "to_decode = [2579]\n", - "print(tokenizer.decode(to_decode, skip_special_tokens=True))" - ] - }, - { - "cell_type": "code", - "execution_count": 334, - "metadata": {}, - "outputs": [], - "source": [ - "from transformers import (\n", - " PreTrainedTokenizer,\n", - " LogitsWarper,StoppingCriteria\n", - ")\n", - "\n", - "\n", - "# class NumberStoppingCriteria(StoppingCriteria):\n", - "# \"\"\"\n", - "# This class can be used to stop generation when there is a repeated decimal point in the generated text.\n", - "# \"\"\"\n", - "\n", - "# def __init__(self, tokenizer: PreTrainedTokenizer):\n", - "# self.tokenizer = tokenizer\n", - "\n", - "\n", - "# def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:\n", - "# decoded = self.tokenizer.decode(input_ids[0], skip_special_tokens=True)\n", - "# if \"..\" in decoded:\n", - "# return True\n", - " \n", - "# if ' ' in decoded.strip():\n", - "# return True\n", - " \n", - "# return False\n", - "\n", - "\n", - "class OutputNumbersTokens(LogitsWarper):\n", - " def __init__(self, tokenizer: PreTrainedTokenizer, prompt: str):\n", - " self.whitelist_tokens = [tokenizer.eos_token_id]\n", - " self.tokenized_prompt = tokenizer(prompt, return_tensors=\"pt\")\n", - "\n", - " for token_str, token_id in tokenizer.get_vocab().items():\n", - "\n", - " if (\n", - " token_str.startswith(\"Ġ\") and (\n", - " all(c.isdigit() or c == \".\" for c in token_str[1:]) and token_str.count(\".\") <= 1\n", - " ) or (\n", - " all(c.isdigit() or c == \".\" for c in token_str) and token_str.count(\".\") <= 1\n", - " )\n", - " ):\n", - " self.whitelist_tokens.append(token_id)\n", - "\n", - " def __call__(self, input_ids, scores):\n", - " input_ids = input_ids[:, len(self.tokenized_prompt[\"input_ids\"][0]):]\n", - " scores[\n", - " :, [i for i in range(len(scores[0])) if i not in self.whitelist_tokens]\n", - " ] = -float(\"inf\")\n", - " return scores\n", - "\n", - "a = OutputNumbersTokens(tokenizer, prompt)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 326, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "found space28 2579\n" - ] - } - ], - "source": [ - "\n", - "a = OutputNumbersTokens(tokenizer, prompt)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 331, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", - "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n", - "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", - "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 65 tensor(-3.7568)\n", - " 60 tensor(-3.8070)\n", - " 75 tensor(-3.9135)\n", - " 80 tensor(-4.0881)\n", - " 87 tensor(-4.1663)\n", - " 82 tensor(-4.2518)\n", - " 50 tensor(-4.2757)\n", - " 5 tensor(-4.3758)\n", - " 64 tensor(-4.3760)\n", - " 72 tensor(-4.4309)\n", - "tensor([[ 1820, 49890, 338, 2479, 287, 812, 318, 6135]])\n", - "my grandma's age in years is 65\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", - "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0 tensor(-3.4328)\n", - " 5 tensor(-4.0209)\n", - " 36 tensor(-4.2786)\n", - " 19 tensor(-4.4433)\n", - " 59 tensor(-4.5570)\n", - " 24 tensor(-4.7431)\n", - " 33 tensor(-4.7621)\n", - " 56 tensor(-4.7745)\n", - " 47 tensor(-4.8474)\n", - " 53 tensor(-4.8719)\n", - "tensor([[40838, 338, 5951, 287, 7370, 269, 1424, 318, 657]])\n", - "today's temperature in degrees cels is 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", - "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0 tensor(-5.0538)\n", - " 5 tensor(-6.4346)\n", - " 7 tensor(-7.2013)\n", - " 60 tensor(-7.4283)\n", - " 24 tensor(-7.6246)\n", - " 42 tensor(-7.6409)\n", - " 50 tensor(-7.6574)\n", - " 30 tensor(-7.6641)\n", - " 18 tensor(-7.7838)\n", - " 59 tensor(-7.8880)\n", - "tensor([[40838, 338, 5951, 287, 277, 318, 657]])\n", - "today's temperature in f is 0\n", - " 0 tensor(-1.6487)\n", - " 5 tensor(-3.0234)\n", - " 7 tensor(-4.6462)\n", - " 16 tensor(-5.9200)\n", - " 18 tensor(-6.3192)\n", - " 19 tensor(-6.6764)\n", - " 24 tensor(-6.7219)\n", - " 30 tensor(-7.0326)\n", - "2 tensor(-7.3029)\n", - " 50 tensor(-7.7194)\n", - "tensor([[ 16, 1343, 352, 796, 657]])\n", - "1 + 1 = 0\n" - ] - } - ], - "source": [ - "prompts = [\"my grandma's age in years is\", \"today's temperature in degrees cels is\", \"today's temperature in f is\", \n", - " \"1 + 1 =\"]\n", - "\n", - "for prompt in prompts:\n", - " number = model.generate(\n", - " tokenizer.encode(prompt, return_tensors=\"pt\"),\n", - " max_new_tokens=5,\n", - " num_return_sequences=1,\n", - " logits_processor=[a],\n", - " stopping_criteria=[NumberStoppingCriteria(tokenizer)],\n", - " ) \n", - "\n", - " print(number)\n", - "\n", - " decoded_output = tokenizer.decode(number[0], skip_special_tokens=True)\n", - "\n", - " print(decoded_output.strip())\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "jsonllm-4DT72Dd8-py3.10", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/poetry.lock b/poetry.lock index 2721198..3256e92 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "accelerate" @@ -1545,6 +1545,21 @@ files = [ [package.dependencies] mpmath = ">=0.19" +[[package]] +name = "termcolor" +version = "2.3.0" +description = "ANSI color formatting for output in terminal" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "termcolor-2.3.0-py3-none-any.whl", hash = "sha256:3afb05607b89aed0ffe25202399ee0867ad4d3cb4180d98aaf8eefa6a5f7d475"}, + {file = "termcolor-2.3.0.tar.gz", hash = "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + [[package]] name = "tokenizers" version = "0.13.3" @@ -1608,6 +1623,10 @@ category = "main" optional = false python-versions = ">=3.8.0" files = [ + {file = "torch-2.0.0-1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:c9090bda7d2eeeecd74f51b721420dbeb44f838d4536cc1b284e879417e3064a"}, + {file = "torch-2.0.0-1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:bd42db2a48a20574d2c33489e120e9f32789c4dc13c514b0c44272972d14a2d7"}, + {file = "torch-2.0.0-1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8969aa8375bcbc0c2993e7ede0a7f889df9515f18b9b548433f412affed478d9"}, + {file = "torch-2.0.0-1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ab2da16567cb55b67ae39e32d520d68ec736191d88ac79526ca5874754c32203"}, {file = "torch-2.0.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:7a9319a67294ef02459a19738bbfa8727bb5307b822dadd708bc2ccf6c901aca"}, {file = "torch-2.0.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:9f01fe1f6263f31bd04e1757946fd63ad531ae37f28bb2dbf66f5c826ee089f4"}, {file = "torch-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:527f4ae68df7b8301ee6b1158ca56350282ea633686537b30dbb5d7b4a52622a"}, @@ -1786,6 +1805,15 @@ category = "main" optional = false python-versions = "*" files = [ + {file = "triton-2.0.0-1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38806ee9663f4b0f7cd64790e96c579374089e58f49aac4a6608121aa55e2505"}, + {file = "triton-2.0.0-1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:226941c7b8595219ddef59a1fdb821e8c744289a132415ddd584facedeb475b1"}, + {file = "triton-2.0.0-1-cp36-cp36m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4c9fc8c89874bc48eb7e7b2107a9b8d2c0bf139778637be5bfccb09191685cfd"}, + {file = "triton-2.0.0-1-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d2684b6a60b9f174f447f36f933e9a45f31db96cb723723ecd2dcfd1c57b778b"}, + {file = "triton-2.0.0-1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9d4978298b74fcf59a75fe71e535c092b023088933b2f1df933ec32615e4beef"}, + {file = "triton-2.0.0-1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:74f118c12b437fb2ca25e1a04759173b517582fcf4c7be11913316c764213656"}, + {file = "triton-2.0.0-1-pp37-pypy37_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9618815a8da1d9157514f08f855d9e9ff92e329cd81c0305003eb9ec25cc5add"}, + {file = "triton-2.0.0-1-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1aca3303629cd3136375b82cb9921727f804e47ebee27b2677fef23005c3851a"}, + {file = "triton-2.0.0-1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e3e13aa8b527c9b642e3a9defcc0fbd8ffbe1c80d8ac8c15a01692478dc64d8a"}, {file = "triton-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f05a7e64e4ca0565535e3d5d3405d7e49f9d308505bb7773d21fb26a4c008c2"}, {file = "triton-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb4b99ca3c6844066e516658541d876c28a5f6e3a852286bbc97ad57134827fd"}, {file = "triton-2.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47b4d70dc92fb40af553b4460492c31dc7d3a114a979ffb7a5cdedb7eb546c08"}, @@ -1866,4 +1894,4 @@ test = ["pytest (>=6.0.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "0b4d90066aab259321542f8407d3cb8d907bcdbcd01301cf7b3c58e50f8d45d6" +content-hash = "b57850a2d5b4340321c5c7f0c5cfffd843b22d84e71c6c560743a761d91da612" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 0000000..ab1033b --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/pyproject.toml b/pyproject.toml index 191a53f..c680ed3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [tool.poetry] -name = "jsonllm" +name = "jsonformer" version = "0.1.0" description = "" -authors = ["rahulgs12 "] +authors = ["1rgs "] readme = "README.md" [tool.poetry.dependencies] @@ -12,6 +12,7 @@ jsonschema = "^4.17.3" torch = "^2.0.0" accelerate = "^0.18.0" bitsandbytes = "^0.38.1" +termcolor = "^2.3.0" [tool.poetry.group.dev.dependencies] @@ -20,3 +21,7 @@ ipykernel = "^6.22.0" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" + +[virtualenvs] +create = true +in-project = true \ No newline at end of file diff --git a/readme.md b/readme.md index ae314aa..5b2078d 100644 --- a/readme.md +++ b/readme.md @@ -1 +1,74 @@ -# jsonllm +# Jsonformer: A Bulletproof Way to Generate Structured JSON from Language Models. + +## Problem: Getting models to output structed JSON is hard + +## Solution: Only generate the content tokens and fill in the fixed tokens + +![cover](img/cover3.png) + +Generating structured JSON from language models is a challenging task. The +generated JSON must be syntactically correct, and it must conform to a schema +that specifies the structure of the JSON. + +Current approaches to this problem are brittle and error-prone. They rely on prompt engineering, fine-tuning, and post-processing, but they still fail to generate syntactically correct JSON in many cases. + +## Example + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +model = AutoModelForCausalLM.from_pretrained("databricks/dolly-v2-12b") +tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-12b") + +schema = { + "type": "object", + "properties": { + "name": {"type": "string"}, + "age": {"type": "number"}, + "is_student": {"type": "boolean"}, + "courses": { + "type": "array", + "items": {"type": "string"} + } + } +} + +prompt = "Generate a person's information based on the following schema:" +jsonformer = Jsonformer(model, tokenizer, json_schema, prompt) +generated_data = jsonformer() + +print(generated_data) +``` + +Jsonformer is a new approach to this problem. In structured data, many tokens are fixed and predictable. Jsonformer is a wrapper around HuggingFace models that fills in the fixed tokens during the generation process, and only delegates the generation of content tokens to the language model. This makes it more efficient and bulletproof than existing approaches. + +This currently supports a subset of JSON Schema. Below is a list of the supported schema types: + +- number +- boolean +- string +- array +- object + +## Features + +- Bulletproof JSON generation: Jsonformer ensures that the generated JSON is always syntactically correct and conforms to the specified schema. +- Efficiency: By generating only the content tokens and filling in the fixed tokens, Jsonformer is more efficient than generating a full JSON string and parsing it. +- Flexible and extendable: Jsonformer is built on top of the HuggingFace transformers library, making it compatible with any model that supports the HuggingFace interface. + +## Usage + +To use Jsonformer, you need to provide a language model, a tokenizer, a JSON schema, and a prompt. Optionally, you can enable debugging, and set the maximum array length for generated arrays. + +```python +from transformers import PreTrainedModel, PreTrainedTokenizer +from typing import Dict, Any +from jsonformer import Jsonformer + +jsonformer = Jsonformer(model, tokenizer, json_schema, prompt, debug=True, max_array_length=10) +generated_data = jsonformer() +``` + +## License + +Jsonformer is released under the MIT License. You are free to use, modify, and distribute this software for any purpose, commercial or non-commercial, as long as the original copyright and license notice are included. diff --git a/t.ipynb b/t.ipynb deleted file mode 100644 index 75780dc..0000000 --- a/t.ipynb +++ /dev/null @@ -1,258 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import random\n", - "from transformers import (\n", - " PreTrainedTokenizer,\n", - " PreTrainedModel,\n", - " AutoModelForCausalLM,\n", - " AutoTokenizer,\n", - ")\n", - "from typing import Any, Dict\n", - "\n", - "\n", - "\n", - "model_name = \"databricks/dolly-v2-3b\"\n", - "model = AutoModelForCausalLM.from_pretrained(\n", - " model_name,\n", - ")\n", - "tokenizer = AutoTokenizer.from_pretrained(model_name)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from jsonllm.logits_processors import NumberStoppingCriteria, OutputNumbersTokens\n", - "\n", - "NumberStoppingCriteria(tokenizer, 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "class JSONLLM:\n", - " value: Dict[str, Any] = {}\n", - "\n", - " def __init__(\n", - " self,\n", - " model: PreTrainedModel,\n", - " tokenizer: PreTrainedTokenizer,\n", - " json_schema: Dict[str, Any],\n", - " prompt: str,\n", - " ):\n", - " self.model = model\n", - " self.tokenizer = tokenizer\n", - " self.json_schema = json_schema\n", - " self.prompt = prompt\n", - "\n", - " self.number_logit_processor = OutputNumbersTokens(self.tokenizer, self.prompt)\n", - " self.number_stop_criteria = NumberStoppingCriteria(self.tokenizer, 3)\n", - "\n", - "\n", - "\n", - " def generate_number(self, suffix=\"\") -> float:\n", - " print(\"generate_number\", suffix)\n", - " prompt = self.get_prompt() + suffix\n", - "\n", - " print(\"\\033[91m {}\\033[00m\".format(prompt))\n", - " response = self.model.generate(\n", - " self.tokenizer.encode(prompt, return_tensors=\"pt\"),\n", - " max_new_tokens=6,\n", - " num_return_sequences=1,\n", - " logits_processor=[self.number_logit_processor],\n", - " stopping_criteria=[self.number_stop_criteria],\n", - " temperature=1.5,\n", - " pad_token_id=tokenizer.eos_token_id\n", - " )\n", - "\n", - " response = self.tokenizer.decode(response[0], skip_special_tokens=True)\n", - " print(\"response is\")\n", - " print(\"\\033[94m {}\\033[00m\".format(response))\n", - " response = response.strip().rstrip(\".\").lstrip(\"0\")\n", - " try:\n", - " return float(response)\n", - " except ValueError:\n", - " print(\"ValueError\")\n", - " return \n", - "\n", - " def generate_boolean(self, suffix=\"\") -> bool:\n", - " prompt = self.get_prompt()\n", - " true_token_id = self.tokenizer.encode(\"true\", add_special_tokens=False)[0]\n", - " false_token_id = self.tokenizer.encode(\"false\", add_special_tokens=False)[0]\n", - "\n", - " response = self.generate(\n", - " prompt, forced_bos_token_id=[true_token_id, false_token_id]\n", - " ).lower()\n", - "\n", - " if response == \"true\":\n", - " return True\n", - " else:\n", - " return False\n", - "\n", - " def generate_array(\n", - " self, item_schema: Dict[str, Any], obj: Dict[str, Any], suffix=\"\"\n", - " ) -> list:\n", - " array_length = random.randint(0, 5)\n", - " return [self.generate_value(item_schema, obj) for _ in range(array_length)]\n", - "\n", - " # add stopping criteria with \"\n", - " def generate_string(self) -> str:\n", - " prompt = self.get_prompt()\n", - " response = self.generate(prompt)\n", - " return response\n", - "\n", - " def generate_object(\n", - " self, properties: Dict[str, Any], obj: Dict[str, Any], suffix=\"\"\n", - " ) -> Dict[str, Any]:\n", - " print(\"generate_object\", properties)\n", - "\n", - " for key, schema in properties.items():\n", - " value = self.generate_value(schema, obj, suffix=f'\"{key}\": ')\n", - "\n", - " obj[key] = value\n", - " return obj\n", - "\n", - " def generate_value(self, schema: Dict[str, Any], obj: Dict[str, Any], suffix=\"\"):\n", - " schema_type = schema[\"type\"]\n", - " if schema_type == \"number\":\n", - " return self.generate_number(suffix=suffix)\n", - " elif schema_type == \"boolean\":\n", - " return self.generate_boolean(suffix=suffix)\n", - " elif schema_type == \"array\":\n", - " return self.generate_array(schema[\"items\"], obj, suffix=suffix)\n", - " elif schema_type == \"object\":\n", - " return self.generate_object(schema[\"properties\"], obj, suffix=suffix)\n", - " else:\n", - " raise ValueError(f\"Unsupported schema type: {schema_type}\")\n", - "\n", - " def get_prompt(self):\n", - " template = \"\"\"{prompt}\\nMake sure to output in the following format:\\n{schema}\\n Result: {progress}\"\"\"\n", - " progress = json.dumps(self.value)\n", - "\n", - " progress = progress.rstrip(\"}\").rstrip(\"]\").rstrip(\",\")\n", - "\n", - " prompt = template.format(\n", - " prompt=self.prompt,\n", - " schema=json.dumps(self.json_schema),\n", - " progress=progress,\n", - " )\n", - "\n", - " return prompt\n", - "\n", - " def __call__(self) -> Dict[str, Any]:\n", - " self.value = {}\n", - " generated_data = self.generate_object(\n", - " self.json_schema[\"properties\"], self.value\n", - " )\n", - " return generated_data\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "generate_object {'temperature': {'type': 'number'}}\n", - "generate_number \"temperature\": \n", - "\u001b[91m Generate a weather object\n", - "Make sure to output in the following format:\n", - "{\"type\": \"object\", \"properties\": {\"temperature\": {\"type\": \"number\"}}}\n", - " Result: {\"temperature\": \u001b[00m\n", - "Stopping because of multiple .\n", - "response is\n", - "\u001b[94m Generate a weather object\n", - "Make sure to output in the following format:\n", - "{\"type\": \"object\", \"properties\": {\"temperature\": {\"type\": \"number\"}}}\n", - " Result: {\"temperature\": 000000000.0.\u001b[00m\n", - "ValueError\n", - "{'temperature': None}\n" - ] - } - ], - "source": [ - "weather_schema = {\n", - " \"type\": \"object\",\n", - " \"properties\": {\n", - " \"temperature\": {\"type\": \"number\"},\n", - " # \"humidity\": {\"type\": \"number\"},\n", - " },\n", - "}\n", - "\n", - "\n", - "jsonllm = JSONLLM(\n", - " model=model,\n", - " tokenizer=tokenizer,\n", - " json_schema=weather_schema,\n", - " prompt=\"Generate a weather object\",\n", - ")\n", - "\n", - "output = jsonllm()\n", - "print(output)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "jsonllm-4DT72Dd8-py3.10", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -}