In the end, it sometimes requires extensive testing as things are wrong in subtle ways, but the same goes for the code I write myself too. I'm happy to just get further than have been possible for the last ~20 years I've tried to do it on my own.
Ultimately, I want to finish games and sell them, so for me this is a "business problem", but I could totally understand that for others it isn't.
My point is - learning with GPT at this point sounds like setting yourself up for failure - you won't know when it's bullshiting you and you're missing out on learning how to actually learn.
By the time LLMs are reliable enough to teach you, whatever you're learning is probably irrelevant since it can be solved better by LLM.
Sounds like you need to not be condescending :)
Of course I've searched and tried countless of avenues to pick up this, I'm not saying it's absolutely not possible without GPT, just that I found it the easiest way of learning.
And it's not "Write a function that does X" but more employing the Socratic method to help me further understand a subject, that I can then dive deeper into myself.
But having a rubber duck is infinitive worth, if you happen to a programmer, you probably can see the value in this.
> have you tried using it in an area you're an expert in ? The rate of convincing bullshit vs correct answers is astonishing. It gets better with Phind/Bing but then it's a roulette that it will hit valid answers in the index fast enough.
Yes, programming is my expertise, and I use it daily for programming and it's doing fine for me (GPT4 that is, GPT3.5 and models before are basically trash).
Bing is probably one of the worst implementations of GPT I've seen in the wild, so it seems like our experience already differs quite a bit.
> you won't know when it's bullshiting you and you're missing out on learning how to actually learn.
Yeah, you can tell relatively easy if it's bullshitting and making things up, if you're paying any sort of attention to what it tells you.
> By the time LLMs are reliable enough to teach you, whatever you're learning is probably irrelevant since it can be solved better by LLM.
Disagree, I'm not learning in order to generate more money for myself or whatever, I'm learning because the process of learning is fun, and I want to be able to build games myself. A LLM will never be able to replace that, as part of the fun is that I'm the one doing it.
It feels a bit like pair programming with someone who knows 90% of the documentation for an older version of a relevant library - definitely more helpful than me by myself, and with somewhat less communication overhead that actually pairing with a human.
It's trained on generating the most likely completion to some text, it's not at all easy to tell if it's bullshitting you if you're a newbie.
Agreed that I was condescending and dismissive in my reply, been dealing with people trying to use ChatGPT to get free lunch without understanding the problem recently so I just assume at this point, my bad.
I don't think many people (at least not myself and others I know who use it) use GPT4 as a source of absolute truth, but more like a "iterate together until solution", taking everything it says with a grain of truth.
I wouldn't decide any life or death decisions on just a chat with GPT4, but I could use it to help me lookup specific questions and find out more information that then gets verified elsewhere.
When it comes to making games (with Rust), it's pretty easy to verify when it's bullshitting as well. If I ask it to write a function, I copy-paste the function and either it compiles or it doesn't. If it compiles, I test it out in the game, and if it works correctly, I write tests to further solidify my own understand and verification it works correctly. Once that's done, even if I have no actual idea of what's happening inside the function, I know how to use it and what to expect from it.
I have been making games since / in Flash, HTML5, Unity, and classic consoles using ASM such as NES / SNES / Gameboy: Tons of resources are WRONG, tutorials are incomplete, engines are buggy, answers you find on stackoverflow are outdated, even official documentation can be littered with gaping holes and unmentioned gotcha's.
I have found GPT incredibly valuable when it comes to spitting out exact syntax and tons of lines that i otherwise would have spent hours and hours to write combing through dodgy forum posts, arrogant SO douchebags, and the questionable word salad that is the "official documentation"; and it just does it instantly. What a godsend!
> you won't know when it's bullshiting you and you're missing out on learning how to actually learn.
Have you tried ...compiling it? You can challenge, question, and iterate with GPT at a speed that you cannot with other resources: i doubt you are better off combing pages and pages of Ctrl+F'ing PDFs / giant repositories or getting Just The Right Google Query to get exactly what you need on page 4. GPT isn't perfect but god damn it is a hell of alot better and faster than anything that has ever existed before.
> whatever you're learning is probably irrelevant since it can be solved better by LLM.
Not true. It still makes mistakes (as of Apr '23) and still needs a decent bit of hand holding. Can / should you take what it says as fact? No. But my experience says i can say that about any resource honestly.
IMO if you're learning from GPT you have to double check it's answers, and then you have to go through the same song and dance. For problems that are well documented you might as well start with those. If you're struggling with something how do you know it's not bullshitting you ? Especially for learning, I can see "copy paste and test if it works" flying if you need a quick fix but for learning I've seen it give right answers with wrong reasoning and wrong answers with right reasoning.
I'm not disagreeing with you on code part, my no.1 use case right now is bash scripting/short scripts/tedious model translations - where it's easy to provide all the context and easy to verify the solution.
I'd disagree on the fastest tool part, part of the reason I'm not using it more is because it's so slow (and responses are full of pointless fluff that eats tokens even when you ask it to be concise or give code only). Iterating on nontrivial solutions is usually slower than writing them out on my own (depending on the problem).
Yes but my song and dance is now in 8x fast forward.
> my no.1 use case right now is bash scripting/short scripts/tedious model translations
It is wonderful for scripting! Especially regex. 100% agree.
> I'd disagree on the fastest tool part ... responses are full of pointless fluff
As i use the tool more, my prompts are getting sharper, the machine is understanding me better, and i am finding much less pointless fluff IMO.
I see it like a musical instrument that i am starting to get an intuitive feel for...
A few sessions with ChatGPT sorted out various platform specific things and within tens of minutes I was popping stacks and conditionally jumping to my heart’s delight.
GP is way off base IMO.
Nontrivial problem solutions are wishful thinking hallucinations, eg. I ask it for some way to use AWS service X and it comes up with a perfect solution - that I spend 10 minutes desperately trying to uncover - and find out that it doesn't exist and I've wasted 15 minutes of my life. "Nudging it" with followups how it's described solutions violate some common patterns on the platform, it doubles down on it's bullshit by inventing other features that would support the functionality. It's the worst when what you're trying to do can't really be done with constraints specified.
It gives out bullshit reasoning and code, eg. I wanted it to shorten some function I spitballed and it made the code both subtly wrong (by switching to unordered collection) and slower (switching from list to hash map with no benefit). And then even claims it's solution is faster because it avoids allocations ! (where my solution was adding new KeyValuePair to the list, which is a value type and doesn't actually allocate anything). I can easily see a newbie absorbing this BS - you need background knowledge to break it down. Or another example I wanted to check the rationale behind some lint warning, not only was it off base but it even said some blatantly wrong facts in the process (like default equality comparison in C# being ordinal ignore case ???).
In my experience working with junior/mid members the amount of half assed/seemingly working solutions that I had to PR in last couple of months has increased and a lot (along with "shrug ChatGPT wrote it").
Maybe in some areas like ASM for a specific machine there's not a lot of newbie friendly material and ChatGPT can grok it correctly (or it's easy to tweak the outputs because you know what it should look like) - but that's not the case for gamedev. Like there are multiple books titled "math for game developers" (OP use case).
If anyone can get ChatGPT to write the ASM to reverse a string, please show me an example! I’m still having to get out a pad and paper or sit in lldb to figure out how to do much of anything in ASM, same as it has always been!
But it doesn't really solve a business problem for me. Just saves some time and gives me a starting point. Though on-the-fly spellchecking and, to a lesser degree grammar checking, help me a lot too--especially if I'm not going to ultimately be copyedited.
For solving the really common problem of working in a new area LLMs being unreliable isn't actually a big deal. If I just need to know what some math is called or understand how to use an equation, it's often very easy to verify an answer, but can be hard to find it through google. I might not know the right terms to search or my options might be hard to locate documentation or SEO spam
There's sort of a narrow area where if you ask it for something fairly common but moderately complicated like a translation matrix that it usually can come up with it, and can write it in the language that you specify. But guarding against hallucinations is almost as much trouble as looking it up on wikipedia or something and writing it yourself.
The language model really needs to be combined with the hard rules of arithmetic/algebra/calculus/dimensional-analysis/etc in a way that it can't violate them and just mash up some equations that its been trained on even though the result is absolute nonsense.
I also am happy that language-as-gate-keeping, which is plaguing so many fields both in academia and business, is going to quickly be “democratized”, in the best sense of the word. LLMs can help you decipher text written in eg law speak, and it also can translate your own words into a form that will get grand poobah to take you seriously. Kind of like a spell/grammar checker on steroids.
Many people are still sleeping on how useful LLMs are. There's a lot of related things to be skeptical about (big promises, general AI, does it replace jobs, all the new startups that are basically dressed up API calls...) but if you do any kind of knowledge work, there's a good chance that you could it much better if you also used an LLM.
Even personal projects, where I'm learning new languages and libraries, I've found that the code that gets generated in most cases is incorrect at best, and won't compile at worst. So I have to go through and double-check all of its "work" anyway- just like I'd have to do if I had a junior engineer sidekick who didn't know how to run the compiler.
I think for the work problems, if our company could train and self-host an LLM system on all of our internal code, it would be interesting to see if that could be used to assist building out new features and fixes.
Not cheap, though. I think most companies will end up hosting an LLM on local code rather than using OpenAI on Azure, but for now, there is no equivalently-capable replacement.
It wasn't really anything I couldn't have written in a half hour or so but it was so much faster. The real kicker is that by default chatgpt wrote Rspec and I was able to say "rewrite that in minitest" and it worked.
I see the future as writing test cases (perhaps also with ChatGPT), and separately using ChatGPT to write the implementation. Perhaps we will just give it a bunch of test cases and it will return code (or submit a PR) that passes those tests.
I've found Copilot useful when writing greenfield code, but very unhelpful generating code that uses APIs not popular enough to have significant coverage on StackOverflow. Even if I have examples of correct usage in the same file it still guesses plausible but wrong types.
I haven't bought GPT 4 but I'm curious if it's much better at this.
If you ask for something impossible in a library it will also frequently make up functions or application settings. If you ask for something obscure but hard to do, it might reply that it's impossible but it is possible if you know how and teach it.
I sort of compare prompt engineering to Googling - you sometimes have to search for exactly the right terms that you want to appear in the result in order to get the answer you're looking for. It's just that the flexibility of ChatGPT in writing a direct response sometimes means it will completely make up an answer.
There's also a limitation that the web interface doesn't actually let you upload files and has a length limit for inputs. For Copilot, I'm looking forward to Copilot X: https://www.youtube.com/watch?v=3surPGP7_4o
Prompt:
fn encode(value: Foo) {
capnproto::serialize_packed:: serialize_message(value);
}
fn decode(input: &[u8]) {
Expected: capnproto::serialize_packed:: deserialize_message(input);
Generated capnproto::PackedMessageDeserializer::deserialize(input)> In summary, you should use read_message when working with packed messages and deserialize_message when working with unpacked messages. Make sure you choose the appropriate serialization and deserialization functions based on the format in which your messages are stored or transmitted.
Google was surprisingly little help on the topic. At best it pointed me to https://capnproto.org/encoding.html#packing which covers the general idea but glosses over parts.
The problem with ChatGPT is you can never be certain or confident that its answers are correct. It’s as useful as rolling dice in guessing a number sometimes. With the training from the internet, the dice are loaded, but the answer is still likely to be wrong because it just assembles words together.
It’s certainly not quicker answers, right?
> I need help writing a SQL statement. I'm using Postgresql and the database has a table called `<name>` with dozens of columns such as: `..._id`, `..._id`, `..._id`, `..._id`, etc. The columns are of type uuid. Separately I also have a list of thousands of uuids and I want to check if any values in my list are used in any of the fields on the `<name>` table. Is there a compact SQL statement that allows me to do this? I would like to avoid listing out all the columns by name.
GPT-4 responed:
> Yes, you can achieve this by querying the information_schema.columns to get the list of columns dynamically and then use a combination of string_agg, EXECUTE, and FORMAT functions to build and execute the SQL query. Here's an example:
I ran it as written and it worked great!
Could I have done this on my own? Sure, but it would have taken a few google searches, reading, trial and error to build up the query, probably 30 or 40 minutes more than just asking GPT-4 to write the query.
Actually that model seems particularly good at writing SQL queries FYI, I could totally see a chat layer on top of a relational database writing all the SQL with no humans in the loop, just natural language --> LLM --> SQL.
It's not about uniqueness, the name of the game is efficiency/scaling already solvable problems by multiple or skilled humans and reducing one of those dimensions.
E.g., in a CAD system with which I'm already familiar with the system & searching it's docs, I still find it helpful to ask obscure or complicated situations such as 'I remember reading it can do something like X, what is that and what is the command?' or 'what is a way to find and repair this kind of failure?' — the sorts of things for which I'd call tech support (if it didn't involve long hold times, etc.).
ChatGPT4 has saved me already a number of long multi-dead-end hunts for finding the correct obscure command or operation name, or for building a sequence to debug and repair a model issue. Sometimes the ChatGPT4 answer is just another BS hallucinated waste of time, but it often enough does point me in the right direction far more quickly than I would have on my own.
First of all, the dataset used for evaluation was created by those researchers, weighing it in their favor.
Second, GPT-4 still performs better in 6 of those. Hardly 1 or 2. And when it doesn't, it's usually very close.
All of this is to say that GPT-4 will smoke any bespoke NLP model/API which is the main point.
Sure, GPT4 is great for experimenting with and I often try it out, but at the end of the day, for deploying a widely used model, the cost benefit analysis will favor bespoke models a lot of the time.