guidance
clownfish
guidance | clownfish | |
---|---|---|
23 | 11 | |
17,357 | 302 | |
2.7% | - | |
9.8 | 4.3 | |
6 days ago | 12 months ago | |
Jupyter Notebook | Python | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
guidance
-
Anthropic's Haiku Beats GPT-4 Turbo in Tool Use
[1]: https://github.com/guidance-ai/guidance/tree/main
-
Show HN: Prompts as (WASM) Programs
> The most obvious usage of this is forcing a model to output valid JSON
Isn't this something that Outlines [0], Guidance [1] and others [2] already solve much more elegantly?
0. https://github.com/outlines-dev/outlines
1. https://github.com/guidance-ai/guidance
2. https://github.com/sgl-project/sglang
- Show HN: Fructose, LLM calls as strongly typed functions
-
LiteLlama-460M-1T has 460M parameters trained with 1T tokens
Or combine it with something like llama.cpp's grammer or microsoft's guidance-ai[0] (which I prefer) which would allow adding some react-style prompting and external tools. As others have mentioned, instruct tuning would help too.
[0] https://github.com/guidance-ai/guidance
- Forcing AI to Follow a Specific Answer Pattern Using GBNF Grammar
-
Prompting LLMs to constrain output
have been experimenting with guidance and lmql. a bit too early to give any well formed opinions but really do like the idea of constraining llm output.
- Guidance is back 🥳
- New: LangChain templates – fastest way to build a production-ready LLM app
-
Is supervised learning dead for computer vision?
Thanks for your comment.
I did not know about "Betteridge's law of headlines", quite interesting. Thanks for sharing :)
You raise some interesting points.
1) Safety: It is true that LVMs and LLMs have unknown biases and could potentially create unsafe content. However, this is not necessarily unique to them, for example, Google had the same problem with their supervised learning model https://www.theverge.com/2018/1/12/16882408/google-racist-go.... It all depends on the original data. I believe we need systems on top of our models to ensure safety. It is also possible to restrict the output domain of our models (https://github.com/guidance-ai/guidance). Instead of allowing our LVMs to output any words, we could restrict it to only being able to answer "red, green, blue..." when giving the color of a car.
2) Cost: You are right right now LVMs are quite expensive to run. As you said are a great way to go to market faster but they cannot run on low-cost hardware for the moment. However, they could help with training those smaller models. Indeed, with see in the NLP domain that a lot of smaller models are trained on data created with GPT models. You can still distill the knowledge of your LVMs into a custom smaller model that can run on embedded devices. The advantage is that you can use your LVMs to generate data when it is scarce and use it as a fallback when your smaller device is uncertain of the answer.
3) Labelling data: I don't think labeling data is necessarily cheap. First, you have to collect the data, depending on the frequency of your events could take months of monitoring if you want to build a large-scale dataset. Lastly, not all labeling is necessarily cheap. I worked at a semiconductor company and labeled data was scarce as it required expert knowledge and could only be done by experienced employees. Indeed not all labelling can be done externally.
However, both approaches are indeed complementary and I think systems that will work the best will rely on both.
Thanks again for the thought-provoking discussion. I hope this answer some of the concerns you raised
-
Show HN: Elelem – TypeScript LLMs with tracing, retries, and type safety
I've had a bit of trouble getting function calling to work with cases that aren't just extracting some data from the input. The format is correct but it was harder to get the correct data if it wasn't a simple extraction.
Hopefully OpenAI and others will offer something like https://github.com/guidance-ai/guidance at some point to guarantee overall output structure.
Failed validations will retry, but from what I've seen JSONSchema + generated JSON examples are decently reliable in practice for gpt-3.5-turbo and extremely reliable on gpt-4.
clownfish
-
Show HN: LLMs can generate valid JSON 100% of the time
I'm not sure how this is different than:
https://github.com/1rgs/jsonformer
or
https://github.com/newhouseb/clownfish
or
https://github.com/mkuchnik/relm
or
https://github.com/ggerganov/llama.cpp/pull/1773
or
https://github.com/Shopify/torch-grammar
Overall there are a ton of these logit based guidance systems, the reason they don't get tons of traction is the SOTA models are behind REST APIs that don't enable this fine-grained approach.
Those models perform so much better that people generally settle for just re-requesting until they get the correct format (and with GPT-4 that ends up being a fairly rare occurrence in my experience)
- OpenAI Function calling and API updates
-
Adding GPT to a web app. The real experience.
I can see some specific problems there, like malformed json (or json not matching intended schema being generated). Approaches like https://github.com/1rgs/jsonformer and https://github.com/newhouseb/clownfish could be interesting there, as well as approaches to validate outputs like https://medium.com/@markherhold/validating-json-patch-requests-44ca5981a7fc (references jsonpatch which could be interesting as well, but the approach is somewhat agnostic to how the changes actually get applied while still allowing you to enforce structure around what changes and how).
-
When you lose the ability to write, you also lose some of your ability to think
https://github.com/newhouseb/clownfish
Structural Alignment: Modifying Transformers (like GPT) to Follow a JSON Schema
- Clownfish: Constrained Decoding for LLMs Against JSON Schema
-
Jsonformer: A bulletproof way to generate structured output from LLMs
Oh nice! I built a similar system a few weeks ago: https://github.com/newhouseb/clownfish
I think the main differentiating factor here is that this is better if you have a simpler JSON schema without enums or oneOf constraints. If you do have these constraints, i.e. let's say you wanted an array of different types that represented a items on a menu { kind: pizza, toppings: [pepperoni] } or { kind: ice_cream, flavor: vanilla | strawberry } then you would need something more sophisticated like clownfish that can ask the LLM to pick specific properties.
-
Prompt injection: what’s the worst that can happen?
And on the other end, there's https://github.com/newhouseb/clownfish to force the model to produce structured output.
-
Teaching ChatGPT to Speak My Son’s Invented Language
It doesn't help with repetition, but when it comes to force structure on the output data, this approach looks interesting:
https://github.com/newhouseb/clownfish
TL;DR: it exploits the fact that the model returns probabilities for all the possible following tokens to enforce a JSON schema on the output as it is produced, backtracking as needed.
- Structural Alignment: Modifying Transformers (Like GPT) to Follow a JSON Schema
- Structural Alignment of LLMs with ControLogits
What are some alternatives?
lmql - A language for constraint-guided and efficient LLM programming.
jsonformer - A Bulletproof Way to Generate Structured JSON from Language Models
semantic-kernel - Integrate cutting-edge LLM technology quickly and easily into your apps
langchain - 🦜🔗 Build context-aware reasoning applications
outlines - Structured Text Generation
NeMo-Guardrails - NeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems.
evals - Evals is a framework for evaluating LLMs and LLM systems, and an open-source registry of benchmarks.
text-generation-webui - A Gradio web UI for Large Language Models. Supports transformers, GPTQ, AWQ, EXL2, llama.cpp (GGUF), Llama models.
ChatGPT_DAN - ChatGPT DAN, Jailbreaks prompt
kodumisto - GitHub Issue as ChatGPT Prompt; ChatGPT's Response as a Pull Request