Show HN: LLMs can generate valid JSON 100% of the time Outlines is a Python library that focuses on text generation with large language models. Brandon and I are not LLM experts and started the project a few months ago because we wanted to understand better how the generation process works. Our original background is probabilistic, relational and symbolic programming. Recently we came up with a fast way to generate text that matches a regex ( https://ift.tt/qQKtZlL... ). The basic idea is simple: regular expressions have an equivalent Deterministic-Finite Automaton (DFA) representation. We can transform this DFA into a generative model: in each state we get a list of symbols which correspond to completions that partially match the regular expression. We mask the other symbols in the logits returned by a large language model, sample a new symbol and move to the next state. The subtelty is that language models work with tokens, not symbols, so we derive a new FSM whose alphabet is the model's vocabulary. We can do this in only one pass over the vocabulary. Generating the token masks thus only requires a dictionary lookup at each state. Our method blows other libraries like Microsoft's guidance out of the water. From there it was only a small leap to be able to generate text that follows a JSON schema ( https://ift.tt/i3qZpeO ), or is parseable into a Pydantic model ( https://ift.tt/ExNciWs ). The method works with union types, optional types, nested schemas, arrays, everything. It is guaranteed that the output is parseable. I think it's cool, and I've spent a lot of time watching even tiny models output valid JSON over the weekend. Hope you will too. I look forward to feedback, bug reports, feature requests and discussions! Edit: Link to our pre-print explaining the method and how this can be extended to generate text that follows a Context-Free Grammar https://ift.tt/ZdmslqH https://ift.tt/SyBvN7P August 15, 2023 at 12:22AM
Show HN: LLMs can generate valid JSON 100% of the time https://ift.tt/FS6jJcd
Related Articles
Show HN: Search and Explore Medical Terminologies https://ift.tt/QYbPwnNShow HN: Search and Explore Medical Terminologies https://ift.tt/OZySq… Read More
Show HN: MOS, an application to help you deploy mathematical optimization models https://ift.tt/XgmqC2tShow HN: MOS, an application to help you deploy mathematical optimizat… Read More
Show HN: Render dancing videos from hand-drawn anime characters https://ift.tt/7vzb1ltShow HN: Render dancing videos from hand-drawn anime characters https:… Read More
Show HN: Rocket Drone, a lunar lander type game for the web https://ift.tt/p0MkiuyShow HN: Rocket Drone, a lunar lander type game for the web https://if… Read More
Show HN: We Built Vercel for Data Engineers https://ift.tt/tsOjFipShow HN: We Built Vercel for Data Engineers Hi HN. Today we released D… Read More
Show HN: Turn an Old Nvidia Shield TV into a Ubuntu Linux Box https://ift.tt/Ddo5wRuShow HN: Turn an Old Nvidia Shield TV into a Ubuntu Linux Box https://… Read More
Show HN: Unblob – accurate and fast extraction suite for 30+ formats https://ift.tt/BtbX8PjShow HN: Unblob – accurate and fast extraction suite for 30+ formats h… Read More
Show HN: I created a bedtime story for my son using GPT-3 and DALL-E https://ift.tt/519p7WiShow HN: I created a bedtime story for my son using GPT-3 and DALL-E h… Read More
0 Comments: