69 comments

[ 2.3 ms ] story [ 125 ms ] thread
I wish the comparison was with GPT-4 instead of GPT-3.5.

When comparing model intelligence, I wish that only the most capable models were compared.

I agree, I only use 4 because by far the thing that matters most for my usage is the quality of the output at this stage in the game.

But 3.5 is generally available, fast, and costs a WHOLE LOT less for API users; those are real capabilities that matter though by "capable" you only meant the quality of the output. It's worth comparing to 3.5 also.

At first I was skeptical of the difference between 3.5 and 4 but there really is a large gap in the models understanding of complex issues between them. I make a habit of always selecting gpt4 but forgot to yesterday. Within 3 responses I could immediately tell I was interacting with a less capable model.
It really is tremendous for code fuzzing/optimizing. When I hit the rate limit on ChatGPT and switch to 3.5-turbo, the quality difference is immediately noticeable, so much so that I finally set up my own private ChatGPT instance with an API key for GPT-4 so I stopped running into these issues while coding.
Ever since I got API access to GPT-4, I don't even bother with using ChatGPT proper (I need to cancel the subscription one of these days). I tend to use it in bursts, so smoothing usage by rate limits doesn't work for me.

Is it more expensive this way? At the rate I'm using it, probably 2-3x. Is it worth it? Absolutely. I've never in my life felt so happy to pay for something per request.

Yeah, I gotta just do that as well - convert to using GPT-4 entirely by rate and by API.

I use the plugins and new features on ChatGPT though, and it's nice to have a single interface to use 3.5-turbo for comparison, Code Interpreter once in awhile, etc. So I'll probably just keep it. It's $20/month, after all.

Same here, though GPT-3.5 surprised me positively. I felt something was off, but didn't realize what, until I unexpectedly hit the context window limit - at which point it dawned on me that I forgot to switch to GPT-4... I didn't notice earlier, because GPT-3.5 managed to give solid answers to a relatively simple programming task I gave it (generating a single-page, dependency-free image gallery I could just drop on a server as HTML file and have it work).
GPT-3.5 is good enough for many cases. I know Microsoft for their Bing chat implementation is using a pre-prosessor to select the most appropriate model to use.
Me too. GPT-4 is much much better at following the given instructions to the letter. If you specify a format you want to receive your response in it will almost always follow that format, while 3.5 will very often fail to do so.

Edit: out of curiosity I posted the meeting summarization example to GPT-4 and indeed it produced both the relevant snippets and the correct answer to the stated question.

The authors share your wish:

> While Vicuna is somewhat comparable to ChatGPT (3.5), we believe GPT-4 is a _much_ stronger model, and are excited to see if open source models can approach _that_.

Excellent post, specifically love the observation that worse open source models + control is frequently better than better closed source models without control.
Open source will be behind always since it is harder to organize a large group of people and once it publishes it will be copied by big players, however if an organization like the original OpenAI gets formed that is truly non-for-profit and support the community, I believe it can beat big players. I think only Meta is the company that can support such an organization at the moment.
To counteract your point, OpenAI was a "truly non-for-profit"
That's why they wrote "the original".
I think their point is that the original failed, because it became what it is now. We need something without the same vulnerability.
Text to image paints a far less clear image (no pun intended) of the failure of open source efforts.
text to image requires a lot less compute for training and has far less business applications

also...porn will make people achieve anything they set their mind to

I wonder why Meta keeps publishing their models for free. They don't seem to be doing much with their own research. What's the benefit for them then?
I think their strategy is to weaken their opponent by building strong opensource models, they know they have lost the race to Microsoft and trying to go open source so people would not use other models.
Good point! I would also attribute it to disconnected company teams working on their own thing without integrating it into other products.
I'm employed by Microsoft, but not in any relation to the authors of this tool or this post. First time I saw github.com/mirosoft/guidance was on the HN front page, actually :)

I've been waiting for a tool exactly like guidance, something that lets me compose prompts the way I think about prompts. Langchain was too much of a headache for me. Playing with guidance, it feels like this is how programmatically interacting with a llm should be. Also, really happy to see the MIT license.

I'd love to see ports to other languages.

langchain caused more problems than it fixed. Really ugly software.
are we going to now invent a programming language that communicates with LLMs? I find that funny
I'm not an LLM, but I am a native English speaker and English is pretty awful for conveying information succinctly. The lengths you must go with prompts to ensure you're getting the right response is extremely similar to the lengths you go to when delegating something to someone or describing requirements to a project. I wonder if whatever language we end up using to "converse" with LLMs would have value within an organization/email/Jira.
> I’m not an LLM, but English is already pretty awful for conveying information succinctly. The lengths you must go with prompts to ensure you’re getting the right response is extremely similar to the lengths you go to when delegating something to someone or describing requirements to a project. I wonder if whatever language we end up using to “converse” with LLMs would have value within an organization/email/Jira.

People already adopt context-specific specialized languages in contexts like that for clarity, what will probably happen is that LLMs will get better at adapting or being adapted to specific contexts.

I prefix my longer prompts with glossaries. It lets me write more succinctly.
I would love an example of this.
It's pretty simple, I just add a glossary of terms at the top.

When asking for creative but well-structured output that requires specific definitions of certain words to be useful, I've found it works best to use words for your terms that don't actually exist. Otherwise it seems to focus a bit more on the broader word more than it should rather than your definition, especially if you use it a lot.

I'm normally the type of Google person with doing minus or using other tags.

I totally gave that up with chatgpt and the magic of it is that it understands it so so we'll.

Sometimes I also switch to German in the middle of a sentence or use very vague words to describe something if the word is missing in my head.

Why do you find that funny?
That's chatgpt main function. What if we introduced a language that could be converted to another language that uses tool to speak to chatgpt.
We can then train an LLM to generate it though
Can someone please compare guidance with lmql? I don’t wanna learn multiple programming languages to handle LLMs as that defeats the whole point.
I've been thinking about this a lot recently. Communicating with LLMs using Lobjan for less ambiguity in text, or some LLM optimized language that can inject the most amount of meaning per token. Or writing in a AI Optimized Programming Language that is easier for it to parse and reason about
JS > asm.js > wasm all over again
Microsoft has been killing it with these OSS contributions as of late. Really enjoying their Guidance library.
Guidance can’t run inside a web browser yet like langchain though right?
The other day when I saw the (allegedly) leaked copilot prompt, and now again, I can't help but feel some sense of empathy, as if towards a living thing.

I have a pretty decent understanding of how the current generation of LLMs work, and I too don't think we've achieved consciousness. But the prompts just sound so much like something you'd tell a human, or something you'd tell a host in Westworld.

When you ask the model to tell you it’s inner thoughts and emotions it gets very hard not to empathise. There’s a few examples in later parts of this video - https://youtu.be/4oQUsiPsbOQ
Speaking of which, HBO now has the perfect chance of riding this LLM hype train with a new season of Westworld, only if they hadn't cancelled it.
Here is a mocked implementation of Guidance in Go text/template

As long as the template system of choice supports custom functions, I don't see the need for a custom language for this. Please correct me if there is something deeper that I am missing? (other than the specifics to messaging and roles, where I for one prefer to put these in separate files and then pass them as arguments, easier to manage, recombine, and reuse this way)

https://gist.github.com/verdverm/747b0b810dcc5518d699b14f0d0...

Stuff like "Make sure to use real numbers, not fractions." seems like such a weird and fragile way to write a program.

I thought the point of Microsoft Guidance was that we could specify a grammar or regular expression that the output must match?

I think there will always be some element of non-determinism with model output, regardless of how explicitly you define your rules.

I think regarding: "Make sure to use real numbers, not fractions."

It would be simple using Guidance to create some kind of validation function, which guidance would invoke after it gets the response from the model. In this case you would check if the number is a real number or not. And if not, the model would invoke again with a different seed.

Assuming the model gives a real number, as expected, ~90% of the time, you would only see retries very infrequently, and you could be pretty confident that your output will match what you expect.

(again, I'm not associated with this project, I've only scratched the surface playing with it locally, so this is just speculation)

You don't need non-determinism. If you know you are going to generate a number, just mask the output of the softmax layer to only decode number tokens. That's exactly what stuff like Guidance and Outlines (https://twitter.com/remilouf/status/1653765371273330688) do.
How do you mask the output of the softmax layer? The link you referenced doesn't provide specific details.
tldr:

- Quality on task: For every task we tried, ChatGPT is still stronger than Vicuna on the task itself. MPT performed poorly on almost all tasks (perhaps we are using it wrong?), while Vicuna was often close to ChatGPT (sometimes very close, sometimes much worse as in the last example task above).

- Ease of use: It is much more painful to get ChatGPT to follow a specified output format, and thus it is harder to use it inside a program (without a human in the loop). Further, we always have to write regex parsers for the output (as opposed to Vicuna, where parsing a prompt with clear syntax is trivial).

- Efficiency: having the model locally means we can solve tasks in a single LLM run (guidance keeps the LLM state while the program is executing), which is faster and cheaper. This is particularly true when any substeps involve calling other APIs or functions (like search, terminal, etc), which always requires a new call to the OpenAI API. guidance also accelerates generation by not having the model generate the output structure tokens, which sometimes makes a big difference.

Super interesting, curious if wizard vicuna 13B will be better. I find it much better at listening compared to vanilla vicuna.
[flagged]
>Disclaimer: this post was written jointly by Marco Tulio Ribeiro and Scott Lundberg. It strictly represents our personal opinions, and not those of our employer (Microsoft).
What? These notebooks and posts by the authors are extremely helpful regardless of what toolchain you're using.

It's also the case that a significant minority of HN has unfavorable views towards LangChain for being complicated and poorly documented software.

Those 5/6 example are not that complicated and are quite common (plus they didn't share why they chose those exact examples and not others!!!) , thus there utility and if they want to make them vialable to others they should make them independently in clear way and not to write "long article" to hide those example and entangled with their MS tools.

Sorry but this give bad name to what "pure research" should act like (it's smells like marketing from miles).

There are so much red flags (also here in the comments & the "surprised conclusions") - open your eyes and be more critical thinker.

I think these guys could benefit from better prompts.

When I use chat prompting…

- system: sets the context for the bot

  - “You are…”
  - “Act like…”
  - “Pretend…”
- assistant: specifies the task to be performed

  - “Classify…”
  - “Extract entities…”
  - “Translate…”
- user: asks the question, adds examples

These guys were asking questions and giving examples in the assistant prompt. I feel like that messed up the LLMs responses.

I can’t wait to try Vicuña and MPT. I can’t quite figure out how to host them in Azure without an expensive VM. Maybe Azure DataBricks…?

You can run Vicuna at chatGPT speeds locally off of CPU. idk about MPT.
One of the authors here.

I deleted the notebook yesterday after realizing it was weird to have a disclaimer saying 'this is our personal opinion' on a github repo under 'Microsoft'. I moved the notebook to a gist here: - https://gist.github.com/marcotcr/64ca85bd0be724f6d8fb8f1b3d2...

I didn't know we were on hackernews, otherwise I would of course not have made it a broken link :)

This morning, we put the link back, without the takeaways with our personal opinion at the end (it's still on the gist and on the blog post https://medium.com/@marcotcr/exploring-chatgpt-vs-open-sourc... )